02.02.2013, 21:21 | #1 (permalink) |
Новичок
Регистрация: 02.02.2013
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Методом Рунге-Кутта найти решение дифференциальных уравнений
Собственно, уравнения: Методом Рунге-Кутта найти решение дифференциального уравнения у'=y-x которое удовлетворяет начальному условию у(0)=1.5 Это уравнение имеет общий интеграл у=се^x+x+1 Частное решение, которое удовлетворяет начальному условию: у=0.5*е^х+х+1 Заранее огромное человеческое спасибо ! |
02.02.2013, 21:21 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Похожие темы уже создавались другими участниками форума, вот их список Решение кубического уравнения методом хорд, Python Решить систему уравнений методом Ньютона, Pascal Паскаль. Найти корни уравнения методом хорд |
02.02.2013, 21:35 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Правильно! Так держать: ни под каким видом и никому не выдавайте тайну языка программирования, на котором должно быть выполнено задание. Ни-ни.
|
03.02.2013, 16:03 | #4 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Тогда получите. Между прочим, в задании не хватает еще кое-чего, а именно промежутка, в котором следует рассчитать значения функции. Указание такого промежутка в методе Рунге-Кутты является обязательным. А раз он не указан, то я волевым усилием ставлю интервал [0..1].
Код:
VAR Xbef,Ybef,Xaft,Yaft,H,K1,K2,K3,K4:Real; i,N:Word; Function F(Xf,Yf:Real):Real; begin F:=Yf-Xf; end; Function fK1(Xk,Yk:Real):Real; begin fK1:=F(Xk,Yk); end; Function fK2(Xk,Yk,Hk:Real):Real; begin fK2:=F(Xk+Hk/2,Yk+Hk/2*fK1(Xk,Yk)); end; Function fK3(Xk,Yk,Hk:Real):Real; begin fK3:=F(Xk+Hk/2,Yk+Hk/2*fK2(Xk,Yk,Hk)); end; Function fK4(Xk,Yk,Hk:Real):Real; begin fK4:=F(Xk+Hk,Yk+Hk*fK3(Xk,Yk,Hk)); end; Function Y_acc(X_acc:Real):Real; begin Y_acc:=0.5*Exp(X_acc)+X_acc+1; end; BEGIN H:=0.1; N:=Round(1/H); Xbef:=0; Ybef:=1.5; WriteLn(' X Y Y_accur'); Writeln(Xbef:4:2,Ybef:15:5, Y_acc(Xbef):15:5); For i:=1 to N do begin Xaft:=Xbef+H; K1:=fK1(Xbef,Ybef); K2:=fK2(Xbef,Ybef,H); K3:=fK3(Xbef,Ybef,H); K4:=fK4(Xbef,Ybef,H); Yaft:=Ybef+H/6*(K1+2.0*K2+2.0*K3+K4); Writeln(Xaft:4:2,Yaft:15:5, Y_acc(Xaft):15:5); Xbef:=Xaft; Ybef:=Yaft; end; ReadLn; END. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Метки |
pascal, рунге-кутта |
|
|