[問題] 用sympy做矩陣公式運算

看板Python作者 (熊貓大學劣等生)時間1年前 (2022/09/15 21:49), 1年前編輯推噓3(3024)
留言27則, 5人參與, 1年前最新討論串1/1
對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://www.ptt.cc/bbs/Python/M.1663249770.A.B41.html

09/15 21:51, 1年前 , 1F
np
09/15 21:51, 1F

09/15 21:52, 1年前 , 2F
我記得numpy不能做符號公式計算吧?
09/15 21:52, 2F

09/15 22:23, 1年前 , 3F
看起來是頭尾兩項有瑕疵的轉移矩陣
09/15 22:23, 3F

09/15 22:43, 1年前 , 4F
對 其實是把轉移矩陣頭尾砍掉得來的
09/15 22:43, 4F

09/16 08:46, 1年前 , 5F
能手寫的出來就可以用sympy 寫
09/16 08:46, 5F

09/16 12:02, 1年前 , 6F
計算了L=0~10 行列式都是0 矩陣不可逆?
09/16 12:02, 6F

09/16 12:02, 1年前 , 7F

09/16 12:39, 1年前 , 8F
筆算就知道行列式為0
09/16 12:39, 8F

09/16 13:06, 1年前 , 9F
但我用cloumn operation算看起來應該是可逆的? 不過我是
09/16 13:06, 9F

09/16 13:07, 1年前 , 10F
要把那個矩陣減掉identity再取inverse 不是直接取
09/16 13:07, 10F

09/16 15:48, 1年前 , 11F
可舉例預期輸出含L的公式是什麼東西嗎?
09/16 15:48, 11F
其實要算我要是 (I-r)^{-1}v I是identity r是那個矩陣 v是全部都是1的column vector 因為裡面變數實際上只有L 所以結果應該是一個和L有關的向量

09/16 15:56, 1年前 , 12F
應該跟樓上寫的一樣只是mat要再減I
09/16 15:56, 12F

09/16 16:23, 1年前 , 13F
那樣的話我認為反矩陣元素無法簡單用L來表達,因為隨著
09/16 16:23, 13F

09/16 16:23, 1年前 , 14F
L增加,矩陣元素涉及的計算因子會越多,意味著公式的型
09/16 16:23, 14F

09/16 16:23, 1年前 , 15F
態會越複雜,就像量力的矩陣在一些系統下,矩陣越大求
09/16 16:23, 15F

09/16 16:23, 1年前 , 16F
解的結果就越精確,但大部分還是得靠numpy數值解去逼近
09/16 16:23, 16F

09/16 16:23, 1年前 , 17F
正確結果
09/16 16:23, 17F

09/16 17:19, 1年前 , 18F
大小要怎麼是2L?
09/16 17:19, 18F

09/16 17:20, 1年前 , 19F
中心點是1/3旁邊的0?
09/16 17:20, 19F

09/16 17:23, 1年前 , 20F
如果是i, j 從1開始中心點應該是 L+1 一直到2L+1
09/16 17:23, 20F

09/16 17:29, 1年前 , 21F
改papple的np數值解 https://pastebin.com/aX8syE5r
09/16 17:29, 21F

09/16 17:30, 1年前 , 22F
跟sympy不熟,還想不到sympy怎麼改寫
09/16 17:30, 22F
※ 編輯: std92050 (61.230.92.210 臺灣), 09/16/2022 19:29:34

09/17 00:25, 1年前 , 23F
09/17 00:25, 23F

09/17 00:25, 1年前 , 24F
我用sympy令a=1/3,b=2/3,你可以看到光是L=3時,(I-r)^
09/17 00:25, 24F

09/17 00:25, 1年前 , 25F
-1的表達式已經變得很誇張了,更遑論要用L表達後續的計
09/17 00:25, 25F

09/17 00:25, 1年前 , 26F
算輸出
09/17 00:25, 26F

09/17 22:52, 1年前 , 27F
我再研究看看 感謝
09/17 22:52, 27F
文章代碼(AID): #1Z8orgj1 (Python)
文章代碼(AID): #1Z8orgj1 (Python)