[問題] expm算出來的值不是真值?已回收

看板MATLAB作者 (mingray/nosql)時間15年前 (2008/12/29 19:04), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串1/1
我遇到一個奇怪的情形 理論上matrix exp應該是eigen vector * diag(exp(eigen values)) * eigen vec^-1 但是我用expm算出來的結果居然有點出入 能問一下我的想法哪邊出問題? Orz 假設[v,d]=eig(A) 1. expm算出來的應該與 v*diag(exp(diag(d)))*inv(v)相同 2. expm(A*10)應該與v*diag(exp(diag(d*10)))*inv(v)相同 以下是我用來檢驗的程式 -- clc; clear; % 產生亂數 為保證值一定相同所以鎖定亂數種子 rand('twister', 0); A = rand(8,8) * 10; B = A * 10; [v1,d1]=eig(A ); [v2,d2]=eig(B ); % aaa bbb ccc為檢查理論解與expm的差值 aaa = expm(A ) - v1 * diag(exp(diag(d1 ))) * inv(v1); norm(aaa) % 應該會趨近0 bbb = expm(B ) - v2 * diag(exp(diag(d2 ))) * inv(v2); norm(bbb) % 應該會趨近0 ccc = expm(B ) - v2 * diag(exp(diag(d1 * 10 ))) * inv(v2); norm(ccc) % 應該會趨近0但是都沒有Orz norm(v1-v2) norm(d1-d2/10) norm(d2-d1*10) -- 做這個是要用來算狀態轉移矩陣的 原本的式子是學長留下但是因為要算很多次速度有點慢 我想嘗試加速但是卡在這邊... -- 給我去買角色卡 /+ \ ┌─╖ mingray / nosql 請給我追加型大包包 \ (OwO ) │椪║ / |+|\__ │柑║ web site ( ) | ̄ ̄ ̄ ̄| | └╥╜ http://mingray.googlepages.com ( v | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ v > | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.201.115

12/30 04:22, , 1F
matlab的exp是做elementwise的運算
12/30 04:22, 1F

12/30 17:43, , 2F
我是問expm啊@@a 而且理論上v d inv(v)不是應該等於expm?
12/30 17:43, 2F

12/30 17:46, , 3F
還是你是指我matrix exp應該打矩陣指數?
12/30 17:46, 3F
文章代碼(AID): #19MAx648 (MATLAB)