Sie sind auf Seite 1von 4

1) Using Matrix Inversion method :

1 1 −1 𝑥 −3
[ 2 −3 4 ] [𝑦] = [ 23 ]
−3 1 −2 𝑧 −15

A = [1 1 -1;2 -3 4;-3 1 -2];


B = [-3;23;-15];
X = linsolve(A,B)

X =

2.00000
-1.00000
4.00000

MATLAB program: Gaussian elimination

function x = Gauss(A, b)
% Solve linear system AX = b
% using Gaussian elimination
% A is an n by n matrix
% b is an n by k matrix (k copies of n-vectors)
% x is an n by k matrix (k copies of solution vectors)

[n, n] = size(A); % Find size of matrix A


[n, k] = size(b); % Find size of matrix b
x = zeros(n,k); % Initialize x
for i = 1:n-1
m = -A(i+1:n,i)/A(i,i); % multipliers
A(i+1:n,:) = A(i+1:n,:) + m*A(i,:);
b(i+1:n,:) = b(i+1:n,:) + m*b(i,:);
end;

% Use back substitution to find unknowns


x(n,:) = b(n,:)/A(n,n);
for i = n-1:-1:1
x(i,:) = (b(i,:) - A(i,i+1:n)*x(i+1:n,:))/A(i,i);
end

function L = my_chol(A)

n = size(A,1); O = zeros(n);

L = O;

for k = 1:n

if k == 1

L(k,k) = sqrt(A(k,k));

L(k+1:n,k) = A(k+1:n,k)/L(k,k);

else

v = L(k,1:k-1)'; %L_k1'

L(k,k) = sqrt(A(k,k)-v'*v);

L(k+1:n,k) = (A(k+1:n,k)-L(k+1:n,1:k-1)*v)/L(k,k);

end

end

Gauss Jordan method in MATLAB is written for solving the following set of linear equations:

x+y+z=5

2x + 3y + 5z = 8
4x + 5z = 2

function [x,err]=gauss_jordan_elim(A,b)
A = [1 1 1;2 3 5; 4 0 5] % input for augmented matrix A
b = [5 ; 8; 2] % intput for matrix B
[n,m]=size(A); % finding the size of matrix A
err =0; % calculation of error
x=zeros(n,1); % calling fuction zero
if n ~= m
disp('error: n~=m'); % displaying error if found
err = 1;
end % end of the scope of if
if length(b) ~= n % finding the legth of matrix B
disp('error: wrong size of b'); % displaying error, if found
err = 2;
else
if size(b,2) ~= 1
b=b';
end % end of the scope of if-else
if size(b,2) ~= 1
disp('error: b is a matrix'); % displaying erron in matrix B
err = 3;
end
end
if err == 0
Aa=[A,b];
for i=1:n
[Aa(i:n,i:n+1),err]=gauss_pivot(Aa(i:n,i:n+1));
if err == 0
Aa(1:n,i:n+1)=gauss_jordan_step(Aa(1:n,i:n+1),i);
end
end
x=Aa(:,n+1);
end
A=0;
function A1=gauss_jordan_step(A,i) % calling of fuction function

[n,m]=size(A); % determination of size of matrix A


A1=A; % assigning A to A1
s=A1(i,1);
A1(i,:) = A(i,:)/s;
k=[[1:i-1],[i+1:n]];
for j=k
s=A1(j,1);
A1(j,:)=A1(j,:)-A1(i,:)*s;
end % end of for loop
function [A1,err]=gauss_pivot(A) % calling of fucntion
[n,m]=size(A); % finding the size of matrix A
A1=A; % process of assigning
err = 0; % error flag
if A1(1,1) == 0
check = logical(1); % logical(1) - TRUE
i = 1;
while check
i = i + 1;
if i > n
disp('error: matrix is singular');
err = 1;
check = logical(0);
else
if A(i,1) ~= 0 & check
check = logical(0);
b=A1(i,:); % process to change row 1 to i
A1(i,:)=A1(1,:);
A1(1,:)=b;
end
end
end
end