2016-09-15 1 views
0

ガウスの前方と後方の消去を使用して、最後にはバックスラッシュを行う必要はありません。間違って、毎回私は隅にすべてゼロを得ることはありません私のコードを試してみたが、私は別々にのみ前進消去の作品とあまりにだけ後方排除私のコードを.....しようとした場合ガウスの前方と後方の除去

clc, close all, clear * 
%Input Matrix 
A = input('Enter a matrix: '); 
b = input('Enter the result vector: '); 
% for example this two: 
% A= [1 2 3; 2 1 1; 6 -7 5]; 
% b= [3; 2; 5]; 
Ab= [A, b]; 


%%%%%%%%%% gauss elimination forward & backward elimination%%%%%%%%%%%%%%% 
%Forward elimination 
% A(1,1) is pivot 
factor = A(2,1)/A(1,1); 
Ab(2,:) = Ab(2,:) - factor*Ab(1,:); 
factor = A(3,1)/A(1,1); 
Ab(3,:) = Ab(3,:) - factor*Ab(1,:); 
% A(2,2) is pivot 
factor = Ab(3,2)/Ab(2,2); 
Ab(3,:) = Ab(3,:) - factor*Ab(2,:); 

%Backward elimination 
% A(3,3) is pivot 
factor = A(2,3)/A(3,3); 
Ab(2,:) = Ab(2,:) - factor*Ab(3,:); 
factor = A(1,3)/A(3,3); 
Ab(1,:) = Ab(1,:) - factor*Ab(3,:); 
% A(2,2) is pivot 
factor = Ab(1,2)/Ab(2,2); 
Ab(1,:) = Ab(1,:) - factor*Ab(2,:); 

答えて

2

Aマトリックスではなく、factorAbマトリックスに基づいて設定する必要があります。あなたの(3,2)、(2,3)、(1,3)、(1,2)の値は時間が経つにつれて変化するでしょう。あなたがその因子計算にAbを適切に含めたので、あなたがあなたの前方排除中にこの問題を修正し始めたようです。 最後にAbの各行を「対角」の値で割ることで正規化したい場合があります

+0

ありがとうございました。 – ECasio

+0

Yep!将来、このような短いコードのトラブルシューティングを行う良い方法は、行単位で歩き回り、どのステップで出力が発生していると思われるかが異なることを確認することです。この場合、4番目の要素が予期せず-5になったときに気付くでしょう。 [どのように私はそれをトラブルシューティングです] –

関連する問題