未知数不能单独放置时如何解方程

How to solve equation when the unknown cannot be placed separately

谁能告诉我如何解这种方程式,其中一个未知数不能与其他变量分开!

L_1=(D/f)*(((1- M**2)/(gamma*M**2))+((1+gamma)/(2*gamma))*math.log(((1+gamma)*M**2)/(2+(M**2*(gamma-1)))))

我想在已知所有其他值的情况下找到 M 值!

您实质上是在尝试找到此函数的根。一般而言,您可以这样写:

f(M) - L_1 = 0

根据这些知识,为你的方程创建一个函数:

import numpy as np
def myfunc(M, L_1, D, gamma, f):
    return (D/f)*(((1- M**2)/(gamma*M**2))+((1+gamma)/(2*gamma))*np.log(((1+gamma)*M**2)/(2+(M**2*(gamma-1))))) - L_1

然后您可以使用 scipy.optimize 中的 brentq function 来求 M 的根。我在这里使用了一些示例值 L_1 (=1.0),D ( =0.5), gamma (=0.05) 和 f (=0.01) 分别

from scipy.optimization import brentq
root = brentq(myfunc, a=0.01, b=1.0, args=(1.0, 0.5, 0.05, 0.01))
print(root)

用 Python 3 试了一下,应该可以。