作者std92050 (熊猫大学劣等生)
看板Python
标题[问题] 用sympy做矩阵公式运算
时间Thu Sep 15 21:49:27 2022
对python没有很了解 描述不清的话请见谅==
我想对一个大小2L+1(不特定)的方阵做一些反矩阵的计算 希望算出以L为变数的公式
矩阵的元素可以由一个函数决定 不过这个函数也depend on L
矩阵大概长这样
https://i.imgur.com/G9N7xZf.jpg
其实就是除了对角线旁边两条以外的元素都是0
我目前是想用sympy来算 有查到的方法是用 sympy.FunctionMatrix 和配合
Lambda带入上面提到的函数
来构造这个矩阵 但是最後吐出来的是包含
FunctionMatrix(...) 的东西 不是原本预期的包含L的公式
所以想请问要怎麽修改或是有更没有更好的方法 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.230.43.213 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1663249770.A.B41.html
1F:→ cocoaswifty: np 09/15 21:51
2F:→ std92050: 我记得numpy不能做符号公式计算吧? 09/15 21:52
3F:→ chang1248w: 看起来是头尾两项有瑕疵的转移矩阵 09/15 22:23
4F:→ std92050: 对 其实是把转移矩阵头尾砍掉得来的 09/15 22:43
5F:→ lycantrope: 能手写的出来就可以用sympy 写 09/16 08:46
6F:→ papple23g: 计算了L=0~10 行列式都是0 矩阵不可逆? 09/16 12:02
8F:→ lycantrope: 笔算就知道行列式为0 09/16 12:39
9F:→ std92050: 但我用cloumn operation算看起来应该是可逆的? 不过我是 09/16 13:06
10F:→ std92050: 要把那个矩阵减掉identity再取inverse 不是直接取 09/16 13:07
11F:→ papple23g: 可举例预期输出含L的公式是什麽东西吗? 09/16 15:48
其实要算我要是 (I-r)^{-1}v I是identity r是那个矩阵 v是全部都是1的column vector
因为里面变数实际上只有L 所以结果应该是一个和L有关的向量
12F:推 lycantrope: 应该跟楼上写的一样只是mat要再减I 09/16 15:56
13F:推 papple23g: 那样的话我认为反矩阵元素无法简单用L来表达,因为随着 09/16 16:23
14F:→ papple23g: L增加,矩阵元素涉及的计算因子会越多,意味着公式的型 09/16 16:23
15F:→ papple23g: 态会越复杂,就像量力的矩阵在一些系统下,矩阵越大求 09/16 16:23
16F:→ papple23g: 解的结果就越精确,但大部分还是得靠numpy数值解去逼近 09/16 16:23
17F:→ papple23g: 正确结果 09/16 16:23
18F:→ chang1248w: 大小要怎麽是2L? 09/16 17:19
19F:→ chang1248w: 中心点是1/3旁边的0? 09/16 17:20
20F:推 lycantrope: 如果是i, j 从1开始中心点应该是 L+1 一直到2L+1 09/16 17:23
22F:→ lycantrope: 跟sympy不熟,还想不到sympy怎麽改写 09/16 17:30
※ 编辑: std92050 (61.230.92.210 台湾), 09/16/2022 19:29:34
24F:→ papple23g: 我用sympy令a=1/3,b=2/3,你可以看到光是L=3时,(I-r)^ 09/17 00:25
25F:→ papple23g: -1的表达式已经变得很夸张了,更遑论要用L表达後续的计 09/17 00:25
26F:→ papple23g: 算输出 09/17 00:25
27F:→ std92050: 我再研究看看 感谢 09/17 22:52