Пытается решить разницу 2-го порядка. э. с двумя граничными условиями и ничего, что я пытаюсь сделать, кажется, не работает, и я не могу найти учебник, который включает все / подобные термины, которые есть в моем выражении, и, по крайней мере для меня, документация scipy не объясняет, как использовать Ясно решить. bvp.
У меня есть уравнение: y '' + 2 / r * y '= A * y + b * y ^ 3, где y - функция от r.
I' мы переписали его следующим образом:
y1 = y (r)
y2 = y1 '
, так что y2' = -2 / r * y2 + y1 (A + b * y1 ^ 2)
При условии, что y '(0) = 0, y (r = 10) = постоянная
A, b и постоянная известны.
У меня есть следующий код, но он, кажется, не работает, и, как уже было сказано, я немного смущен документацией, поэтому любая помощь будет оценена!
def fun(x, y):
return np.vstack((y[2], -2/x*y[1]+y[0]*(A+b*y[0]*y[0])))
def bc(ya, yb):
return np.array([ya[2], yb[1]-constant])
x = np.linspace(1, 10, 10)
ya = np.zeros((3, x.size))
yb = np.zeros((3, x.size))
sol_1 = solve_bvp(fun, bc, x, ya)
sol_2 = solve_bvp(fun, bc, x, yb)
Спасибо!
========== РЕДАКТИРОВАТЬ ========================= Есть аналитическое решение, для которого я рассчитал Я просто смотрю, смогу ли я найти то же решение численно, я думаю, что главная проблема заключается в том, что Для решения есть две отдельные области: одна, где r R (out). Это приводит к двум различным решениям (действительным только в их соответствующей области) с условиями, что y_in (R) == y_out (R) и y_in '(R) == y_out' (R). Полное решение, состоящее из двух частей, где Радиус = 1, a = 99, b = 1 и постоянная = 1, y (inf) = постоянная
Из решения Лутца Лемана он принимает правильную форму (по крайней мере, для внутренней области, хотя и не в правильных масштабах).
Я просто не уверен, как вы будете go кодировать все уравнивающие решения, и я полагаю, даже получая их решения в первую очередь, хотя ответ Лутца - удивительный момент в правильном направлении. Спасибо