2014 dxdy logo

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

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




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


07/07/10
100
Нижний Новгород
здравствуйте, есть вопрос.

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

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

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


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

 Профиль  
                  
 
 Re: помогите закодировать перемножение компл. чисел
Сообщение16.11.2011, 11:30 
Аватара пользователя


07/07/10
100
Нижний Новгород
если бы оба числа были заданы как отдельно реальная и мнимая часть, то наверное просто взял бы и перемножил:
Используется синтаксис 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 
Модератор
Аватара пользователя


16/02/11
3788
Бурашево
Предлагаю подождать с кодировнием и сначала просто взять и перемножить два комплексных числа: $z_1=a_1+i b_1$ и $z_2=a_2+i b_2$.
И ещё есть действительная и мнимая часть. Комплексной части не бывает.

 Профиль  
                  
 
 Re: помогите закодировать перемножение компл. чисел
Сообщение16.11.2011, 12:03 
Заслуженный участник


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

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


07/07/10
100
Нижний Новгород
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 
Заслуженный участник


09/08/09
3438
С.Петербург
Unmanner в сообщении #504457 писал(а):
Да, есть такая вещь, думаете прокатит?
А почему она может не "прокатить"?

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

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

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


07/07/10
100
Нижний Новгород
Maslov в сообщении #504459 писал(а):
]у Вас, как бы это помягче выразиться, чушь написана (собственно, на это Вам profrotter уже намекал выше).

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


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

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


16/06/10
199

(Оффтоп)

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

 Профиль  
                  
 
 Re: помогите закодировать перемножение компл. чисел
Сообщение16.11.2011, 14:14 
Заслуженный участник


26/07/09
1559
Алматы
2Unmanner
Цитата:
Такая операция существует в СИ?

В C99 да, в C89 нет.

 Профиль  
                  
 
 Re: помогите закодировать перемножение компл. чисел
Сообщение16.11.2011, 19:29 
Аватара пользователя


07/07/10
100
Нижний Новгород
Circiter в сообщении #504471 писал(а):
2Unmanner
Цитата:
Такая операция существует в СИ?

В C99 да, в C89 нет.


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

 Профиль  
                  
 
 Re: помогите закодировать перемножение компл. чисел
Сообщение17.11.2011, 03:56 
Заслуженный участник


26/07/09
1559
Алматы
В смысле, примерчик? Как-то так: 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 
Заслуженный участник


27/04/09
28128
Unmanner в сообщении #504464 писал(а):
А, ну да, это чисто моё предположение было.
Как можно работать с комплексными числами, не зная их простейших свойств? :shock:

 Профиль  
                  
 
 Re: помогите закодировать перемножение компл. чисел
Сообщение27.11.2011, 09:12 


25/08/11

1074
Вроде для умножения комплексных чисел есть способ, сокращающий на одну числу операций от умножения в лоб.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group