Sympy 无法解决我的方程式并卡住了
Sympy cannot solve my equation and gets stuck
我有一个简单的等式,试图解决使用符号的问题,但是代码卡住了,我没有收到调试错误。我怎样才能正确地做到这一点?
from sympy import *
from sympy import init_printing
init_printing(use_latex = True)
import sympy as sp
from numpy import random
import numpy as np
import math
from decimal import *
timeS = symbols("t")
eq1 = Eq( (-4221.4125*exp(-2750.0*timeS)*sin(6514.4071*timeS) + 10000.0*exp(-2750.0*timeS)*cos(6514.4071*timeS)),8000)
T_off = solve(eq1, timeS )[0]
display("T_off = ",T_off)
你的方程看起来没有解析解,所以你应该改用 nsolve
。 -0.001
和 0
之间有一个根,所以平分法给出:
In [59]: nsolve(eq1, timeS, [-0.001, 0])
Out[59]: 3.46762014687136e-5
这是一个病态方程。通过将两边除以 10**4
重新缩放并将 timeS
替换为 Symbol(x)/10**4
并使用 nsolve
>>> eq2 = eq1.func(eq1.lhs/10**4, eq1.rhs/10**4).subs(timeS, symbols('x')/10**4)
>>> from sympy import nsolve
>>> nsolve(eq2,0)
0.346762014687135
所以timeS ~= 0.35e-4
。 sqrt
函数自动缩放总和,因此 sqrt(eq1.rewrite(Add))
会将项的系数减少到小于 1,但这种简化目前不是一般表达式的 SymPy 简化的一部分。
我有一个简单的等式,试图解决使用符号的问题,但是代码卡住了,我没有收到调试错误。我怎样才能正确地做到这一点?
from sympy import *
from sympy import init_printing
init_printing(use_latex = True)
import sympy as sp
from numpy import random
import numpy as np
import math
from decimal import *
timeS = symbols("t")
eq1 = Eq( (-4221.4125*exp(-2750.0*timeS)*sin(6514.4071*timeS) + 10000.0*exp(-2750.0*timeS)*cos(6514.4071*timeS)),8000)
T_off = solve(eq1, timeS )[0]
display("T_off = ",T_off)
你的方程看起来没有解析解,所以你应该改用 nsolve
。 -0.001
和 0
之间有一个根,所以平分法给出:
In [59]: nsolve(eq1, timeS, [-0.001, 0])
Out[59]: 3.46762014687136e-5
这是一个病态方程。通过将两边除以 10**4
重新缩放并将 timeS
替换为 Symbol(x)/10**4
并使用 nsolve
>>> eq2 = eq1.func(eq1.lhs/10**4, eq1.rhs/10**4).subs(timeS, symbols('x')/10**4)
>>> from sympy import nsolve
>>> nsolve(eq2,0)
0.346762014687135
所以timeS ~= 0.35e-4
。 sqrt
函数自动缩放总和,因此 sqrt(eq1.rewrite(Add))
会将项的系数减少到小于 1,但这种简化目前不是一般表达式的 SymPy 简化的一部分。