python数组输入函数_SciPy中ODEINT函数的数组输入

我试图将一个数组传递到一个ODE中,然后使用ODEINT函数求解该ODE。但是,我得到了以下错误:RuntimeError: The size of the array returned by func (50) does not match the size of y0 (1)

下面是我的示例代码:from scipy.integrate import odeint

import numpy as np

import matplotlib.pyplot as plt

#First ODE

def eq1 (x,t):

return (0.5*(x)+2*x**2)

#Second ODE

def eq2 (y,t,m):

p = np.sqrt(y)+m*y**2

return p

t = np.linspace(0,1,50)

IC = [2] # Initial Condition

m = [0.1]*len(t) # A random variable

#Solver for the first ODE

one = odeint(eq1,IC,t)

plt.plot (t,one)

#Solver for the Second ODE

two = odeint (eq2,IC,t,(m,))

plt.plot (t,two)

第一个解算器工作正常,但第二个解算器抛出错误。基于错误消息,我了解到IC的维数与变量m的维数不同。因此,如果我注释掉与第一个ODE的解算器相关的行并将IC更改为IC = [2]*len(m),错误消息就会消失。然而,two.shape是(50,50)。我不知道解的哪个维度(两个)才是真正的答案。在

我真的很感谢你的指导。

谢谢您!在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值