|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Работа с комплексными числами. |
|
C/C++ - Работа с комплексными числами.
|
Пользователь Сообщения: 147 |
Профиль | Отправить PM | Цитировать
не получается заполнить массив комплексными числами значений амплитуды в i-тые моменты времени. подскажите или натолкните на МЫСЛЮ !
//--------------------------------------------------------- #include <iostream> #include <math.h> #include <complex> //--------------------------------------------------------- int main() { setlocale(LC_ALL,"rus"); std::cout<<"Введите значения углов в радианах: "<<std::endl; double tetaOne, tetaTwo, frequencyOne, frequencyTwo; double pi; pi=3,1415926535897932384; std::complex <double> j(0,1); std::cin>>tetaOne>>tetaTwo; frequencyOne=sin(tetaOne); frequencyTwo=sin(tetaTwo); std::complex <double> U1[10],U2[10]; for(int i=0; i<=9; i++) { U1[i]=exp(j*pi*i*frequencyOne); U2[i]=exp(j*pi*i*frequencyTwo); } system("pause"); return 0; } |
|
Отправлено: 23:07, 06-06-2010 |
Старожил Сообщения: 232
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Последний раз редактировалось ganselo, 07-06-2010 в 15:51. Отправлено: 11:53, 07-06-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 147
|
Профиль | Отправить PM | Цитировать Попробуем
|
Отправлено: 21:24, 08-06-2010 | #3 |
Пользователь Сообщения: 147
|
Профиль | Отправить PM | Цитировать не работает:
for(int i=0; i<=9; i++) { U1[i].imag(exp(j*pi*frequencyOne)); U2[i].real(exp(j*pi*frequencyOne)); } Компиляция... adapt.cpp .\adapt.cpp(23) : error C2664: double std::_Complex_base<_Ty,_Valbase>::imag(const _Ty &): невозможно преобразовать параметр 1 из 'std::complex' в 'const double &' with [ _Ty=double, _Valbase=std::_Dcomplex_value ] Причина: невозможно преобразовать 'std::complex' в 'const double' Для выполнения данного преобразования нет доступного оператора преобразования, определенного пользователем, или вызов оператора невозможен .\adapt.cpp(24) : error C2664: double std::_Complex_base<_Ty,_Valbase>::real(const _Ty &): невозможно преобразовать параметр 1 из 'std::complex' в 'const double &' with [ _Ty=double, _Valbase=std::_Dcomplex_value ] Причина: невозможно преобразовать 'std::complex' в 'const double' Для выполнения данного преобразования нет доступного оператора преобразования, определенного пользователем, или вызов оператора невозможен |
Отправлено: 23:02, 09-06-2010 | #4 |
Старожил Сообщения: 232
|
Профиль | Сайт | Отправить PM | Цитировать |
|
------- Отправлено: 00:34, 10-06-2010 | #5 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать у комплекса нет конструктора, который строит его из double.
вот так у меня собралось: //--------------------------------------------------------- #include <iostream> #include <math.h> #include <complex> using std::complex; using std::cout; using std::cin; //--------------------------------------------------------- int main() { // setlocale(LC_ALL,"rus"); cout<<"Введите значения углов в радианах: "<<std::endl; double tetaOne, tetaTwo, frequencyOne, frequencyTwo; double pi; pi=31415926535897932384; complex <double> j(0,1); cin>>tetaOne>>tetaTwo; frequencyOne=sin(tetaOne); frequencyTwo=sin(tetaTwo); complex <double> U1[10],U2[10]; for(int i=0; i<=9; i++) { U1[i]=exp(j*complex<double>(pi*i*frequencyOne, 0.)); U2[i]=exp(j*complex<double>(pi*i*frequencyTwo, 0.)); // хотя тут, я понимаю, правильней было бы: // U1[i]=exp(complex<double>(0, pi*i*frequencyOne)); // U2[i]=exp(complex<double>(0, pi*i*frequencyTwo)); } // system("pause"); return 0; } |
Отправлено: 10:17, 12-06-2010 | #6 |
Пользователь Сообщения: 147
|
Профиль | Отправить PM | Цитировать ganselo скомилировалось, но надо еще будет проверить правильность работы.
напислал для проверки код: //--------------------------------------------------------- #include <iostream> #include <math.h> #include <complex> //--------------------------------------------------------- int main() { setlocale(LC_ALL,"rus"); std::cout<<"Введите значения углов в радианах: "<<std::endl; double tetaOne, tetaTwo, frequencyOne, frequencyTwo; double pi; pi=3,1415926535897932384; std::complex <double> j(0,1); std::cin>>tetaOne>>tetaTwo; frequencyOne=sin(tetaOne); frequencyTwo=sin(tetaTwo); std::complex <double> U1[10],U2[10]; double U3[10]; for(int i=0; i<=9; i++) { U1[i].imag(exp(j.imag()*pi*frequencyOne)); U2[i].real(exp(j.real()*pi*frequencyOne)); } for(int i=0; i<=9;i++) { U3[i]=sqrt(U1[i].imag()*U1[i].imag()+U2[i].real()*U2[i].real()); std::cout<<U3[i]<<"\n"; } system("pause"); return 0; } выдает массив, где все значения одинаковы. В чем причина? ааааа все сам понял, просто затупил) |
Последний раз редактировалось котвася, 17-06-2010 в 01:26. Отправлено: 01:13, 17-06-2010 | #7 |
Пользователь Сообщения: 147
|
Профиль | Отправить PM | Цитировать кто знает есть ли хэд для работы с матрицами?
|
Отправлено: 21:23, 19-06-2010 | #8 |
Пользователь Сообщения: 147
|
Профиль | Отправить PM | Цитировать в похожих темах нет нечего полнзного.
|
Отправлено: 23:34, 19-06-2010 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Получение массива из строки с числами | malev | AutoIt | 3 | 11-09-2009 00:08 | |
C/C++ - операции с 12-разрядными числами | .::.DIMA.::. | Программирование и базы данных | 14 | 17-03-2009 17:50 | |
Работа с файлами | ramo | Программирование в *nix | 5 | 23-04-2007 12:33 | |
Работа БП | Surround | Хочу все знать | 5 | 05-03-2006 21:40 | |
Работа ХР с CD | LamerOK | Microsoft Windows 2000/XP | 8 | 17-04-2004 23:51 |
|