Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Класс комплексных чисел

Файл проекта | Форма ввода данных | Модуль ввода данных | Форма основной программы | Модуль основной программы | Форма сведений о программе | Модуль сведений о программе | Базовый класс параметризованных векторов | Параметризованный класс матриц | Параметризованный класс полиномов |


Читайте также:
  1. DSM — система классификации Американской психиатрической ассоциации
  2. I. Вступительное слово классного руководителя.
  3. I. Классификация факторов, формирующих ПП
  4. I. Конфликты в межличностных отношениях. Классификация конфликтов
  5. I. Понятие и классификация ощущений, их значение в теории ПП. Роль восприятия в маркетинге
  6. I.2.2) Классификация юридических норм.
  7. II. КЛАССИФИКАЦИЯ ИНСТИТУТОВ

//T_COMPLEX.PAS

 

 

unit T_Complex;

 

interface

uses math,dialogs;

type

 

TComplex = record

re,im:extended;

end;

Function CExp(c:TComplex):TComplex;far; {Число е комплексной степени.}

Function CCPow(a1,a2:TComplex):TComplex;far;{а1^а2}

function Complex(r,i:real):TComplex;far; {Создание компл. Числа}

function Arg(c:TComplex):real;far; {Аргумент числа}

function CNorm(c:TComplex):real;far; {Модуль числа}

function CSumma(c1,c2:TComplex): TComplex;far;//Сумма

function CRazn(c1,c2:TComplex): TComplex;far;//Разность

function CMult(c1,c2:TComplex): TComplex;far;//Произведение

function CPow(c1:TComplex;s:real): TComplex;far;//Возведение в степень

function CEquiv(c1,c2:TComplex): boolean;far;//Сравнение

function CDiv(c1,c2:TComplex):TComplex;far; //Деление чисел

function CMultOnDig(c:TComplex;d:real): TComplex;far;//Умножение на действит. число

procedure MessageBox(s:string);far; //Сообщение

 

implementation

 

function CMultOnDig(c:TComplex;d:real):TComplex;

begin

result.re:=c.re*d;

result.im:=c.im*d;

end;

 

{Экспонента комплексного аргумента}

function CExp(c:TComplex):Tcomplex;

var res:TComplex;

begin

res.re:=Exp(c.re)*cos(c.im);

res.im:=Exp(c.re)*sin(c.im);

result:=res;

end;

 

{а1 возводится в степень а2}

function CCpow(a1,a2:TComplex):TComplex;

var f,t1,r1,u2,v2,r:real;

cx:TComplex;

begin

r1:=cnorm(a1);

u2:=a2.re;

v2:=a2.im;

t1:=arg(a1);

r:=power(r1,u2)*exp(-v2*t1);

f:=v2+ln(r1)+u2*t1;

cx.re:=r*cos(f);

cx.im:=r*sin(f);

result:=cx;

end;

 

{Ф-ция имитирующая действие конструктора - создаёт комплексное число с реальной частью r и вещественной i}

function Complex(r,i:real):TComplex;

var f:TComplex;

begin

f.re:=r;

f.im:=i;

result:=f;

end;

 

procedure MessageBox(s:string);

begin

MessageDlg(s,mtInformation,[mbOk],1);{Метод из модуля Dialogs}

end;

 

function Arg(c:TComplex):real; { Аргумент комплексного числа}

begin

result:=ArcTan2(c.im,c.re);{Лучше чем просто ArcTan из модуля System }

end;

 

function CNorm(c:TComplex):real; {Модуль комплексного числа}

begin

result:=sqrt(c.re*c.re+c.im*c.im);

end;

 

function CSumma(c1,c2:TComplex):TComplex;

// Находим сумму комплексных чисел

begin

result.re:=c1.re+c2.re;

result.im:=c1.im+c2.im;

end;

 

function CRazn(c1,c2:TComplex):TComplex;

// Находим разность комплексных чисел

begin

result.re:=c1.re-c2.re;

result.im:=c1.im-c2.im;

end;

 

function CMult(c1,c2:TComplex):TComplex;

// Находим произведение комплексных чисел

begin

result.re:=c1.re*c2.re-c1.im*c2.im;

result.im:=c1.re*c2.im+c2.re*c1.im;

end;

 

{Формула Муавра}

function CPow(c1:TComplex;s:real):TComplex;

// Возведение комплексного числа с1 в степень s

begin

result.re:=power(Cnorm(c1),s)*cos(arg(c1)*s);

result.im:=power(Cnorm(c1),s)*sin(arg(c1)*s);

end;

 

function CEquiv(c1,c2:TComplex):boolean;

// Сравнение комплексных чисел

begin

if (round(c1.re*1e+6)=round(c2.re*1e+6)) and (round(c1.im*1e+6)=round(c2.im*1e+6))

then result:=true else result:=false;

end;

 

function CDiv(c1,c2:TComplex):TComplex;

// Деление комплексных чисел

begin

if (c2.re=0) and (c2.im=0) then

begin MessageBox('Деление на ноль;(Модуль T_Complex)');

result:=complex(0,0);exit;

end;

result.re:=(c1.re*c2.re+c1.im*c2.im)/(c2.re*c2.re+ c2.im*c2.im);

result.im:=(c1.im*c2.re-c1.re*c2.im)/ (c2.re*c2.re+c2.im*c2.im);

exit;

end;

 

// End file!!!!!

end.


Дата добавления: 2015-07-25; просмотров: 35 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Класс полиномиальных уравнений| Класс действительных векторов

mybiblioteka.su - 2015-2024 год. (0.008 сек.)