python - 在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()
函数的线路上收到异常抛出错误。任何人都知道可能是什么原因?我对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 函数的进度),所以你可以在这一点上:
- 尝试在其他软件中解决这个问题(也许是 Wolfram Alpha?)
- 给它更多资源并等待
- 尝试将方程重写为其他可能通过 sympy 解决的形式
推荐阅读
- react-native - 您可以从 React Native Debugger 重新加载 React Native 应用程序吗?
- javascript - 文本输入实时 JS 验证为浮点数,接受浮点数和逗号
- php - 我可以在 laravel 中显示来自 return ->with() 的消息吗?
- python - 如何使用数组制作 GIF
- c++ - 提升序列化 - 将具有名称空间的犰狳矩阵添加到类
- php - PHP 7.4 类型化属性迭代
- visual-studio-2015 - VS2019 相当于 VS2015 的 vsvars32.bat
- javascript - Javascript regx 检查不区分大小写
- presto - 如何从 presto sql 中的时间戳获取年份?
- javascript - 如何自动释放不必要的内存?