Sympy检测等式是否只能迭代计算

2024-04-27 00:01:45 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我想计算一个等式。通常,我求解一个特定变量的方程,然后对它进行lambdify求值。这里有一个例子:

sp.var('a b')
c = sp.Eq(4 / a, 3 * b)
d = sp.solve(c, a)
func = sp.lambdify(d[0].free_symbols, d[0], 'numpy')
display(func)

Output: <function _lambdifygenerated(b)>

一切都按预期进行,因为可以为参数a求解方程。当方程只能迭代求解时,问题就出现了。下面是另一个例子:

sp.var('a b')
c = sp.Eq(1 / sp.sqrt(a), sp.log(b + 1 / sp.sqrt(a)))
display(sp.solve(c, a))

NotImplementedError: multiple generators [log(b + 1/sqrt(a)), sqrt(a)]
No algorithms are implemented to solve equation -log(b + 1/sqrt(a)) + 1/sqrt(a)

对于参数a,该方程无法直接求解。相反,必须使用迭代方法

检测方程只能迭代求解的一种方法是使用处理特定异常的try ... catch构造。还有其他方法吗


Tags: 方法logfree参数vardisplaysqrtsp