[問題] expm算出來的值不是真值?已回收
我遇到一個奇怪的情形
理論上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
12/30 04:22, 1F
→
12/30 17:43, , 2F
12/30 17:43, 2F
→
12/30 17:46, , 3F
12/30 17:46, 3F