我在其他地方发现x = sp.symbols('x1:{}'.format(n))
创建绑定到变量n
的{{1}}变量的集合。
现在,我想使用https://docs.sympy.org/latest/modules/solvers/solveset.html#sympy.solvers.solveset.nonlinsolve
解决非线性方程组。我可以构造一个包含
我方程组中每一行的表达式,
例如像x
之类的东西。
如何使x1**2+4*x2**3
将它们转换成自己的方程式?
在文档中给出的示例中,我们编写
sympy
之类的东西传递给[x1**2+4*x2**3,2*x1+3*x3]
,
但是如何构造这些表达式(它们的类型是什么?)
自动,无需对它们进行硬编码?
答案 0 :(得分:1)
在Add
的对称实例中,以上表达式是符号乘积的总和。
所有符号事物都是使用Basic的子类实现的 类。首先,您需要使用Symbol(“ x”)或数字创建符号 使用Integer(5)或Float(34.3)。然后构造表达式 使用SymPy中的任何类。例如Add(Symbol(“ a”),Symbol(“ b”)) 给出Add类的一个实例。您可以调用所有方法 特定的类支持。
在您的示例中,您需要将x1
,x2
,x3
声明为符号:
x1, x2, x3 = symbols('x1 x2 x3')
一旦定义了符号,sympy就会自动将字符串转换为其自己的表达式以进行计算。要检查sympy表达式的类型,请使用sympify
a = Symbol("a")
b = Symbol("b")
c = 'a**2 + b'
print c
(a + b)**2
type(c)
# string
from sympy import sympify
sympify(c)
type(sympify(c))
# <′...′>