Форум: "Потрепаться";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
ВнизКомплексные числа Найти похожие ветки
← →
Аноним (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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.057 c