checking if a value is equal to zero
54 ビュー (過去 30 日間)
古いコメントを表示
I need a script to find whether the value of a determinant of a matrix is equal to zero, and to end the program if it is and carry on if it isn't.
0 件のコメント
回答 (2 件)
Steven Lord
2017 年 12 月 19 日
Don't use det to try to determine if a matrix is singular.
A = 0.1*eye(400);
det(A)
B = 1e10*[1 1; 1 1+eps];
det(B)
A is a non-zero scalar multiple of the identity matrix and so is not singular, but the determinant underflows to 0.
B is extremely close to singular, but its determinant is close to 20000 because its elements are so large.
Instead of using det to determine if a matrix is singular, use cond to compute the condition number. The closer to 1 the condition number is, the better conditioned the problem is.
cond(A) % 1
cond(B) % around 2e16
0 件のコメント
the cyclist
2017 年 12 月 19 日
You could put code like this in your function.
% Make up a matrix. Use your matrix here.
M = rand(7);
% Calculate determinant
detM = det(M);
tol = 1.e-6; % Should not check floating point numbers for exact equality, so define a tolerance
if abs(detM) < tol
return
end
1 件のコメント
the cyclist
2017 年 12 月 19 日
If you use this answer, be sure to consider Steven Lord's advice, too, about using determinant.
参考
カテゴリ
Help Center および File Exchange で Linear Algebra についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!