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

时间:2017-11-21 08:32:33

标签: python-2.7 equation

任何人都可以告诉我如何解决一个无法与其他变量分离的未知方程式!

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值!

1 个答案:

答案 0 :(得分:0)

您实际上是在尝试找到此函数的根。一般来说,你可以写:

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尝试它,应该可以工作。