24小时热门版块排行榜    

查看: 2405  |  回复: 1

dangyuluo

新虫 (初入文坛)

[求助] Matlab对两个矩阵做==相等比较运算结果不正确 已有1人参与

是这样,这个问题我遇到过好几次,一直没有解决。下面是问题的样例

我先创建一个rand矩阵
a = rand(5);

求其逆矩阵a_inv
a_inv = inv(a);
再求其伴随矩阵a_adj //adj函数在文末附上
a_adj = adj(a);

按照线性代数的结论,a_inv = a_adj / |a|

但是在程序里面我输入:
a_inv == a_adj / det(a)

返回的是一个0矩阵,按理来说是相等的啊

ans =

     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0



我觉得是精度的问题,哪位大神能帮忙解决这个基础的问题?


附 adj函数:

function B = adj(A)
%求伴随矩阵
%ADJ Matrix adjoint.
% ADJ(A) is the adjoint matrix of square matrix A.
% It is computed using the Cayley-Hamilton Theorem.
% The inverse of A is: INV(A) = ADJ(A)/det(A).
%
% Matrices that are not invertable still have an adjoint.

%written by Paul Godfrey, April, 1998
%pjg@mlb.semi.harris.com

ce = poly(eig(A));
cesize = max(size(ce));
p = [0 ce(1cesize-1))];
s = (-1)^(max(size(A))+1);
B = s*polyvalm(p,A);
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

感谢参与,应助指数 +1
在a_inv == a_adj / det(a)之前,加入代码,显示要比较的2个矩阵到command window看看想等不相等,语句末尾不要加分号
a_inv
a_adj/det(a)
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2014-04-08 17:54:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 dangyuluo 的主题更新
信息提示
请填处理意见