假设我想计算一个等式。通常,我求解一个特定变量的方程,然后对它进行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
构造。还有其他方法吗
目前没有回答
相关问题 更多 >
编程相关推荐