Python 数值求解微分方程

Python 数值求解微分方程,python,for-loop,if-statement,differential-equations,derivative,Python,For Loop,If Statement,Differential Equations,Derivative,我试着用数值方法解一个非常简单的方程f=t**2。我编写了一个for循环,以便在第一个时间步使用f,然后使用每个循环的解作为下一个循环的初始函数 我不确定我的数值求解方法是否正确,出于某种原因,我的循环只工作两次(一次通过if-then-else语句),然后只给出零 非常感谢任何帮助。谢谢 ## IMPORT PACKAGES import numpy as np import math import sympy as sym import matplotlib.pyplot as plt #

我试着用数值方法解一个非常简单的方程f=t**2。我编写了一个for循环,以便在第一个时间步使用f,然后使用每个循环的解作为下一个循环的初始函数

我不确定我的数值求解方法是否正确,出于某种原因,我的循环只工作两次(一次通过if-then-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)


Scipy.integrate包有一个名为odeint的函数,用于求解微分方程

这里有一些资源

model:返回请求的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的函数,用于求解微分方程

这里有一些资源

model:返回请求的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()




不清楚你想要实现什么。请发布你的产出和预期产出。不清楚你想要实现什么。请发布您的输出和预期输出。