Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: CL | DM;

Вниз

Комплексные числа   Найти похожие ветки 

 
Аноним   (2004-04-01 09:47) [0]

Как реализовать такую вещь:


type
 complex = record
   re, im: real;
 end;

{...}
var
  a, b: complex;
begin
    b.re = 2.34; b.im = 1.56;
    [B]a = exp(b);[/B] {???}
end;


 
Семен Сорокин ©   (2004-04-01 09:55) [1]

имхо, тут не record, тут class нужен


 
Аноним   (2004-04-01 09:57) [2]

Ну да, Вы правы. Все-таки как реализовать такую процедуру?


 
Труп Васи Доброго ©   (2004-04-01 10:24) [3]

Ох, молодость, молодость. Помнится писал я библиотеку для работы с комплексными числами, давно это было. И никаких классов не вводил, именно через рекорд и делал.


 
Ozone ©   (2004-04-01 10:26) [4]

TO Труп Васи Доброго[3]

Может поможете с реализацией самой процедуры получения exp?


 
Romkin ©   (2004-04-01 10:28) [5]

Re := exp(Re)*cos(Im); Im := exp(Re)*sin(Im);
Вроде так. Но в D6 есть библиотека комплексных чисел :))


 
Аноним   (2004-04-01 10:33) [6]

TO Romkin ©[5]

>> Но в D6 есть библиотека комплексных чисел :))

Нужно не исп. стандартных средств.


 
Паниковский ©   (2004-04-01 10:35) [7]

Аноним  
Аккуратно скопированное ворованным не является


 
Ozone ©   (2004-04-01 10:38) [8]

To Паниковский © [7]

Не согласен.


 
Паниковский ©   (2004-04-01 10:41) [9]

Ozone
тогда верни деньги за использование продуктов М$ и Багланду


 
ИдиотЪ ©   (2004-04-01 10:42) [10]

Ozone ©
Теперь что, на каждый алгоритм копирайт поставить?
Есть куча известных вещей, повторение которых не возбраняется законом


 
Ozone ©   (2004-04-01 10:43) [11]

TO Паниковский ©

А кто тебе сказал, что у меня стоит не лицензиооный Windows и Delphi?


 
Ozone ©   (2004-04-01 10:46) [12]

ИдиотЪ ©[10]
По-моему, алгоритм это одно, а его реализация это совсем другое.
Я же не говорил, что не исп. существующие алгоритмы, просто я за то, чтобы у каждого была его своя собственная реализация


 
Ozone ©   (2004-04-01 10:46) [13]

ИдиотЪ ©[10]
По-моему, алгоритм это одно, а его реализация это совсем другое.
Я же не говорил, что не исп. существующие алгоритмы, просто я за то, чтобы у каждого была его своя собственная реализация


 
Паниковский ©   (2004-04-01 10:48) [14]

Ozone
1 за Турбо Паскаль деньги верни
2 верни деньги за Дос

или ты всегда думал что они бесплатные?


 
Ozone ©   (2004-04-01 10:51) [15]

Паниковский © [14]

Давайте не будем дальше развивать эту тему (я высказал свое мнение)


 
Труп Васи Доброго ©   (2004-04-01 10:58) [16]

Вот порылся в своих детских резработках, нашёл это чудо, так сказать библиотека работы с комплексными числами, только разбирайся сам. :)
Unit RCMath;
Interface

type  Complex=record
     re:extended;
     im:extended;
     end;
Procedure CExch(var x,y:complex);
Procedure Cass(var x,y:complex);
Function  CEXP(x:extended):complex;
Function  Cln(x:complex):complex;
Function  Cmult(x,y:complex):complex;
Function  Cdiv(x,y:complex):complex;
Function  CmultA(A:extended;z:complex):complex;
Function  Cadd(x,y:complex):complex;
Function  Csub(x,y:complex):complex;
Function  CMP(x,y:extended):complex;
Function  Csp(Z:complex):complex;
Function  CABS(x:complex):extended;
Function  Re(z:complex):extended;
Function  IM(z:complex):extended;
Function ARG(z:complex):extended;
Function CSQR(x:complex):extended;
Function Pow(a:double;b:integer):extended;
Function CPow(z:complex;i:integer):complex;
Implementation

Function ARG(z:complex):extended;
var ar:extended;
begin
if (Re(z)=0) and (Im(z)=0) then ar:=0;
if (Re(z)=0) and (Im(z)>0) then ar:=Pi/2;
if (Re(z)=0) and (Im(z)<0) then ar:=3*Pi/2;
if (Re(z)>0) and (Im(z)=0) then ar:=0;
if (Re(z)<0) and (Im(z)=0) then ar:=pi;
if (Re(z)>0) and (Im(z)>0) then ar:=arctan(Im(z)/Re(z));
if (Re(z)<0) and (Im(z)>0) then ar:=pi/2+arctan(-Re(z)/Im(z));
if (Re(z)<0) and (Im(z)<0) then ar:=pi+arctan(Im(z)/Re(z));
if (Re(z)>0) and (Im(z)<0) then ar:=3*pi/2+arctan(-Re(z)/Im(z));
arg:=ar;
end;

Function Re(z:complex):extended;
begin
re:=z.re;
end;

Function IM(z:complex):extended;
begin
im:=z.im;
end;

Function Cln(x:complex):complex;
begin
 Cln:=Cmp(ln(Cabs(x)),arg(x));
end;

Function Csub(x,y:complex):complex;
begin
Csub.re:=x.re-y.re;
Csub.im:=x.im-y.im;
end;

Function Cadd(x,y:complex):complex;
begin
Cadd.re:=x.re+y.re;
Cadd.im:=x.im+y.im;
end;

Function Cmult(x,y:complex):complex;
begin      
 Cmult.re:=x.re*y.re-x.im*y.im;
 Cmult.im:=x.im*y.re+x.re*y.im;
end;

Function Csp(z:complex): complex;
begin
 Csp.re:=z.re;
 Csp.im:=-z.im;
end;

Function Cdiv(x,y:complex):complex;
var z : complex;
   A : extended;
begin
 z:=Cmult(x,Csp(y));
 A:=1/Csqr(y);
 Cdiv:=CmultA(A,z);
end;

Function Cmp(x,y:extended):complex;
begin
Cmp.re:=x; Cmp.im:=y;
end;

Function CMultA(A:extended;Z:complex):complex;
begin
CmultA.re:=A*z.re;
CmultA.im:=A*z.im;
end;

Function CABS(x:complex):extended;
begin
cabs:=sqrt(sqr(x.re)+sqr(x.im));
end;

Function CSQR(x:complex):extended;
begin
csqr:=sqr(x.re)+sqr(x.im);
end;

Function CEXP(x:extended):complex;
begin
Cexp.re:=cos(x);
Cexp.im:=sin(x);
end;

Procedure CExch(var x,y:complex);
var c1:complex;
begin
Cass(c1,x); Cass(x,y); Cass(y,c1);
end;

Procedure Cass(var x,y:complex);
begin
x.re:=y.re;
x.im:=y.im;
end;

Function Pow(a:double;b:integer):extended;
 function power(a:double;b:integer):double;
  begin
    power:=exp(b*ln(a));
  end;
begin
 if a<0 then
   begin
     if odd(b) then
       pow:=-power(-a,b)
     else
       pow:=power(-a,b);
   end
 else
   begin
     if a=0 then
       pow:=1
     else
       pow:=power(a,b);
   end;

end;
Function CPow(z:complex;i:integer):complex;
var x,y:double;
begin
   x:=pow(Cabs(z),i);
   y:=i*Arg(z);
   Cpow:=Cmp(x*cos(y),x*sin(y));
end;

e


 
Труп Васи Доброго ©   (2004-04-01 10:59) [17]

Последняя е означает end. Скопировал криво :(


 
Паниковский ©   (2004-04-01 11:00) [18]

Труп Васи Доброго
А у тебя "Война и мир" Толстого есть ?


 
Труп Васи Доброго ©   (2004-04-01 11:04) [19]


> А у тебя "Война и мир" Толстого есть ?

Нет, я её один раз прочитал (заставили в школе, остался "на осень" по литературе) больше не прикасался! Но специально для тебя могу найти и запостить:)))



Страницы: 1 вся ветка

Текущий архив: 2004.04.25;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.053 c
3-1080391582
Karlson
2004-03-27 15:46
2004.04.25
ВЫзов метода DBGrid1CellClick из любого места программы


1-1081603762
ipavels
2004-04-10 17:29
2004.04.25
Многомерный массив в аргументах функции


14-1080622115
Dmitriy O.
2004-03-30 08:48
2004.04.25
Набираю команду кодеров.


1-1081147580
СержК
2004-04-05 10:46
2004.04.25
Создание bat файла


3-1080309589
Vit
2004-03-26 16:59
2004.04.25
Компонент DBCombobox