Scipy.integrate包中有一个称为odeint的函数,用于求解微分方程
我试图通过数值求解一个非常简单的方程f = t ** 2。我编写了一个for循环,以便在第一步中使用f,然后将每个循环的解决方案用作下一个循环的初始函数。
我不确定我的数值求解方法是否正确,由于某种原因,我的循环仅工作两次(一个通过if-然后else语句,然后仅给出零。)>
非常感谢您的帮助。谢谢!!
## IMPORT PACKAGES import numpy as np import math import sympy as sym import matplotlib.pyplot as plt ## Loop to solve numerically for i in range(1,4,1): if i == 1: f_old = t**2 print(f_old) else: f_old = sym.diff(f_old, t).evalf(subs={t: i}) f_new = f_old + dt * (-0.5 * f_old) f_old = f_new print(f_old)
我试图通过数值求解一个非常简单的方程f = t ** 2。我编写了一个for循环,以便在第一步中使用f,然后将每个循环的解用作......>
模型:函数名称,该函数名称返回所请求的y和t值的导数,作为dydt = model(y,t)
y0:微分状态的初始条件
t:应报告解决方案的时间点。通常会计算其他内部点,以保持解决方案的准确性,但未报告。
也绘制结果的示例:
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
# function that returns dy/dt
def model(y,t):
k = 0.3
dydt = -k * y
return dydt
# initial condition
y0 = 5
# time points
t = np.linspace(0,20)
# solve ODE
y = odeint(model,y0,t)
# plot results
plt.plot(t,y)
plt.xlabel('time')
plt.ylabel('y(t)')
plt.show()
Scipy.integrate包中有一个称为odeint的函数,用于求解微分方程