matlab 열 주 원 소 거 법

13692 단어
MATLAB 열 주 원 소 거 법 실현
열 주 원 Gauss 소원 법 알고리즘 에 대한 자신의 이 해 를 바탕 으로
matlab 언어의 열 주 원 Gauss 소 거 법 을 썼 습 니 다.
열 주 원 소 거 법 은 Gauss 소 거 법 에 대한 최적화 버 전 이다.
컴퓨터 에 반올림 오차 가 있 기 때 문 입 니 다.
그래서 주 원 소 는 분모 할 때 너무 작 으 면 안 됩 니 다.
그렇지 않 으 면 어떤 구 해 를 할 때 비교적 큰 오 차 를 일 으 킬 수 있다.
그래서 가장 큰 주 원 을 뽑 아야 합 니 다.
말 이 많 지 않 으 면 코드 를 직접 올 립 니 다. (코드 를. m 스 크 립 트 로 저장 합 니 다)
%      Gauss       
%A       ,b        
%           x 
A=input('          A:');
b=input('        b:');
b=b';
[m,n]=size(A);  %AAif m~=n
    error('  A          !');
    return;
end
if m~=size(b)
    error('b      A        ');
    return;
end
if rank(A)~=rank([A,b])
    error('A               ,         ');
    return;
end
c=n+1;
A(:,c)=b;   % A             
x=zeros(length(b),1);
C=zeros(1,c);
%               
for i=1:n-1
    a=abs(A(i,i));  % a  i            
    [u,j]=max(abs(A(i:m,i)));    %   i       ,       u,           j
    j1=j+i-1;
    if j1~=i
        C=A(i,:);
        A(i,:)=A(j1,:);
        A(j1,:)=C;
    end
    %    
    for k=i+1:n
        A(k,:)=A(k,:)-(A(k,i)/A(i,i))*A(i,:);
    end
end
%      
x(n)=A(n,c)/A(n,n);
for m=n-1:-1:1
    x(m)=(A(m,c)-A(m,m+1:n)*x(m+1:n))/A(m,m);
end
%      
disp('              A=');
disp(A(:,1:n));
disp('          b=');
disp(A(:,c));
disp('   x=');
disp(x);
disp('A       :');
disp(det(A(:,1:n)));

비판 과 지적 을 환영 합 니 다.

좋은 웹페이지 즐겨찾기