私はCramerのルールに精通しており、なぜそれが「役に立たない」のかを知っています。しかし、以下のコードを使用して残差がxxxxE-016のようなものを与えるとき、私は興味があります。ここで、xxxxは数字を表します。私は線形方程式の浮動システムの3〜10の行列サイズで以下のコードを試しました。MATLAB:Cramerのルールの残余エラー
残存誤差が最小限に抑えられるのはなぜですか?
このようなエラーを最小限に抑えるためのコードにdisp(['norm of Cramer's rule residual = ' num2str(norm(A*x-b),4)])
の正しい構文がありませんか?
私は提供されたコードは、私だけが当たり前
function x=cramerr(A,b)
A=input('matrix A =');
b=input('vector b =');
n=size(A,1);
m=size(A,2);
tic;
if n~=m
Error ('The matrix is not square!');
x=[];
else
detA=det(A);
if det(A)~=0
x=zeros(n,1);
for j=1:n
if j~=1 & j~=n
Ab=[A(:,1:j-1) b A(:,j+1:n)];
elseif j==1
Ab=[b A(:,2:n)];
elseif j==n
Ab=[A(:,1:n-1) b];
end
x(j)=det(Ab)/detA;
end %for j=1:n
else
Error('The matrix A has a zero determinant');
x=[];
end % if det(A)~=0
toc;
disp(['norm of Cramer's rule residual = ' num2str(norm(A*x-b),4)]);
end % if n~=m
に使用する構文を疑う、完璧に働いているあなたは、一例として、これを使用することができますしてください
A =[0.373,0.296;0.326,0.260];
b =[0.521;0.456];
おかげ
字下げを修正できますか?あなたのコードは読みにくいです。 – edwinksl
ここのコードは普通のようです。しかし、私があなたが要求するように調整します – dupsy
メソッドが不安定であるという理由だけで、それはあなたに間違った答えを与えることを意味しません。それはちょうどそれがあなたにそれを避けるのに十分である正確な答えを与えないかもしれないことを意味します。その小さな誤差は、機械の精度である 'eps(1)'とほぼ同じです。これは、Cramerのルールがマシンの精度内で正しいことを意味します。 –