【发布时间】:2020-06-12 16:20:49
【问题描述】:
我正在尝试解决由 4 个微分方程给出的一组边值问题。我在 python 中使用 bvp_solver,我收到错误,指出“在除法中遇到无效值”。我假设这意味着我在某个时候除以 NaN 或 0,但我不确定在哪里。
import numpy as np
from scipy.integrate import solve_bvp
import matplotlib.pyplot as plt
%matplotlib inline
alpha = 1
zeta = 1
C_k = 1
sigma = 1
Q = 30
U_0 = 0.1
gamma = 5/3
theta = 3
m = 1.5
def fun(x, y):
U, dU, B, dB, T, dT, M, dM = y;
d2U = -2*U_0*Q**2*(1/np.cosh(Q*x))**2*np.tanh(Q*x)-((alpha)/(C_k*sigma))*dB;
d2B = -(1/(C_k*zeta))*dU;
d2T = (1/gamma - 1)*(sigma*dU**2 + zeta*alpha*dB**2);
d2M = -(dM/T)*dT + (dM/T)*theta*(m+1) - (alpha/T)*B*dB
return dU, d2U, dB, d2B, dT, d2T, dM, d2M
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, ya[6], yb[6] - 1
x = np.linspace(-0.5, 0.5, 500)
y = np.zeros((8, x.size))
sol = solve_bvp(fun, bc, x, y)
如果我删除 M 和 dM 的最后两个方程,则解决方案可以正常工作。过去我在理解 bvp_solver 的返回数组时遇到了麻烦,但我相信我现在明白了。但每次我添加更多方程时,我都会继续出错。非常感谢任何帮助。
【问题讨论】:
标签: python numpy ode differential-equations boundary