在使用Mathematica的时候,对角矩阵的生成是有内置函数的,但是准对角矩阵的生成则要自己动手。作者总结了三条非常便捷的方法,只需要寥寥几行代码即可完成。
工具/原料
Mathematica 11.0
方法/步骤
1
首先我们观察内置函数DiagonalMatrix函数。该函数要求列表必须是单层向量,如果我们尝试直接把矩阵放进去就报错。我们无法直接用该函数生成准对角矩阵。
2
方法1(♥♥♥♥):使用替换 /.首先,我们先用几个未定义符号m1,m2,m3等等来代替对角线元素,然后使用 /. 后面跟一个替换规则的列表来实现。如图。
3
接着,我们使用ArrayFlatten自动把0变成零矩阵。该函数详细用法可查阅帮助文档。如图,完成目标。
4
方法2(♥♥):使用Table重新构造我们的矩阵列表。myMatrixs是我们希望放在对角线上的矩阵列表,我们取出每个元素,在前后补恰当个数的0.
5
方法3(♥♥♥♥♥):使用ToString和ToExpression,发挥解释型语言的优势。核心代码只需要两行。首先使用Table生成一个字符串列表{'myMatrixs[[1]]', 'myMatrixs[[2]]', 'myMatrixs[[3]]'}接着使用DiagonalMatrix把这个有猫腻的向量变为对角矩阵。然后ToExpression变魔术,再ArrayFlatten即可.
注意事项
方法3非常简洁而且好用。读者也可以自己写成函数来调用。把'myMatrixs'换成ToString[形参]就可以了。