【发布时间】:2020-06-11 20:00:18
【问题描述】:
我正在尝试解决这样的耦合边值问题集;
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 solve 正在返回我有一个雅可比行列式的错误。当我删除最后两个方程时,我得到了 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)
但是,我得到的错误是“使用序列设置数组”。第一个函数和边界条件求解两个耦合方程,然后我使用这些结果来评估我给出的方程。我曾尝试在一个函数中编写所有方程,但这似乎返回了微不足道的解决方案,即一个充满零的数组。
任何帮助将不胜感激。
【问题讨论】:
-
试试scicomp.stackexchange.com是一个更好的地方
-
谢谢,我会在那里发些东西
-
用
y[5]代替T'重试,而不是y[4]。这能解决问题吗?
标签: python integration ode differential-equations boundary