我正在解一个四阶常微分方程
- EI*(d4y/dx4)= -k*y
这是用于软土地基上的ODE的一个版本。
我的一阶方程组如下
- y1' = y2
- y2“= y3
- y3“= y4
- y4 ′ = -k*y1
和BC
- y3(0)= y3(L)= 0
- y4(0)= -F/(EI)
- y4(L)= 0
和我的代码
from scipy.integrate import solve_bvp
import numpy as np
F = 300 #kN
EI = 20000 #kNm2
D = 1 #m
M_E = 45000 #kN/m2
k = 1.4*M_E/D #kN/m3
L = 10 #m
x = np.linspace(0,L,101)
p = np.array([k,EI,F])
print(p)
def fun(x, y, p):
k = p[0]
EI = p[1]
return np.vstack((y[1],y[2],y[3],-k*y[0]/EI))
def bc(ya, yb, p):
F = p[2]
EI = p[1]
return np.array([ya[2], yb[2], ya[3]+F/EI, yb[3]])
y_a = np.zeros((4, x.size))
from scipy.integrate import solve_bvp
res_a = solve_bvp(fun, bc, x, y_a, p)
出现以下错误:
值错误:'bc'传回的形体应该是(7,),但实际上是(4,)。
你能帮助我理解我在这里做错了什么,错误意味着什么吗?
谢谢
1条答案
按热度按时间xmd2e60i1#
因此,在对代码进行了一些修改之后,我设法使它工作起来。解决方案是:
我希望这能帮助那些正在努力实现订单高于2的ODE的人。