python求函数一二阶导_如何在python中解决二阶odes?两个二阶微分中的每一个都有两个变量?...

本文纠正了在Python中求解二阶微分方程时的常见错误,包括操作符使用不当、参数命名错误以及状态变量不一致的问题。提供了一个修正后的示例代码,该代码使用`scipy.integrate.odeint`来求解二阶微分方程,并展示了正确结果的输出。
摘要由CSDN通过智能技术生成

你这里有些错误。

第一:

z^3

不是权力,而是排他性的或操作性的。在Python中,使用

**

接线员,所以你要写信

z**3

.

第二:您对函数的参数命名错误。而不是:

def function(init, time, k):

你应该拥有

def function(state, time, k):

自从

state

根据函数返回的导数进行演化。它将只在第一个时间步骤中具有初始值。

第三:你的国家解释和国家三角洲是不一致的。你写:

xt = init[0]

yt = init[1]

dxdt = init[2]

dydt = init[3]

但后来

return dxdt, ddxddt, dydt, ddyddt

这意味着,除其他外,

dydt=ddxddt

. 你应该写:

xt, yt, dxdt, dydt = state

[....]

return dxdt, dydt, ddxddt, ddyddt

请注意,您必须确保您的初始条件与您订购状态的方式一致。

正确实现的最低工作示例如下:

import numpy as np

import scipy.integrate

import matplotlib.pyplot as plt

def function(state, time, k):

xt,yt,dxdt,dydt = state

z = np.sqrt((yt+k)**2+xt**2)

ddxddt = 10*dxdt + xt - ((k+1)*(xt ))/z**3

ddyddt = -10*dydt + yt - ((k+1)*(yt + k))/z**3

return dxdt, dydt, ddxddt, ddyddt

init = [

0.921, #x[0]

0, #y[0]

0, #x'[0]

3.0 #y'[0]

]

k = 1

times = np.linspace(0,1,1000)

values = scipy.integrate.odeint(function, init, times, args=(k,), tfirst=False)

plt.plot(values)

plt.show()

并给出这个输出:

BRDq8.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值