Я решаю набор связанных ODE, используя solve_bvp
в python. Я решил уравнения для граничных условий, что U = 0 и B = 0 на границах, однако я пытаюсь решить их так, чтобы U '= 0 и B = 0 на границе. Моя проблема в том, что я продолжаю сталкиваться с единственным якобианом в ответном сообщении - я предполагаю, что первоначальное предположение расходится, однако я попробовал ряд начальных догадок и до сих пор не нашел решения. Есть ли более систематический c способ выяснить это? Мой код ниже:
import numpy as np
from scipy import integrate
from scipy.integrate import solve_bvp
import matplotlib.pyplot as plt
%matplotlib inline
x = np.linspace(-0.5, 0.5, 1000)
y = np.ones((4, x.size))
y[0] = U_0*np.tanh(Q*x)
U_0 = 0.1
Q = 30
## Then we calculate the total energy
def FullSolver(x,y,Ha, Rm):
def fun(x, y):
U, dU, B, dB = y;
d2U = -2*U_0*Q**2*(1/np.cosh(Q*x))**2*np.tanh(Q*x)-((Ha**2)/(Rm))*dB;
d2B = -Rm*dU;
return dU, d2U, dB, d2B
def bc(ya, yb):
return ya[1], yb[1], ya[2]-0, yb[2]+0
# sol will give us the solutions which are accessible if we need them
sol = solve_bvp(fun, bc, x, y, tol=1e-12)
return(sol.x, sol.yp[0], sol.y[2], sol.message)
FullSolver(x, y, 0.000005, 0.00009)