Sympy sqrt函数“包含生成器集的一个元素”

2024-09-28 01:30:10 发布

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

我一直在尝试使用sympy的solvers.solve_poly_系统,但当我使用sqrt函数求解方程时,我得到以下错误:

sympy.polys.polyerrors.PolynomialError: sqrt(x1) contains an element of the set of generators.

以下是相关代码:

# An array of variables is declared as symbols in sympy. This has already worked to solve equations/derivatives.

for x in range(len(coordArr)):
    coordArr[x][0] = symbols(xCoords[x], real = True)
    coordArr[x][1] = symbols(yCoords[x], real = True)

# Then a specific system of equations using the variables in the array is fed into the system solver.

print(sympy.solvers.solve_poly_system([(5*(sympy.sqrt(coordArr[0][0])*2 + 2 - 3)), (2*(coordArr[0][1] - 3))], coordArr[0][0],coordArr[0][1]))

在这一点之后,我收到了错误。我发现了一些othersimilar帖子,这些帖子似乎可以通过使用sympy.sqrt来解决,但是我做了同样的事情,并继续收到相同的错误。谢谢你的帮助


Tags: oftheinis错误sqrtvariablesarray
1条回答
网友
1楼 · 发布于 2024-09-28 01:30:10

当您使用的生成器在表达式中未显示为整数幂时,您将看到此错误:

>>> Poly(sqrt(x) + x, x)
...
sympy.polys.polyerrors.PolynomialError: sqrt(x) contains an element of the set of generators.

如果不提供生成器,多边形将创建一个包含两个生成器的多项式:xsqrt(x)。我的建议是用solvenonlinsolve来表示你的方程组

>>> solve((5*(sqrt(x)*2 + 2 - 3), 2*(y - 3)), (x, y))
{x: 1/4, y: 3}
>>> nonlinsolve((5*(sqrt(x)*2 + 2 - 3), 2*(y - 3)), (x, y))
FiniteSet((1/4, 3))

相关问题 更多 >

    热门问题