% 아직 배우는단계라서..소스가 많이 더럽다...그래도저장!!
%만드느라 힘들었다..으...
function y = ms_gaus3(a)
% MS_GAUS3(A) is calculate det(A)
% a : Matrix
n=size(a);
dgEND=n(1,2)-1;
if(n(1,1)<(n(1,2)-1))
fprintf('\n\n\t\twarring\n\n\tUnder-determined!!!!!\n\n\n')
return;
end
if(n(1,1)==(n(1,2)-1) || n(1,1)>(n(1,2)-1))
x=[1:n(1,2)-1]; tmp=[1:n(1,2)];
for i=1:(n(1,1)-1)
for j=1:n(1,1)-i
if a(i,i)==0
tmp=a(i,:);
for k=0:(n(1,1)-i-1)
a(i+k,:)=a(i+(k+1),:);
end
a(n(1,1),:)=tmp;
end
a(i+1,:)=a(i+1,:)-a(i,:).*(a(i+1,i)/a(i,i));
if(j~=(n(1,1)-i))
tmp=a(i+1,:);
for k=1:(n(1,1)-1)-i
a(i+k,:)=a(i+(k+1),:);
end
a(n(1,1),:)=tmp;
end
end
end
for i=(n-1):-1:1
x(n(1,2)-1)=a(n(1,1)-1,n(1,2)-1);
end
end
for i=1:dgEND
if a(i,i)==0
fprintf('해가 무수히 많습니다\n')
return;
end
end
%%
x=diag(a);
x(dgEND)=a(dgEND,dgEND+1)/a(dgEND,dgEND);
a(dgEND,dgEND+1)=x(dgEND);%x4의값
for j=dgEND-1:-1:1
a(dgEND-j,dgEND)=a(dgEND-j,dgEND).*x(dgEND);
end
i=1;
while dgEND-i~=0
a(dgEND-i,dgEND+1)=(a(dgEND-i,dgEND+1)-sum(a(dgEND-i,dgEND-i+1:dgEND)))/x(dgEND-i);
x(dgEND-i)=a(dgEND-i,dgEND+1);
for j=2:dgEND-i
a(dgEND-j-i+1,dgEND-i)=a(dgEND-j,dgEND-i).*x(dgEND-i);
end
i=i+1;
end
fprintf('미지수들은 순서대로..x,y,z,,,,=>');
x'
'소프트웨어 > MATLAB' 카테고리의 다른 글
MATLAB 웹캠영상 흑백화하기 (0) | 2012.05.27 |
---|---|
MATLAB에서 이미지를 흑백으로 만들기 (0) | 2012.05.27 |
MATLAB에서 웹캠 불러오기 (3) | 2012.05.27 |
matlab 에서 녹화/그래프 촬영 하기 (0) | 2012.04.12 |
matlab, rand함수를 이용한 두점 만나게하기 (0) | 2012.04.12 |
matlab을이용한 원과 궤적이동 (2) | 2012.04.12 |
[MATLAB] rolling pitching을이용한 전투기 이륙 (0) | 2012.04.02 |