微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

具有数组操作的 Python bvp 求解器

如何解决具有数组操作的 Python bvp 求解器

我正在尝试在 python 中解决 bvp。这里已经提到了方程和边界条件。 d4y(x)/dx4= array-y(x),边界条件为 y(0)=y(L)=y'(0)=y'(L)=0,其中 array 是指包含与 y[0] 中元素数量相同的数组。我为此编写的代码如下所示

import numpy as np
from scipy.integrate import solve_bvp
array=np.ones(100)

def fun(x,y):
    return np.vstack([y[1],y[2],y[3],np.subtract(array,y[0])])

def bc(ya,yb) :
    return np.array([ya[0],ya[1],yb[0],yb[1]])

xmesh = np.linspace(0,10,100) 
y = np.zeros((4,len(xmesh)))  
sol = solve_bvp(fun,bc,xmesh,y)

但我不断收到错误消息:operands Could not be broadcast together with shapes (100,) (99,) ,即使 arrayy[0] 的大小相同。如果有人能解决问题,那将是非常有帮助的。

编辑: 完整的堆栈跟踪已在下方发布。

ValueError                                Traceback (most recent call last)
<ipython-input-2-62088552c9f2> in <module>()
     21 xmesh = np.linspace(0,100)
     22 y = np.zeros((4,len(xmesh)))
---> 23 sol = solve_bvp(fun,y)
     24 
     25 plt.figure()

5 frames
<ipython-input-2-62088552c9f2> in fun(x,y)
     14 def fun(x,y):
     15     t0= t01[161:260:1]
---> 16     return np.vstack([y[1],y[0])])
     17 
     18 def bc(ya,yb) :

ValueError: operands Could not be broadcast together with shapes (100,)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。