Я пытаюсь применить scipy solve_bvp
к следующей проблеме
T''''(z) = -k^4 * T(z)
с граничными условиями в домене размером l
и некоторой константой A
:
T(0) = T''(0) = T'''(l) = 0
T'(l) = A
До сих пор я свел уравнение четвертого порядка к системе 1-го порядка и написал следующую функцию:
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
должна возвращать для граничных условий фон Неймана? Я действительно изо всех сил пытаюсь осмыслить документацию ...