Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
3-1080593571
Heet
2004-03-30 00:52
2004.04.25
Подключение к таблице Interbase на сетевом новеловском диске


1-1081350822
BlackLord2003
2004-04-07 19:13
2004.04.25
Код символа!


6-1077115256
Svart
2004-02-18 17:40
2004.04.25
работа с SNMP


14-1080937601
Knight
2004-04-03 00:26
2004.04.25
А можно из самой программы узнать сколько памяти она занимает?


1-1081279928
Nevil
2004-04-06 23:32
2004.04.25
Выделенные Items в ListView нарисованные на канвасе





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский