使用范围创建的Sympy Call符号



我试图为DH表创建符号,但要写出符号,请创建一个函数。但是,我不知道在制作表时如何调用变量。以下是问题简介:

from sympy import *

def naming_symbols(N):
theta = symbols(f"theta:{N}")
L = symbols(f"L:{N}")
alpha=symbols(f"alpha:{N}")
d=symbols(f"d:{N}")
pprint(theta[:])
pprint(L[:])
pprint(alpha[:])
pprint(d[:])
return theta, L, alpha, d

naming_symbols(3)
print(theta2)

退货:

"*FileName*", line 18, in <module>
print(theta2)
NameError: name 'theta2' is not defined
(θ₀, θ₁, θ₂)
(L₀, L₁, L₂)
(α₀, α₁, α₂)
(d₀, d₁, d₂)
Process finished with exit code 1

这对于";theta_2";以及";θ";

如何调用创建的符号?在中,我想把";theta2";在表中,但它不将其识别为已创建的符号。我想我需要把这些符号加入字典或其他什么东西,但我也不知道怎么做。我以为这个创造会把它加到字典里。。。但是好吧,请帮忙。

Symbol(SymPy创建的python对象(和分配给它的变量之间有区别

>>> x = 1
>>> y = 1

您创建的符号也是如此。

>>> my_x = Symbol('x'); my_x
x

惯例是经常使用与Symbol名称匹配的变量名称,但这不是必需的。请注意,打印my_x(变量(显示x(符号(。

symbols命令创建一个符号元组。你可以随心所欲地调用这个元组,就像你可以用数值一样

>>> v = (1, 2); v[0]
1
>>> my_v = symbols('v:3'); my_v[0]
v0

您的功能是创建符号元组。您正在从函数中分配(并返回(这些元组。为了在函数的外部使用那些本地,您必须为元组的元素创建python变量名,或者您可以通过索引访问它们,就像上面定义的元组v一样:

>>> one, two = v  # assigning names for the tuple elements
>>> one
1
>>> v[1]  # using index to the tuple name `v`
2
>>> naming_symbols(2)
(θ₀, θ₁)
(L₀, L₁)
(α₀, α₁)
(d₀, d₁)
((theta0, theta1), (L0, L1), (alpha0, alpha1), (d0, d1))
>>> t, l, a, d = _  # assigning names to the tuples
>>> t[0]
theta0
>>> t0,t1 = t  # assigning names to the elements of a tuple
>>> t0
theta0

___可能到此为止,但请注意。。。

可以使用var命令而不是symbols命令本地创建变量的名称。学习如何执行上述操作可能会更好,但这是使用var:的一个示例

>>> def do(n):
...     var(f'y:{n}')
...

在运行此函数之前,y0未定义

>>> y0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'y0' is not defined

但在以n=3运行它之后,y0、y1和y2将存在于python的本地命名空间中:

>>> do(3)
>>> y0
y0
>>> y1
y1

请注意,使用了命名约定——通过匹配的变量名调用SymPy符号。只有当您创建的Symbol名称是有效的python变量名称时,这才有效。因此,尽管var('x(1)')将创建一个名为x(1)的Symbol,但您不能键入它来使用变量:

>>> var('x(1)')
x(1)
>>> x(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'Symbol' object is not callable
>>> y=_  # assign the name y to this Symbol
>>> y
x(1)

相关内容

  • 没有找到相关文章

最新更新