【发布时间】:2021-03-12 06:51:00
【问题描述】:
这是我尝试使用 sympy 求解的方程式代码:
# Import sympy
from math import remainder, tau
from sympy import *
from sympy.solvers import solve
# Define the parameters
nx, ny, nz = [0,0,1]
a,b,c = [0,0,0]
d = 1
t = 9
# Solve the equations
theta = remainder(2*t*sqrt(b**2+c**2+d**2), tau)
delta, beta, gamma = symbols('delta beta gamma')
beta = 7 # Randomly assigned.
eq1 = Eq(tan((delta+beta)/2),nz*tan(theta/2))
eq2 = Eq(ny*tan((delta-beta)/2),nx)
eq3 = Eq(cos((delta+beta)/2)*cos(gamma/2),cos(theta/2))
result = solve([eq1, eq2, eq3], [delta, beta, gamma])
我的问题是基于最后一个参数t。对于当前值,该函数应该是可解的,但它不返回任何结果。如果我将 t 的值更改为其他值,那么我可以得到结果。例如,如果t=99,则结果如下所示
[(-12.0619298297468, 9.00000000000000, 7.46580816699663e-8*I),
(-12.0619298297468, 9.00000000000000, 12.5663706143592 - 7.46580045560101e-8*I)]
为什么我无法从第一个 t 值得到结果?我该如何解决这个问题?谢谢!!
【问题讨论】:
-
在您的示例中
ny是什么? -
最好贴一段完整的代码来演示问题
-
@Oscar Benjamin 抱歉,我的原始代码中有错字,刚刚修复
-
您将
beta创建为symbol,然后替换为数字。 -
@hpaulj 感谢您的评论!在我当前的设置中,必须指定
beta以使delta有意义。
标签: python sympy equation equation-solving