【问题标题】:SymPy returns no solution for a simple set of trigonometric equationsSymPy 不返回简单三角方程组的解
【发布时间】:2022-08-17 15:29:07
【问题描述】:

我试图解决以下方程:

cos(a) - cos(b) - 1 = 0

罪(a) - 罪(b) = 0

使用 SymPy 我没有得到(a,b) 的解决方案。

from sympy import symbols, sin, cos, solve, Eq

a, b = symbols(\"a b\")
eq1 = Eq(cos(a) - cos(b) - 1, 0)
eq2 = Eq(sin(a) - sin(b), 0)
solve([eq1, eq2], [a, b]

但是,至少存在一种解决方案:

a = 60°

b = 120°

为什么 SymPy 不能求解三角方程组?

    标签: python sympy trigonometry


    【解决方案1】:

    我认为solve 不是这项工作的最佳工具。它可能会失败,因为可能有很多解决方案。您可以尝试使用nsolve 对系统进行数值求解。但是,在您的情况下,最初的猜测确实很“挑剔”。例如:

    from sympy import *
    a, b = symbols("a b")
    eq1 = Eq(cos(a) - cos(b) - 1, 0)
    eq2 = Eq(sin(a) - sin(b), 0)
    
    nsolve((cos(a) - cos(b) - 1, sin(a) - sin(b)), [a, b], (0.5, 0.5))
    # ZeroDivisionError: matrix is numerically singular
    
    # one solution
    nsolve((cos(a) - cos(b) - 1, sin(a) - sin(b)), [a, b], (0.5, 0.6))
    # out: Matrix([[7.33038285837618], [8.37758040957278]]) # radians
    
    # the solution you are looking for
    nsolve((cos(a) - cos(b) - 1, sin(a) - sin(b)), [a, b], (0.5, 0.95))
    # out: Matrix([[1.04719755119660], [2.09439510239320]])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多