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

发布于 2025-01-11 08:08:34 字数 562 浏览 0 评论 0原文

帖子“如何转换列表字符串转换为 sympy 变量?”讨论了如何从字符串列表生成 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 post "How can I convert a list of strings into sympy variables?" discusses how to generate SymPy symbols from a list of strings. My question is what steps are needed to use these symbols x, y and z in SymPy calculations?

I tried something along the lines

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)

but I get the error "NameError: name 'x' is not defined". Any help is greatly appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

提赋 2025-01-18 08:08:34

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

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

发生名称错误是因为您尚未定义代码中的 xyz

This is answered by the first listed gotcha in the documentation.

You need to store your symbols into the required variables manually (x = symbols('x')), or import them from sympy.abc (from sympy.abc import x).

The name error is happening because you haven't defined what x, y or z are in your code.

无人问我粥可暖 2025-01-18 08:08:34

您可以使用 var 从字符串列表(或由空格或逗号分隔的名称组成的字符串)在当前命名空间中创建 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 符号的变量。

You can create Python variables in the current namespace from a list of strings (or a string of space or comma separated names) with var:

>>> 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}

In all cases, after issuing the var command you will be able to use variables that have been assigned SymPy symbols with the same name.

与之呼应 2025-01-18 08:08:34

我的列表中有很多项目我希望定义为符号

仅供参考,一个可以以增强方式自动定义符号的片段

nmax = 7
names = ["phi" + str(i) for i in range(nmax)]
sympy_vars = [symbols("\\" + name.replace("phi", "phi_")) for name in names]
globals().update(dict(zip(names, sympy_vars)))
phi0

这会产生一个很好的 LaTeX 类型输出,例如, Jupyter 笔记本。

that I have a lot of items in my list that I wish to define as symbols

Just FYI, a snippet which can automatically define the symbols in an enhanced fashion

nmax = 7
names = ["phi" + str(i) for i in range(nmax)]
sympy_vars = [symbols("\\" + name.replace("phi", "phi_")) for name in names]
globals().update(dict(zip(names, sympy_vars)))
phi0

This yields a nice LaTeX type output in, e.g., jupyter notebooks.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文