使用范围创建的 Sympy Call 符号
Sympy Call symbols created using a range
我正在尝试能够为 DH table 创建符号,而是将其写出来,创建一个函数。但是,我不知道如何在制作table时调用变量。这是问题的概要:
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)
returns:
"*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”和“theta”相同
如何调用创建的符号?例如,我想将“theta2”放在 table 中,但它不会将其识别为创建的符号。我想我需要将符号添加到字典或其他东西中,但也不知道该怎么做。我还以为创作会把它加到字典里呢……不过……好吧,求助啊
符号(SymPy 创建的 python 对象)和您分配给它的变量之间存在差异。您已经知道可以随意调用 1 之类的值:
>>> x = 1
>>> y = 1
您创建的符号也是如此。
>>> my_x = Symbol('x'); my_x
x
惯例是经常使用与符号名称匹配的变量名称,但这不是必需的。请注意,打印 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 符号。这仅在您创建的符号名称是有效的 python 变量名称时才有效。因此,尽管 var('x(1)')
将创建一个名称为 x(1)
的符号,但您不能键入它来使用变量:
>>> 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)
我正在尝试能够为 DH table 创建符号,而是将其写出来,创建一个函数。但是,我不知道如何在制作table时调用变量。这是问题的概要:
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)
returns:
"*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”和“theta”相同
如何调用创建的符号?例如,我想将“theta2”放在 table 中,但它不会将其识别为创建的符号。我想我需要将符号添加到字典或其他东西中,但也不知道该怎么做。我还以为创作会把它加到字典里呢……不过……好吧,求助啊
符号(SymPy 创建的 python 对象)和您分配给它的变量之间存在差异。您已经知道可以随意调用 1 之类的值:
>>> x = 1
>>> y = 1
您创建的符号也是如此。
>>> my_x = Symbol('x'); my_x
x
惯例是经常使用与符号名称匹配的变量名称,但这不是必需的。请注意,打印 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 符号。这仅在您创建的符号名称是有效的 python 变量名称时才有效。因此,尽管 var('x(1)')
将创建一个名称为 x(1)
的符号,但您不能键入它来使用变量:
>>> 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)