我试图为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)