Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Операции с комплексными величинами

Поиск:

Сложение и вычитание в алгебраической форме

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Complex values operations (addition and substraction in a+bi form)
//  (c) Johna Smith, 1996
//
//  Given: z1,z2 - complex values
//  z1=a1+i*b1, z2=a2+i*b2
//  z1+z2=(a1+a2)+i*(b1+b2)
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>

struct complex
{
  float re;
  float im;
};

void show_complex(complex c) // this functions displays complex value
{
  printf("%f%+fi",c.re,c.im);
}

complex Add(complex a, complex b)
{
  complex c;

  c.re=a.re+b.re;
  c.im=a.im+b.im;

  return c;
}

complex Substract(complex a, complex b)
{
  complex c;

  c.re=a.re-b.re;
  c.im=a.im-b.im;

  return c;
}

complex a={2,3},b={4,6};

void main(void)
{
  // addition
  show_complex(a);
  printf(" + ");
  show_complex(b);
  printf(" = ");
  show_complex(Add(a,b));

  // substraction
  printf("n");
  show_complex(b);
  printf(" - ");
  show_complex(a);
  printf(" = ");
  show_complex(Substract(b,a));
}



Деление в алгебраической форме

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Complex values operations (division in a+bi form)
//  (c) Johna Smith, 1996
//
//  Given: z1,z2 - complex values
//  z1=a1+i*b1, z2=a2+i*b2
//  z1/z2=(a1*a2-b1*b2)/(a2^2+b2^2)+i*(b1*a2-a1*b2)/(a2^2+b2^2)
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>

struct complex
{
  float re;
  float im;
};

void show_complex(complex c) // this functions displays complex value
{
  printf("%f%+fi",c.re,c.im);
}

complex Div(complex a, complex b)
{
  complex c;

  c.re=(a.re*b.re+a.im*b.im)/(b.re*b.re+b.im*b.im);
  c.im=(a.im*b.re-a.re*b.im)/(b.re*b.re+b.im*b.im);

  return c;
}

complex a={2,3},b={-1,2};

void main(void)
{
  show_complex(a);
  printf(" / ");
  show_complex(b);
  printf(" = ");
  show_complex(Div(a,b));
}



Умножение в алгебраической форме

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Complex values operations (multiplication in a+bi form)
//  (c) Johna Smith, 1996
//
//  Given: z1,z2 - complex values
//  z1=a1+i*b1, z2=a2+i*b2
//  z1*z2=(a1*a2-b1*b2)+i*(a1*b2+a2*b1)
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>

struct complex
{
  float re;
  float im;
};

void show_complex(complex c) // this functions displays complex value
{
  printf("%f%+fi",c.re,c.im);
}

complex Mul(complex a, complex b)
{
  complex c;

  c.re=a.re*b.re-a.im*b.im;
  c.im=a.im*b.re+a.re*b.im;

  return c;
}

complex a={2,3},b={-1,2};

void main(void)
{
  show_complex(a);
  printf(" * ");
  show_complex(b);
  printf(" = ");
  show_complex(Mul(a,b));
}



Деление в экспоненциальной форме

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Complex values operations (division in M*exp(i*phi) form)
//  (c) Johna Smith, 1996
//
//  Given: z1,z2 - complex values
//  z1=M1*exp(i*phi1), z2=M2*exp(i*phi2)
//  z1/z2=M1/M2*exp(i*(phi1-phi2))
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <math.h>

#define Pi      3.1415926536

struct exp_complex
{
  float M;
  float phi;
};

void show_exp_complex(exp_complex c) // this functions displays complex value
{
  printf("%f*exp(%f*i)",c.M,c.phi);
}

exp_complex Div(exp_complex a,exp_complex b)
{
  exp_complex c;

  c.M=a.M/b.M;
  c.phi=a.phi-b.phi;

  return c;
}

exp_complex a={1,0}, b={-1,-Pi/2};

void main(void)
{
  show_exp_complex(a);
  printf(" / ");
  show_exp_complex(b);
  printf(" = ");
  show_exp_complex(Div(a,b));
}



Умножение в экспоненциальной форме

Код

//////////////////////////////////////////////////////////////////////////////
//
//  Complex values operations (multiplication in M*exp(i*phi) form)
//  (c) Johna Smith, 1996
//
//  Given: z1,z2 - complex values
//  z1=M1*exp(i*phi1), z2=M2*exp(i*phi2)
//  z1*z2=M1*M2*exp(i*(phi1+phi2))
//
//////////////////////////////////////////////////////////////////////////////

#include <stdio.h>
#include <math.h>

#define Pi      3.1415926536

struct exp_complex
{
  float M;
  float phi;
};

void show_exp_complex(exp_complex c) // this functions displays complex value
{
  printf("%f*exp(%f*i)",c.M,c.phi);
}

exp_complex Mul(exp_complex a,exp_complex b)
{
  exp_complex c;

  c.M=a.M*b.M;
  c.phi=a.phi+b.phi;

  return c;
}

exp_complex a={-1,Pi/2}, b={-1,-Pi/2};

void main(void)
{
  show_exp_complex(a);
  printf(" * ");
  show_exp_complex(b);
  printf(" = ");
  show_exp_complex(Mul(a,b));
}
Сайт: forum.vingrad.ru






Просмотров: 1734

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную