"Расчет комплексной функции" Незнаю, как исправить ошибки
Здравствуйте. Записал формулу в Delphi, а она ощибки выдает:
[Error] Unit1.pas(59): Operator not applicable to this operand type
[Error] Unit1.pas(60): Incompatible types: 'Extended' and 'Complex'
Что бы вторую исправить, крутил-мутил и ничего не получалось, ошибка поформуле прыгала. А с первой вообще ничего не знаю.
Вот формула:
Код:
w:=(mulc(cplx(-k,2),cplx(-k,2))-(ln(x)-cplx(arccos((-k/power((power(-k,2)+1),1/2))),(power((power(-k,2)+1),1/2)))));
rm:=cplx(cplx(power((power(-x,2)+1),1/2),cplx(arccos((-x/power((power(-x,2)+1),1/2))),x*k);
d:=divc(w,rm);
s:=mulc(d,Expj(k*x));
Код:
unit Unit1;
Вот весь код:
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, StdCtrls, Cmplx, Math;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Button1: TButton;
Chart1: TChart;
Series1: TLineSeries;
Series2: TLineSeries;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
n,k:integer;
Xmin,Xmax,x,h:extended;
s,d,w,rm:complex;
begin
series1.Clear;
series2.Clear;
n:=strtoint(edit1.text);
xmin:=strtofloat(edit2.text);
xmax:=strtofloat(edit3.text);
h:=strtofloat(edit4.text);
x:=xmin;
repeat
s.re:=1;
s.im:=1;
for k:=2 to n do
begin
w:=(mulc(cplx(-k,2),cplx(-k,2))-(ln(x)-cplx(arccos((-k/power((power(-k,2)+1),1/2))),(power((power(-k,2)+1),1/2)))));
rm:=cplx(cplx(power((power(-x,2)+1),1/2),cplx(arccos((-x/power((power(-x,2)+1),1/2))),x*k);
d:=divc(w,rm);
s:=mulc(d,Expj(k*x));
end;
series1.AddXY(x,s.re,'', clred);
series2.AddXY(x,s.im,'',clblack);
x:=x+h;
until x>xmax;
end;
end.
|