异常在python中使用solve()函数时引发错误



我正试图用以下代码在python中求解一个方程:

import math
from math import *    # cos, sin, asin, sqrt, radians, pi, tanh, log, exp
import time
from sympy import *
from sympy.solvers import solve
m = 0.2; d = 0.08; A = 0.25*math.pi*(d**2); g = 9.80665; Cd = 0.47; P = 1.145; H = 15; Vdr = 5; Vwx = 1; Vwz = 1;
t = symbols('t')
y = Eq(((m/(A*Cd*P))*log(-exp(A*H*Cd*P/m)*(tanh(((0.5/m)*sqrt(2*A*Cd*P*g*m)*t)**2-1)))), 0)
tHit = solve(y, t)
print("t =", tHit)
x = (2*m/(A*Cd*P))*log(1+(0.5*A*Cd*P/m)*(Vdr+Vwx)*tHit)
z = Vwz*tHit
print("x =", x, "   z =", z)

几分钟后,我在使用solve()函数的行中得到了Exception Thrown错误。有人知道原因是什么吗?我对python没有太多经验,所以如果代码有问题,我想知道。感谢

**编辑**所以我终于修复了代码,它现在可以工作了:

import math
from math import * 
import time
import sympy
from sympy import *
m = 0.2; d = 0.08; A = 0.25*math.pi*(d**2); g = 9.80665; Cd = 0.47; P = 1.145; H = 15; Vdr = 5; Vwx = 1; Vwz = 1;
t = Symbol('t')
y = (m*sympy.log(-sympy.exp((A*Cd*H*P)/m)*(sympy.tanh((0.5*t*(2*A*Cd*P*g*m)**(1/2))/m)**2 - 1)))/(A*Cd*P)
print("y =", y)
tHit = nsolve(y, t, 0)
print("t =", tHit)
x = (2*m/(A*Cd*P))*log(1+(0.5*A*Cd*P/m)*(Vdr+Vwx)*tHit)
z = Vwz*tHit
print("x =", x, "   z =", z)

此代码中没有异常。它永远不会结束。我运行这个代码有一段时间了,但一直没有完成。然而,内存一直在增加,直到占用了所有可用的内存。

你确定这个方程可以用sympy解吗?也许是算法对这样的方程无效?

不幸的是,sympy没有完成的估计(估计sympy函数的进度(,所以你现在可以:

  1. 尝试在其他软件中解决此问题(可能是Wolfram Alpha?(
  2. 给它更多的资源并等待
  3. 试着把方程改写成其他形式,可能用sympy来求解

相关内容

  • 没有找到相关文章

最新更新