将字符串列表 SymPy 转换为符号并在求解集中使用

Convert list of strings SymPy to symbols and use in solveset

post“”讨论了如何从字符串列表生成 SymPy 符号。我的问题是在 SymPy 计算中使用这些符号 x、y 和 z 需要哪些步骤?

我尝试了一些方法

from sympy import symbols, solveset

var_as_strings = ['x', 'y', 'z']
var_as_symbol_objects = [sympy.symbols(v) for v  in var_as_strings]
var_as_symbol_objects

for x1, x2 in zip(var_as_symbol_objects, var_as_strings):
    x1 = symbols(x2)

soln = solveset(x-y-z, x)

但我收到错误“NameError:名称 'x' 未定义”。非常感谢任何帮助。

the documentation.

中列出的第一个陷阱回答了这个问题

您需要手动将符号存储到所需的变量中 (x = symbols('x')),或者从 sympy.abc 中导入它们 (from sympy.abc import x)。

出现名称错误是因为您尚未在代码中定义 xyz

您可以使用 var 从字符串列表(或 space 或逗号分隔名称的字符串)在当前名称 space 中创建 Python 变量:

>>> names = 'x y z'  # or 'x, y, z'
>>> var(names)
(x, y, z)
>>> var(list('xyz'))
[x, y, z]
>>> var(set('xyz'))
{x, y, z}

在所有情况下,在发出 var 命令后,您将能够使用已分配有相同名称的 SymPy 符号的变量。