Ćwiczenie 2- Eliminacja Gaussa-Jordana
W środowisku Matlab opracować funkcje realizującą eliminacje Gaussa-Jordana. Przeprowadzić obliczenia dla następujących układów równań
a)
x1 + x2 + 3x3 =a
2x1 + 2x2 + x3 =b
2x1 + 3x2 + x3 =c
x1 + x2 + x3 =2
b)
2x1 + x2 + x3 + =5
x1 + 2x2 + x3 + x4 =6
2x1 + 2x2 =4
x1 + x2 + 2x3 + x4 =7
c)
2x1 + x2 + x3 =a
x1 + 2x2 + x3 + x4 =b
2x1 + 2x2 =1
x1 + x2 + 2x3 + x4 =c
a - ilość liter w nazwisku
b - ilość liter w imieniu
c=a/b
d)
10-9x1 + x2 + 2x3 =3
3x1 + 2*10-6x2 + 10-7x3 =10-3
108x1 + 5x2 + x3 =10
Porównać wyniki otrzymane przy użyciu metody z wyborem elementu podstawowego i bez dla układów równań b i d.
Przykładowy skrypt realizujący algorytm eliminacji Gaussa-Jordana bez wyboru elementu podstawowego.
function [X]=gj(Ab);
[ia,ja]=size(Ab);
col_indx=[1:ja];
if(ia+1<=ja)
ja=ia;
end;
il_op=min([ia, ja]);
for i=1:il_op
% poszukuje elementu centralnego
indx=i;
if(abs(Ab(i, indx)) < 10^-14)
disp('Blad')
pause
break
end
Ab(i,:)=Ab(i,:)/Ab(i,indx);
rozm=length(col_indx);
tmp=ones(ia,1)*Ab(i,col_indx);
tmp= tmp .* (-Ab(:,indx)*ones(1,rozm));
tmp(i,:)=zeros(1,rozm); % nie chce zmieniac aktualnego wiersza
Ab(:,col_indx)=Ab(:,col_indx)+tmp;
col_indx(find(col_indx==indx))=[];
end%for
X=Ab;