代码之家  ›  专栏  ›  技术社区  ›  rofiques salehin

当未知无法单独放置时,如何求解方程

  •  0
  • rofiques salehin  · 技术社区  · 7 年前

    有谁能告诉我,对于一个无法与其他变量分离的未知变量,如何求解这类方程!

    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 回复  |  直到 5 年前
        1
  •  0
  •   brunostuyts    7 年前

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

    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
    

    然后,您可以使用 brentq function 来自scipy。优化以找到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尝试过,应该可以。