.
2
, ( .2). , ):
:
(*)
, , (**)
(*) ( (**)), :
(***)
(***) , (1)
.
N=4 , y(t) z(t). ( ), , .
N=4
.
N=25
N=1000
: .. , ( ), , . N . , .
Delphi:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart, Buttons, Functions;
type
TForm1 = class(TForm)
;
grp1: TGroupBox; edt_ modified_metod_y: TEdit; lbl1: TLabel; edt_ modified _metod_z: TEdit;
lbl2: TLabel; edt_ modified _meyod_y0: TEdit; lbl3: TLabel; edt_ modified _metod_z0: TEdit;
lbl4: TLabel; grp2: TGroupBox; cht_ modified _metod: TChart; lnsrs_ modified _metod_y: TLineSeries;
lnsrs_ modified _metod_z: TLineSeries; cht_ modified _metod: TChart; lnsrs_ modified _metod_y: TLineSeries;
lnsrs_ modified _metod_z: TLineSeries; Label6: TLabel;
procedure btn_ modified _metod_closeClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btn_ modified _metod_solveClick(Sender: TObject);
procedure btn_ modified _metod_solveClick(Sender: TObject);
procedure btn_ modified _metod_grafikClick(Sender: TObject);
procedure GrafikTochn(l1,l2:Tlineseries);
procedure btn_ modified _metod_grafikClick(Sender: TObject);
procedure btn_ modified _metod_RungeClick(Sender: TObject);
|
|
procedure btn_ modified _metod_RungeClick(Sender: TObject);
end;
const hx=0.00001;
var
Form1: TForm1;
implementation
procedure TForm1.btn_ modified _metod_solveClick(Sender: TObject);
var h, xi, yi, zi:Real;
i,j:Integer;
begin
if input(edt_ modified _metod_y, edt_ modified _metod_z, edt_ modified _meyod_y0, edt_ modified _metod_z0, edt_ modified _metod_a, edt_ modified _metod_b, edt_ modified _metod_n, edt_ modified _metod_n) then
begin
lnsrs_ modified _metod_y.Clear; lnsrs_ modified _metod_z.Clear;
h:=(b-a)/n; yi:=y0; zi:=z0; xi:=a;
lnsrs_yavniy_ modified _y.AddXY(xi,yi); lnsrs_ modified _metod_z.AddXY(xi,zi);
for i:= 0 to n-1 do
begin
FuncInput(y,xi,yi,zi); FuncInput(z,xi,yi,zi);
yi:=yi+h*y.FuncCount; zi:=zi+h*z.FuncCount; xi:=xi+h;
lnsrs_ modified _metod_y.AddXY(xi,yi); lnsrs_ modified _metod_z.AddXY(xi,zi);
end;
end;
end;
procedure TForm1.btn_ modified _metod_Click(Sender: TObject);
var h, h2, xi, yi, zi, yi2, zi2, e2:Real;
i,k:Integer; flag:Boolean;
begin
if input(edt_ modified _metod_y, edt_ modified _metod_z, edt_ modified _metod_y0, edt_ modified _metod_z0, edt_ modified _metod_a, edt_ modified _metod_b, edt_v_metod_e, edt_ modified _metod_n) then
begin
e2:=StrToFloat(edt_neyavniy_metod_e2.Text);
h2:=(b-a)/n; flag:=True; k:=n;
while flag do
begin
k:=k*2; yi:=y0; yi2:=y0; zi:=z0; zi2:=z0; h:=h2; h2:=h/2; xi:=a;
while xi<b do
begin
xi:=xi+h
end; xi:=a;
while xi<b do
begin
xi:=xi+h2;
flag:=((Abs(yi2-yi)>=e2)or(Abs(zi2-zi)>=e2)) end;
edt_neyavniy_metod_h.Text:=FloatToStr(h2);
edt_neyavniy_metod_Nr.Text:=IntToStr(Trunc((b-a)/h2)+1); end;
end;
procedure TForm1.GrafikTochn(l1,l2:Tlineseries);
var h, xi, yi, zi:Real; i,j:Integer;
begin
l1.Clear; l2.Clear; h:=(b-a)/200; xi:=a;
for i:= 0 to 200 do
begin
yi:=Exp(xi);//2.5*(xi+0.8)-1.25*(xi+0.8)*(xi+0.8)-0.2;
zi:=xi+exp(xi);//0.2+5/4*(xi+0.8)*(xi+0.8);
l1.AddXY(xi,yi); l2.AddXY(xi,zi); xi:=xi+h; end;
end;
procedure TForm1.btn_ modified _metod_Click(Sender: TObject);
var h, h2, xi, yi, zi, yi2, zi2:Real; i,k:Integer; flag:Boolean;
begin
if input(edt_ modified _metod_y, edt_ modified _metod_z, edt_ modified _meyod_y0, edt_v_metod_z0, edt_ modified _metod_a, edt_ modified _metod_b, edt_ modified _metod_e2, edt_ modified _metod_n) then
begin
h2:=(b-a)/n; flag:=True; k:=n;
while flag do
begin
k:=k*2; yi:=y0; yi2:=y0; zi:=z0; zi2:=z0; xi:=a; h:=h2;h2:=h/2;
while xi<b do
begin
FuncInput(y,xi,yi,zi);FuncInput(z,xi,yi,zi); yi:=yi+h*y.FuncCount;
zi:=zi+h*z.FuncCount; xi:=xi+h;
end; xi:=a;
while xi<b do
begin
FuncInput(y,xi,yi2,zi2); FuncInput(z,xi,yi2,zi2);
yi2:=yi+h2*y.FuncCount; zi2:=zi+h2*z.FuncCount; xi:=xi+h2;
end;
flag:=((Abs(yi2-yi)>=e)or(Abs(zi2-zi)>=e)) end;
edt_ modified _metod_h.Text:=FloatToStr(h2);
edt_yav modified niy_metod_Nr.Text:=IntToStr(Trunc((b-a)/h2)+1);
end;
end.
1)
2) http://physics.herzen.spb.ru/library/01/01/nm_labs/odeq.htm