Я пытаюсь решить множество связанных краевых задач таким образом, чтобы
U'' +aB'+ b*(cosh(lambda z))^{-2}tanh(lambda*z) = 0,
B'' + c*U' = 0,
T'' = (gamma^{-1} - 1)*(d*(U')^2 + e*(B')^2)
с учетом граничных условий U(+/- 1/2) = +/-U_0*tanh(lambda/2)
, B(+/- 1/2) = 0 and T(-1/2) = 1
, T(1/2) = 4
. Я разложил этот набор уравнений в набор дифференциальных уравнений первого порядка и использовал массив производных так, чтобы [U, U', B, B', T, T']
. Но BVP решить возвращает ошибку, что у меня есть один якобиан. Когда я удаляю последние два уравнения, я получаю решение для U
и B
, и это прекрасно работает. Однако я не уверен, почему добавление двух других уравнений приводит к этой проблеме.
import numpy as np
from scipy.integrate import solve_bvp
import matplotlib.pyplot as plt
%matplotlib inline
alpha = 1E-7
zeta = 8E-3
C_k = 0.01
sigma = 0.005
Q = 30
U_0 = 0.1
gamma = 5/3
theta = 3
def fun(x, y):
return y[1], -2*U_0*Q**2*(1/np.cosh(Q*x))**2*np.tanh(Q*x)-((alpha)/(C_k*sigma))*y[3], y[3],\
-(1/(C_k*zeta))*y[1], y[4], (1/gamma - 1)*(sigma*(y[1])**2 + zeta*alpha*(y[3])**2)
def bc(ya, yb):
return ya[0]+U_0*np.tanh(Q*0.5), yb[0]-U_0*np.tanh(Q*0.5), ya[2]-0, yb[2]-0, ya[4] - 1, yb[4] - 4
x = np.linspace(-0.5, 0.5, 500)
y = np.zeros((6, x.size))
sol = solve_bvp(fun, bc, x, y)
print(sol)
Однако ошибка, которую я получаю, заключается в том, что «задается массив с последовательностью». Первая функция и граничные условия решают два связанных уравнения, затем я использую эти результаты для оценки уравнения, которое я дал. Я попытался написать все свои уравнения в одной функции, однако, похоже, это возвращает тривиальные решения, то есть массив, полный нулей.
Буду признателен за любую помощь.