Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2011, 12:11   #1
ddlovato
 
Регистрация: 23.11.2011
Сообщений: 5
Восклицание Доработка программы.

Решение оду методом Рунге-Кутта 4 порядка.Сама программа готова, но не могу сделать вывод количества итераций.
Код HTML:
program runge_kutta4;
var x,y,x1,y1,e:array[0..100] of real;
a,b,y0,k1,k2,k3,k4:real;
n:integer;
function f(x,y:real):real;
begin
f:=sqr(y+x);
end;
procedure r_k(x,y:array[0..100] of real;a,b:real;n:integer);
var i:integer;
h:real;
begin
h:=(b-a)/n;
x[0]:=a;
y[0]:=y0;
for i:=1 to n do begin
x[i]:=x[0]+i*h;
y[i]:=y[i-1]+1/6*(k1+2*k2+2*k3+k4);
k1:=h*f(x[i],y[i]);
k2:=h*f(x[i]+h/2,y[i]+k1/2);
k3:=h*f(x[i]+h/2,y[i]+k2/2);
k4:=h*f(x[i]+h,y[i]+k3);
writeln(x[i],' ',y[i]:5:9);
end;
end;
var i:integer;
h,imax:real;
BEGIN
writeln('Введите нач условие');
read(y0);
writeln('Введите концы отрезка');
read(a,b);
writeln('Введите колличество разбиений ');
read(n);
writeln('Значения с шагом h');
r_k(x,y,a,b,n);
END.
ddlovato вне форума Ответить с цитированием
Старый 28.12.2011, 12:30   #2
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

В твоем случае количество итераций = n
В конце перед end - Writeln('Количество итераций = ', n)
danekne вне форума Ответить с цитированием
Старый 28.12.2011, 12:40   #3
ddlovato
 
Регистрация: 23.11.2011
Сообщений: 5
По умолчанию

мне нужно сравнить два метода:
1)Рунге-Кутта 4 порядка;
2)метод Адамса;
нужно выявить достоинства метода Адамса над методом Р-К! Приближенные значения получились почти одинаковыми, итерации тоже одинаковые (n=10)... Чем же Адамса лучше? может подскажите=)
вот код м.Адамса
Код HTML:
program m_adamsa;
var x,y:array[0..100] of real;
a,b,y0,h,k1,k2,k3,k4:real;
n,i:integer;
function f(x,y:real):real;
begin
f:=sqr(y+x);
end;
begin
writeln('Введите нач условие');
read(y0);
writeln('Введите концы отрезка');
read(a,b);
writeln('Введите колличество разбиений ');
read(n);
h:=(b-a)/n;
x[0]:=a;
y[0]:=y0;
for i:=1 to 3 do
begin
x[i]:=x[0]+i*h;
y[i]:=y[i-1]+1/6*(k1+2*k2+2*k3+k4);
k1:=h*f(x[i],y[i]);
k2:=h*f(x[i]+h/2,y[i]+k1/2);
k3:=h*f(x[i]+h/2,y[i]+k2/2);
k4:=h*f(x[i]+h,y[i]+k3);
end;
for i:=4 to n do
begin
x[i]:=x[0]+i*h;
y[i]:=y[i-1] + h/24 * ( 55*f(x[i-1],y[i-1]) - 59*f(x[i-2],y[i-2]) + 37*f(x[i-3],y[i-3]) - 9*f(x[i-4],y[i-4] ));
end;
for i:=1 to n do
writeln(x[i],' ',y[i]:5:9);
Writeln('Количество итераций = ', n)
end.
ddlovato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Доработка программы zhiva Фриланс 1 30.07.2011 15:56
Доработка программы Rydj Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 15.05.2011 15:31
Доработка программы akialex Помощь студентам 3 24.12.2009 21:09
Доработка программы!! Дмитрий Н. Компоненты Delphi 0 15.04.2009 11:26
Доработка программы... barmaJIei Фриланс 1 24.04.2008 21:23