Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function f(x, y :double) :double;
- begin
- f := 2*x*x + 3*x*y + y*y + 3*x + 2*y - 1;
- end;
- procedure TForm1.Button1Click(Sender: TObject);
- var h, he :double;
- x, y, y1, g :double;
- k1, k2, k3, k4 :double;
- fe : array[1..4] of double;
- i :integer;
- begin
- h := 0.000001;
- x := 0;
- y := -1;
- y1 := -1;
- y := y1 + h*f(x, y) + 2*h;
- y1 := y;
- x += h;
- Memo1.Lines.Add('Метод Эйлера: ');
- while (x < 1-h) do
- begin
- y := y1 + h*f(x, y);
- y1 := y;
- if ((trunc(x*1E6) = 2E5) or (trunc(x*1E6) = 4E5) or
- (trunc(x*1E6) = 6E5) or (trunc(x*1E6) = 8E5)) then
- begin
- Memo1.Lines.Add('x= '+FloatToStrF(x, ffFixed, 0, 8));
- Memo1.Lines.Add('y='+FloatToStrF(y, ffFixed, 0, 8));
- end;
- x += h;
- end;
- x := 0;
- y := -1;
- y1 := -1;
- Memo2.Lines.Add('Метод Рунге-Кутты: ');
- while (x < 1-h) do
- begin
- k1 := f(x, y1);
- k2 := f(x+h/2, y1+(h/2)*k1);
- k3 := f(x+h/2, y1+(h/2)*k2);
- k4 := f(x+h, y1+h*k3);
- y := y1 + (h/6)*(k1+2*k2+2*k3+k4);
- y1 := y;
- x += h;
- if ((trunc(x*1E6) = 2E5) or (trunc(x*1E6) = 4E5) or
- (trunc(x*1E6) = 6E5) or (trunc(x*1E6) = 8E5)) then
- begin
- Memo2.Lines.Add('x= '+FloatToStrF(x, ffFixed, 0, 8));
- Memo2.Lines.Add('y='+FloatToStrF(y, ffFixed, 0, 8));
- end;
- end;
- x := 0;
- y := -1;
- y1 := -1;
- i := 1;
- he := -0.001;
- while (x > -1+he) do
- begin
- k1 := f(x, y1);
- k2 := f(x+he/2, y1+(h/2)*k1);
- k3 := f(x+he/2, y1+(h/2)*k2);
- k4 := f(x+he, y1+h*k3);
- y := y1 + (h/6)*(k1+2*k2+2*k3+k4);
- y1 := y;
- if ((floor(abs(x)*1E6) = 2E5) or (floor(abs(x)*1E6) = 4E5) or
- (floor(abs(x)*1E6) = 6E5) or (floor(abs(x)*1E6) = 8E5)) then
- begin
- fe[i] := y;
- inc(i);
- end;
- x += he;
- end;
- x := 0;
- y := -1;
- y1 := -1;
- Memo3.Lines.Add('Метод Адамса: ');
- while (x < 1-h) do
- begin
- y := y1 + (h/24)*(55*fe[1] - 59*fe[2] + 37*fe[3] - 9*fe[4]);
- y1 := y;
- if ((trunc(x*1E6) = 2E5) or (trunc(x*1E6) = 4E5) or
- (trunc(x*1E6) = 6E5) or (trunc(x*1E6) = 8E5)) then
- begin
- Memo3.Lines.Add('x= '+FloatToStrF(x, ffFixed, 0, 8));
- Memo3.Lines.Add('y='+FloatToStrF(y, ffFixed, 0, 8));
- end;
- x += h;
- end;
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement