![](/img/trans.png)
[英]Performance issue with Scipy's solve_bvp and coupled differential equations
[英]Python solve_bvp fourth order differential equation
我正在嘗試將 scipy 的solve_bvp
應用於以下問題
T''''(z) = -k^4 * T(z)
在大小為l
的域和某個常數A
上具有邊界條件:
T(0) = T''(0) = T'''(l) = 0
T'(l) = A
到目前為止,我已經將四階方程簡化為一階系統,並編寫了以下 function:
def fun1(t, y):
y0 = y[1]
y1 = y[2]
y2 = y[3]
y3 = -k**4 * y0
ret = np.vstack((y0, y1, y2, y3))
return ret
然后,我已經建立了我的邊界條件,試圖遵循文檔(我不太明白......)
def bc(ua, ub):
# 0th, 1st, 2nd and 3rd derivative BCs
return [ua[0], ub[1]-A, ua[2], ub[3]]
然后我設置了我最初的猜測
A, l = 10, 3
x_init = [0, l]
y_init = [[0, 0], [0, A], [0, 0], [0, 0]]
但是,當我運行solve_bvp(fun, bc, x, y)
時,我得到了錯誤的解決方案。 我不知道為什么。 求解器收斂,但看起來不像我期望的那樣。
有人可以解釋一下對於馮諾依曼邊界條件, bc
function 應該返回什么嗎? 我真的很難理解文檔...
在計算y3
時,您需要實際使用y[0]
,而不是y0=y[1]
。
為了避免這種誤解,我會寫
def fun1(t, y):
dy0 = y[1]
dy1 = y[2]
dy2 = y[3]
dy3 = -k**4 * y[0]
return np.vstack((dy0, dy1, dy2, dy3))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.