如何解决使用 Sympy 将变量名称中的前缀快速分配到 Matrix - 使用 Matlab 的示例
使用 Matlab,我可以轻松给出符号矩阵元素的前缀:
例如,像这样:
Mat4x4_SYM = sym('sp_',[4,4]);
tril(Mat2x2_SYM.') + triu(Mat2x2_SYM,1)
给出:
Mat4x4_SYM =
[ sp_1_1,sp_1_2,sp_1_3,sp_1_4]
[ sp_1_2,sp_2_2,sp_2_3,sp_2_4]
[ sp_1_3,sp_3_3,sp_3_4]
[ sp_1_4,sp_2_4,sp_3_4,sp_4_4]
如何找到对 Python Sympy 执行相同操作的方法?
我试过:
from sympy import symbols,Matrix
def f(i,j):
if i == 0 and j == 0:
return 'sp_1_1'
elif i == 0 and j == 1:
return 'sp_1_2'
elif i == 1 and j == 0:
return 'sp_1_2'
...
Mat4x4_SYM = Matrix(4,4,lambda i,j: f(i,j))
如您所见,我想在符号变量名称中强制此矩阵对称。
有没有人遇到过同样的问题,可以像在 Matlab 中一样轻松定义符号变量名称的前缀?
如果是,是否有快速执行此操作的方法?
解决方法
使用列表推导式和 f 字符串:
In [9]: Matrix([[Symbol(f'sp_{min(i,j)}{max(i,j)}') for i in range(1,4+1)] for j in range(1,4+1)])
Out[9]:
⎡sp₁₁ sp₁₂ sp₁₃ sp₁₄⎤
⎢ ⎥
⎢sp₁₂ sp₂₂ sp₂₃ sp₂₄⎥
⎢ ⎥
⎢sp₁₃ sp₂₃ sp₃₃ sp₃₄⎥
⎢ ⎥
⎣sp₁₄ sp₂₄ sp₃₄ sp₄₄⎦
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。