我目前正在研究一些拉格朗日力学,这在很大程度上是很好的,但我决定尝试一个计算机练习,我不知道如何让Python解决这类方程。你知道吗
我要解决的二阶非线性常微分方程是:
y的初始值为y0=0。你知道吗
解决一个正常的,一阶方程是很容易的,因为你只要创建一个函数设置它等于一些东西,然后使用odeint。没问题。但现在我得到了一个二阶方程,我不知道如何告诉odeint或函数,我试图找到的是两次微分的东西。你知道吗
我尝试过使用不同数量的积分和微分函数(象征性的和其他的),比如:
y’s=右
y’=相对于t积分的RHS
以此类推,但似乎什么都不管用。要么它告诉我我的函数不能被调用,要么某个东西没有属性,或者有一些无效的限制等等。你知道吗
下面是我现在的代码(barebone),我没有尝试过任何诡计让它工作,如果它是一阶函数,它只返回函数的结果:
#Setting up the derivative
def model(y,t):
M = g = R = 1
m = 0.7
k = g/(R*(M+m))
return k*(m-M*np.sin(y))
#Initial condition
y0 = 0
#Time interval
t = np.linspace(0,20,1000)
#solve ODE
y = odeint(model,y0,t)
预期的结果应该是振荡和积垢,但这当然不是,因为它是错误的。诚然,我对Python还很陌生,而且总体上对编码也很不在行,所以这里有人能帮我吗?你知道吗
你需要把你的二阶方程转换成一阶系统,有两个分量
然后您的解决方案每个时间索引也将有两个组件,因此您必须提取
y
作为第一个组件。你知道吗相关问题 更多 >
编程相关推荐