python解常微分方程龙格库_求解二阶常微分方程的RungeKutta四阶方法

我试着做一个简谐振子的例子,它将用龙格-库塔四阶法求解。要求解的二阶常微分方程(ODE)和初始条件为:

y’’+y=0

y(0)=0和y'(0)=1/pi

范围在0到1之间,共有100步。我用u作为辅助变量,将我的二阶常微分方程分成两个一阶常微分方程:

y'=u

u'=-y

解析解为正弦y(x)=(1/pi)^2 sin(pi*x)。在

我的Python代码如下:from math import pi

from numpy import arange

from matplotlib.pyplot import plot, show

# y' = u

# u' = -y

def F(y, u, x):

return -y

a = 0

b = 1.0

N =100

h = (b-a)/N

xpoints = arange(a,b,h)

ypoints = []

upoints = []

y = 0.0

u = 1./pi

for x in xpoints:

ypoints.append(y)

upoints.append(u)

m1 = h*u

k1 = h*F(y, u, x) #(x, v, t)

m2 = h*(u + 0.5*k1)

k2 = h*F(y+0.5*m1, u+0.5*k1, x+0.5*h)

m3 = h*(u + 0.5*k2)

k3 = h*F(y+0.5*m2, u+0.5*k2, x+0.5*h)

m4 = h*(u + k3)

k4 = h*F(y+m3, u+k3, x+h)

y += (m1 + 2*m2 + 2*m3 + m4)/6

u += (k1 + 2*k2 + 2*k3 + k4)/6

plot(xpoints, ypoints)

show()

所有代码都按照LutzL的建议进行了更正。请参阅下面的注释。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
龙格-库塔法是一种数值方法,用于常微分方程问题。它是一种迭代方法,通过逐步逼近精确来得到数值龙格-库塔法的基本思想是将微分方程转化为一个差分方程,并通过一系列计算来逐步逼近精确。该方法的优点是精度高、稳定性好、适用范围广。 在实际问题中,龙格-库塔法可以用来决许多物理、工程和科学问题。例如,它可以用来求解自由落体运动、弹簧振动、电路分析等问题。以下是一个求解简单的自由落体问题的Python代码示例: ```python import numpy as np import matplotlib.pyplot as plt # 定义微分方程 def f(t, y): return -9.8 # 定义龙格-库塔法 def rk4(t0, y0, h, n): t = np.zeros(n+1) y = np.zeros(n+1) t[0] = t0 y[0] = y0 for i in range(n): k1 = h * f(t[i], y[i]) k2 = h * f(t[i] + h/2, y[i] + k1/2) k3 = h * f(t[i] + h/2, y[i] + k2/2) k4 = h * f(t[i] + h, y[i] + k3) y[i+1] = y[i] + (k1 + 2*k2 + 2*k3 + k4)/6 t[i+1] = t[i] + h return t, y # 设定初始条件 t0 = 0 y0 = 0 h = 0.1 n = 100 # 计算数值 t, y = rk4(t0, y0, h, n) # 绘制图像 plt.plot(t, y) plt.xlabel('t') plt.ylabel('y') plt.title('Free fall') plt.show() ``` 在这个例子中,我们使用了龙格-库塔法来计算自由落体问题的数值,并用matplotlib库绘制了结果。这个例子只是龙格-库塔法在实际问题中的一个简单应用,实际上它可以用于求解更为复杂的常微分方程问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值