gpt4 book ai didi

Python odeint 明显返回错误的解决方案

转载 作者:太空宇宙 更新时间:2023-11-03 16:10:17 24 4
gpt4 key购买 nike

使用Python 2.7.8。
我正在使用的微分方程是 x'=2-3*x。没那么难。正确的解是 y 截距为 2/3 的衰减指数。运动有三个初始条件。还必须在同一地 block 上有一个带有解决方案的斜率场。我有坡度场,但提供的解决方案是错误的。 x'=x 的测试用例工作正常,但仅当 t>0 时才有效。但odeint提供的解决方案是错误的。我得到的不是衰减指数,而是看起来像三角函数的东西。这是代码。

#Solutions function
def m_diff_sol(input_domain,input_initial_conditions_set):
f_set=[]
for n in input_initial_conditions_set:
m_sol=odeint(m_fst_diff_eq,n,input_domain)
f=[b for [a,b] in m_sol]
f_set.append(f)
return f_set

#Vector field function
def m_fst_diff_eq(x,t):
m,mdot=x
return [mdot,2-3*m]

enter image description here

最佳答案

您希望 ODE 函数返回 1 个输出,即

def my_ode_func(x,t):
return 2.0 - 3.0*x

然后odeint给出从初始条件到x=2/3的预期指数衰减。

import numpy as np
from scipy.integrate import odeint
t = np.arange(0,10.0,0.01)
x0 = 1
out1 = odeint(my_ode_func,x0,t)

Numerical solution to linear ODE

看起来您正在建模类似二阶 ODE x''(t) = 2 - 3*x(t) 的模型。这将被写成一阶 ODE 系统Y(t) = [x(t),x'(t)],然后

Y'(t) = [Y[2](t), 2 - 3*Y[1](t)]

代码看起来像这样:

def my_ode_func2(Y,t):
return [Y[1],2.0 - 3.0*Y[0]]

Y0 = [1,1]
out2 = odeint(my_ode_func2,Y0,t)

Numerical solution to second order ODE

关于Python odeint 明显返回错误的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39387033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com