Сингулярный якобиан в краевой задаче - PullRequest
0 голосов
/ 25 марта 2020

Я решаю набор связанных 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)
...