[討論] 矩陣解聯立方程式 機率算出來有負的 ><已回收

看板MATLAB作者 (小潔寶)時間14年前 (2011/04/20 10:10), 編輯推噓2(2012)
留言14則, 5人參與, 最新討論串1/2 (看更多)
最近在跑一個演算法 跑出來可以得到一個N*N的矩陣 裡面都是機率 代表狀態之間的轉移機率 接著我要利用解聯立的方法 求出各個狀態的穩定機率 ex. 我的轉移機率矩陣 a=[0.1, 0.2, 0.3; 0.4, 0.5, 0.6; 0.7, 0.8, 0.9] 所以我有一些聯立方程式: 0.1*x+0.4*y+0.7*z=x 0.2*x+0.5*y+0.8*z=y 0.3*x+0.6*y+0,9*z=z 另外多加一個條件(機率總合為1):x+y+z=1 我假設h=[x;y;z]是我欲求的穩定機率 接著我把等號右邊x,y,z移項到左邊: e=eye(3) f=[1,1,1] d=[0,0,0,1] %最右邊的1是x+y+z="1"的1,前三個0是移項後等號右邊的0 於是c=[a'-e;f]; c=[0.1-1, 0.4, 0.7; 0.2, 0.5-1, 0.8; 0.3 0.6 0.9-1; 1 1 1 ] 然後解出 h=c\d; 但我發現我怎麼算 因為我實際上矩陣a裡有幾千個機率值 所以很難每一個每一個式子去檢查 >< 我算出來的h矩陣,也就是各個狀態的穩定機率 竟然都會有負的?! 但機率根本不可能有負的呀... 請問有沒有人可以發現到我哪裡有不對的地方呢? 先謝謝大家! -- ╭。☆ http://www.wretch.cc/album/pinkyvigirl ☆。╮ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.164.26

04/20 10:30, , 1F
四個方程式解三個未知數?
04/20 10:30, 1F

04/20 12:30, , 2F
轉移矩陣.....錯了....
04/20 12:30, 2F

04/20 13:13, , 3F
你的轉移矩陣真的弄錯了
04/20 13:13, 3F

04/20 15:41, , 4F
因為我要算的是狀態機率耶 steady state..
04/20 15:41, 4F

04/20 15:41, , 5F
機率書上解狀態機率 必須再加一個x+y+z=1 機率總和為一
04/20 15:41, 5F

04/20 15:42, , 6F
你的轉移矩陣沒有覺得機率總和怪怪的?
04/20 15:42, 6F

04/20 15:42, , 7F
還是只是例子隨便舉一個沒注意到?
04/20 15:42, 7F

04/20 15:46, , 8F
http://0rz.tw/wnF5A 解法如投影片第10頁 ><
04/20 15:46, 8F

04/20 15:47, , 9F
我在這裡打的轉移矩陣是隨便舉數字的耶 ><"
04/20 15:47, 9F

04/20 15:47, , 10F
只是我的寫法是這樣 用書上例子代算出來都對..
04/20 15:47, 10F

04/20 15:48, , 11F
但代到我的矩陣(4096*4096) 就會有機率是-0.00000000000XX
04/20 15:48, 11F

04/20 15:48, , 12F
就是有很小很小的負 幾乎是零 會是因為狀態數太多的誤嗎?
04/20 15:48, 12F

04/20 15:49, , 13F
我的機率值都有e指數的運算 ><"
04/20 15:49, 13F

04/20 16:25, , 14F
你可能沒做錯 就是MATLAB精確度問題而已
04/20 16:25, 14F
文章代碼(AID): #1Dha2m2H (MATLAB)
文章代碼(AID): #1Dha2m2H (MATLAB)