【发布时间】:2021-04-28 14:16:25
【问题描述】:
我尝试使用odeint 解决达芬方程:
def func(z, t):
q, p = z
return [p, F*np.cos(OMEGA * t) + Fm*np.cos(3*OMEGA * t) + 2*gamma*omega*p - omega**2 * q - beta * q**3]
OMEGA = 1.4
T = 1 / OMEGA
F = 0.2
gamma = 0.1
omega = -1.0
beta = 0.0
Fm = 0
z0 = [1, 0]
psi = 1 / ((omega**2 - OMEGA**2)**2 + 4*gamma**2*OMEGA**2)
wf = np.sqrt(omega**2 - gamma**2)
t = np.linspace(0, 100, 1000)
sol1 = odeintw(func, z0, t, atol=1e-13, rtol=1e-13, mxstep=1000)
当F = gamma = beta = 0 时,我们有一个由两个线性齐次方程组成的系统。很简单!
但是当F not equal 0 系统变得非同质化。问题是数值解与解析解不一致:
图一
数值解不考虑方程的非齐次解。
我一直无法弄清楚是否可以在这里使用solve_bvp 功能。你能帮帮我吗?
【问题讨论】:
-
精确解显然是错误的,它不是从值
1开始的。 -
@LutzLehmann,我正在寻找作为齐次方程和特定非齐次解的总和的一般解:X(t) + Xnon(t)。如果有外力(F = 0),它确实从值 1 开始,如果 F 不等于 0,则力从一开始就起作用。我错了吗?
-
如果零时刻的位置是1,那么任何力都不会改变它。您必须调整齐次解决方案的系数以适应。 (WolframAlpha 把精确解弄得一团糟。)
-
@LutzLehmann,当然!给我丢脸!我写在纸上!
-
@LutzLehmann,我不使用 Wolfram
标签: python numerical-methods differential-equations numerical-integration