Ниже вставлен мой код на Python. Это метод Рунге-Кутты 4-го порядка, который оценивает ОДУ 2-го порядка: y '' + 4y '+ 2y = 0 с начальными условиями y (0) = 1, y' (0) = 3.
Мне нужна помощь, чтобы это исправить. Когда я запускаю свой код, мое аналитическое решение не соответствует моему численному решению, мой профессор сказал, что они должны быть такими же. Я пробовал отредактировать эту кучу и, похоже, не могу понять, что не так. Спасибо!
import numpy as np
import matplotlib.pyplot as plt
def ode(y):
return np.array([y[1],(-2*y[0]-4*y[1])])
tStart=0
tEnd=5
h=.1
t=np.arange(tStart,tEnd+h,h)
y=np.zeros((len(t),2))
y[0,:]=[1,3]
for i in range(1,len(t)):
k1=ode(y[i-1,:])
k2=ode(y[i-1,:]+h*k1/2)
k3=ode(y[i-1,:]+h*k2/2)
k4=ode(y[i-1,:]+h*k3)
y[i,:]=y[i-1,:]+(h/6)*(k1+2*k3+2*k3+k4)
plt.plot(t,y[:,0])
plt.plot(t,1-t)
plt.grid()
plt.gca().legend(('y(t)',"y'(t)"))
plt.show()
y[i,:]=y[i-1,:]+(h/6)*(k1+2*k3+2*k3+k4)
должен быть частью цикла. - person Peter Meisrimel   schedule 26.10.2020