![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 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. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 12.02.2007
Сообщений: 360
|
![]()
В твоем случае количество итераций = n
В конце перед end - Writeln('Количество итераций = ', n) |
![]() |
![]() |
![]() |
#3 |
Регистрация: 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. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Доработка программы | 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 |