![]() |
|
|
|
|
#1
|
|||
|
|||
|
Это метод Эйлера с заданной точностью. написанно в Turbo Delphi.
Код:
program Eiler;
{$APPTYPE CONSOLE}
uses
SysUtils,
InOut,
Math;
const
E = 0.01;
var
x,y,g,m,y0,x0 :Extended;
n,i: integer;
function F(x,y:extended):Extended;
begin
Result := 0.2*(power(y,0.5))*x;
end;
begin
Write(RusWD('Введите значение Хо: '));
readln(x);
Writeln;
Write(RusWD('Введите значение Yо: '));
readln(y);
Writeln;
Write(RusWD('Введите значение Хк: '));
readln(m);
Writeln;
Write(RusWD('Введите шаг: '));
readln(g);
Writeln;
Writeln(' X ',' ',' Y ');
y:= y0;
while abs(y0-y) <= E do
begin
y:= y0;
n:= (x+m)/g;
for i := 1 to n do
begin
y := y+g*f(x,y);
x := x+g;
end;
end;
Writeln(x:7:5,' ',y:7:5);
Readln;
end. |
|
#2
|
||||
|
||||
|
Я чтото не понял
PHP код:
результатом выражения abs(y0-y) будет ноль так как числа одинаковы а условие abs(y0-y) <= E будет бесконечно равно тру. Возможно в этом проблема? |
|
#3
|
|||
|
|||
|
ну y:= y0 я написал что бы цикл запустился, и поидее прога не должна больше сюда обращаться. ну возможно и тут какая то ошибка, но щас мне выдаёт вот эту ошибку
[Pascal Error] Project1.dpr(50): E2010 Incompatible types: 'Integer' and 'Extended' в этой строке Код:
n:= (x+m)/g; |
|
#4
|
|||
|
|||
|
Цитата:
Правильно выдает: Результат деления будет вещественное число. а у вас n описан как целое. n:integer меняем на n:real; |
|
#5
|
|||
|
|||
|
а вот для этой строки n должно быть integer
Код:
for i := 1 to n do |
|
#6
|
|||
|
|||
|
n надо оставить Integer.
Код:
n:= Round((x+m)/g); |