Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2014, 16:12   #1
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию Кто работал с комплексными числами?

В общем, проблема такая. Есть Бейсик программа вычисляющая полином с комплексным аргументом. Впервые столкнулся с вычислением комплексных чисел. Написал прогу, но она выдаёт неверный результат.
Что у меня не так?

Код:
#include<iostream.h>
#include<stdlib>
#include<complex>
#include<math.h>
#include<string>

using namespace std;

// Вычисление полинома с комплексным аргументом ТРЕБУЕТ ОТЛАДКИ
// n - степень полинома
complex<double> ComplexPolinom(double *arr, complex<double> x, int n)
{
complex<double> v;
for(int i=1; i<n; i++)
{
  v += complex<double>(arr[i])*pow(x,complex<double>(arr[i]));
}
return v;
}

int main()
{
  double A[9] = {0,1,2,3,4,5,6,7,8};
 cout << "Полином с комплексным аргументом = " << ComplexPolinom(A,(2,2),8) << "\n";

  system("pause");
  return 0;
}
Изображения
Тип файла: jpg Polinom.jpg (59.4 Кб, 146 просмотров)
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 22.08.2014 в 16:45.
Smitt&Wesson вне форума Ответить с цитированием
Старый 23.08.2014, 07:40   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Чё, перевелись спецы на форуме? Никто не работал с комплексными числами? Только про политику лясы точить умеем?

Тема опять исчезла из выдачи - "Новые сообщения". Обновляю.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Stilet; 23.08.2014 в 14:07.
Smitt&Wesson вне форума Ответить с цитированием
Старый 23.08.2014, 11:38   #3
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Код:
scanf("%d\n", &n);
for(i=0;i<n;i++)
scanf("%f\n", &a[i]);

scanf("%d\n", &x);
scand("%d\n", &y);
r = a[n-1];
j = 0;
for(i=0;i<n;i++){
e = x*r - y*j + a[n-i+1];
f = y*r + x*j;
r = e;
j = f;
}
Это работает?
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 23.08.2014, 12:40   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Это работает. Тут вопрос в том, что-бы использовать библиотеку complex.h.
В вейсике, комплексное число, представлено двумя переменными, а мне нужно, использовать тип complex X.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 23.08.2014, 14:41   #5
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Код:
#include <iostream>
#include <complex>

using namespace std;

typedef complex<double> complexd;


complexd ComplexPolinom( double* arr, complexd x, int n ) {
   
   complexd v = (complexd)arr[0] ;
   
   for( int i=1; i<=n; i++) {
      v += complexd(arr[i]) * pow(x,i) ;
   }

   return v;

}



int main() {

   // Степень полинома, массив к-тов и x в будущем, наверное, хорошо бы вводить...
   int      n = 8 ;
   double   A[9] = { 0, 1, 2, 3, 4, 5, 6, 7, 8 } ;
   complexd x(2.,2.) ;

   cout << "Полином с комплексным аргументом = " << ComplexPolinom(A, x, n) << endl ;

   return 0;

}
Vago вне форума Ответить с цитированием
Старый 23.08.2014, 15:09   #6
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

vago, не подходит. Вы просто "облагородили" мой код. Результат должен быть 144, -113. Это (и моя) программа выдаёт 38994, -10814.
Прошу прощения. Проверил код на бейсике. Всё правильно работает. Просто коэффициенты нужно ставить 1,1
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 23.08.2014 в 15:33.
Smitt&Wesson вне форума Ответить с цитированием
Старый 23.08.2014, 15:38   #7
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Я не "облагородил". Я исправил три ошибки:

1. "Неучёт" свободного члена.
2. "Неучёт" n-й степени x.
3. Степень, в которую возводится x в ф-ии pow().
(задайте иную последовательность к-тов, не 0,1,2,3... и результаты у нас с Вами тут же станут разными).

...

Массив A[] и значение x задайте, как в тестовом примере!

ADDED 13:46 CET:
[QUOTE=Smitt&Wesson]
Просто коэффициенты нужно ставить 1,1
[/QUTE]
Ага

Последний раз редактировалось Vago; 23.08.2014 в 15:46.
Vago вне форума Ответить с цитированием
Старый 23.08.2014, 15:56   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Спасибо. Я уже разобрался.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнение массива комплексными числами Mishaka Помощь студентам 3 14.12.2012 00:27
Работа с комплексными числами и файлами (Visual С++) bigildar Помощь студентам 0 14.12.2012 00:10
задача с комплексными числами.... *DImKa* Помощь студентам 6 05.01.2012 03:07
Работа с комплексными числами Аким Ба Паскаль, Turbo Pascal, PascalABC.NET 0 18.10.2011 23:45
Проблема с комплексными числами -=aHTPoПоС=- Помощь студентам 3 08.12.2009 21:02