Пожалуйста помогите!!! очень срочно нужно сделать графики (два в одном): метод Рунге-Кутта и метод Адамса...очень нужно.... препод не хочет ставить зачет за то, что прога без графика Завтра последний день((( иначе отчислят... у меня делфи слетел, уже переустанавливала не помогает, так что даже методом тыка не сделаю(((
Вот код программы:
| Код | unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; Button2: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Image1: TImage; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; y0, x0, a, b, h: extended; implementation {$R *.dfm} function fxy(x,y: extended): extended; begin fxy:=-(2*x+ y)/(1+cos(y)); end; procedure TForm1.Button1Click(Sender: TObject); var x,y : extended; k1,x1,y1,k2,y2, k3,y3,x2,k4,dy :extended; begin y0 := StrToFloat(Edit1.Text); x0 := 0; a := StrToFloat(Edit2.Text); b := StrToFloat(Edit3.Text); h := StrToFloat(Edit4.Text); memo1.Lines.Add('Метод Рунге-Кутта'); x:=x0; y:=y0; memo1.Lines.Add(' x='+floattostr(x)+'; y='+floattostr(y)); while x<=b do begin k1:=h*fxy(x,y); x1:=x+h/2; y1:=y+k1/2; k2:=h*fxy(x1,y1); y2:=y+k2/2; k3:=h*fxy(x1,y2); y3:=y+k3; x2:=x+h; k4:=h*fxy(x2,y3); dy:=(k1+2*k2+2*k3+k4)/6; y:=y+dy; x:=x+h; memo1.Lines.Add(' x='+floattostr(x)+'; y='+floattostr(y)); end; memo1.Lines.Add(''); memo1.Lines.Add(' Метод Адамса '); x:=x0; y:=y0; memo1.Lines.Add(' x='+floattostr(x)+'; y='+floattostr(y)); while x<=b do begin x:=x+h; y:=y+h*fxy(x,y); memo1.Lines.Add(' x='+floattostr(x)+'; y='+floattostr(y)); end; end; procedure TForm1.Button2Click(Sender: TObject); begin close end; end.
|
|