2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 помогите закодировать перемножение компл. чисел
Сообщение16.11.2011, 09:20 
Аватара пользователя
здравствуйте, есть вопрос.

Нужно перемножить вда комплексных числа. первое представлено в виде реальной и мнимой части. второе - экспонента такого типа $ e^{j * x}$

результат нужен в виде комплексной и мнимой части.
как реализовать сие чудо на СИ?

 
 
 
 Re: помогите закодировать перемножение компл. чисел
Сообщение16.11.2011, 11:04 
Unmanner в сообщении #504416 писал(а):
как реализовать сие чудо на СИ?
Т.е. вручную на бумаге такие числа Вы перемножить смогли бы, проблемы с кодированием алгоритма на языке программирования?.. Какие именно — cинтаксис языка, скорость или точность вычислений, обеспечение переносимости?

 
 
 
 Re: помогите закодировать перемножение компл. чисел
Сообщение16.11.2011, 11:30 
Аватара пользователя
если бы оба числа были заданы как отдельно реальная и мнимая часть, то наверное просто взял бы и перемножил:
Используется синтаксис C
typedef struct {
double real;
double img;
} COMPLEX_NUM_T

COMPLEX_NUM_T *RES, *A, *B;

RES = (COMPLEX_NUM_T *)malloc( sizeof(COMPLEX_NUM_T) )
/* Тоже самое для А и В */

/* считая что А и Б проинициализированы вычисляем результат перемножения */
RES.real = A.real * B.real;
RES.img = A.img * B.img;


Число А я знаю, знаю его реальную и мимую часть. а число В задано в виде экспоненты. Как число В представить в виде реальной и комплексной части чтобы потом перемножить с первым?

 
 
 
 Re: помогите закодировать перемножение компл. чисел
Сообщение16.11.2011, 12:02 
Аватара пользователя
Предлагаю подождать с кодировнием и сначала просто взять и перемножить два комплексных числа: $z_1=a_1+i b_1$ и $z_2=a_2+i b_2$.
И ещё есть действительная и мнимая часть. Комплексной части не бывает.

 
 
 
 Re: помогите закодировать перемножение компл. чисел
Сообщение16.11.2011, 12:03 
Unmanner в сообщении #504440 писал(а):
Как число В представить в виде реальной и комплексной части
Очевидно, с помощью формулы Эйлера: $e^{i\varphi} = \cos \varphi + i \sin \varphi$

 
 
 
 Re: помогите закодировать перемножение компл. чисел
Сообщение16.11.2011, 13:23 
Аватара пользователя
profrotter в сообщении #504443 писал(а):
просто взять и перемножить два комплексных числа: $z_1=a_1+i b_1$ и $z_2=a_2+i b_2$.


Такая операция существует в СИ?


Maslov в сообщении #504444 писал(а):
Очевидно, с помощью формулы Эйлера: $e^{i\varphi} = \cos \varphi + i \sin \varphi$


Да, есть такая вещь, думаете прокатит?

 
 
 
 Re: помогите закодировать перемножение компл. чисел
Сообщение16.11.2011, 13:36 
Unmanner в сообщении #504457 писал(а):
Да, есть такая вещь, думаете прокатит?
А почему она может не "прокатить"?

Только вот тут
Код:
/* считая что А и Б проинициализированы вычисляем результат перемножения */
RES.real = A.real * B.real;
RES.img = A.img * B.img;
у Вас, как бы это помягче выразиться, чушь написана (собственно, на это Вам profrotter уже намекал выше).

Хоть в Википедии, что ли, посмотрите, как комплексные числа перемножаются.

 
 
 
 Re: помогите закодировать перемножение компл. чисел
Сообщение16.11.2011, 13:47 
Аватара пользователя
Maslov в сообщении #504459 писал(а):
]у Вас, как бы это помягче выразиться, чушь написана (собственно, на это Вам profrotter уже намекал выше).

Хоть в Википедии, что ли, посмотрите, как комплексные числа перемножаются.


А, ну да, это чисто моё предположение было. Спасибо!

 
 
 
 Re: помогите закодировать перемножение компл. чисел
Сообщение16.11.2011, 13:58 

(Оффтоп)

Unmanner в сообщении #504440 писал(а):
вычисляем результат перемножения
А в словосочетании "вычисляем произведение" на десять букв меньше!

 
 
 
 Re: помогите закодировать перемножение компл. чисел
Сообщение16.11.2011, 14:14 
2Unmanner
Цитата:
Такая операция существует в СИ?

В C99 да, в C89 нет.

 
 
 
 Re: помогите закодировать перемножение компл. чисел
Сообщение16.11.2011, 19:29 
Аватара пользователя
Circiter в сообщении #504471 писал(а):
2Unmanner
Цитата:
Такая операция существует в СИ?

В C99 да, в C89 нет.


Можно прототипчик.

 
 
 
 Re: помогите закодировать перемножение компл. чисел
Сообщение17.11.2011, 03:56 
В смысле, примерчик? Как-то так: double complex Result = (x+I*y) * cexp(I*z), что соответствует $(x+\mathrm{i}y)\cdot e^{\mathrm{i}z}$. Разумеется надо добавить #include <complex.h>.

Но ничто не мешает вам дойти до цели ранее намеченным путем. Я вот предпочитаю именно старый ansi C без комплексных чисел.

 
 
 
 Re: помогите закодировать перемножение компл. чисел
Сообщение26.11.2011, 22:38 
Unmanner в сообщении #504464 писал(а):
А, ну да, это чисто моё предположение было.
Как можно работать с комплексными числами, не зная их простейших свойств? :shock:

 
 
 
 Re: помогите закодировать перемножение компл. чисел
Сообщение27.11.2011, 09:12 
Вроде для умножения комплексных чисел есть способ, сокращающий на одну числу операций от умножения в лоб.

 
 
 [ Сообщений: 14 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group