You are on page 1of 6

metoda GAUSS

clc
A=[2 15 -3 7;-3 6 18 -3;-3 1 5 -14;9 -18 6 -23]
b=[-5;-2;14;1]
n=4
a=A
for r=1:n-1
fprintf('Etapa %g',r)
Av=A; bv=b;
for i=r+1:n
for j=1:n
A(i,j)=Av(i,j)-Av(i,r)*Av(r,j)/Av(r,r);
end
b(i)=bv(i)-Av(i,r)*bv(r)/Av(r,r);
end
end
A
b
n=4;
x=zeros(n,1);
x(n)=b(n)/A(n,n);
for i=n-1:-1:1
s=0;
for j=i+1:n
s=s+A(i,j)*x(j);
end
x(i)=(b(i)-s)/A(i,i);
end
disp('Solutia sitemului prin metoda GAUSS este')
x
disp('Verificare')
a*x

metoda Cholesky
clc
A=[90 12 -23 24;12 80 1 15;-23 1 70 -14;24 15 -14 60];
b=[10;20;30;40];
n=4;
a=A
R=zeros(4);
for p=1:n
R(p,p)=sqrt(A(p,p));
if(p<n)
for k=p+1:n
R(p,k)=A(p,k)/R(p,p);
end
for i=p+1:n
for j=p+1:n
A(i,j)=A(i,j)-R(p,i)*R(p,j)
end
end
end
end
R
A
b
y=zeros(n,1)
y(1)=b(1)/R(1,1)
for i=2:n
s=0;
for j=1:i-1
s=s+R(j,i)*y(j)
end
y(i)=(b(i)-s)/R(i,i)
end
n=4;
x=zeros(n,1);
x(n)=y(n)/R(n,n);
for i=n-1:-1:1
s=0;
for j=i+1:n
s=s+R(i,j)*x(j);
end
x(i)=(y(i)-s)/R(i,i);
end
disp('Solutia sistemului prin metoda Cholesky este')
x
disp('Verificare')
a*x
Metoda gradientilor conjugate
clc;
disp('matricea sistemului')
a=input('A=')
disp('matricea termenilor liberi')
b=input('b=')
A=a;
b=b;
[n,n]=size(A);
v=zeros(n,1);
r=A*v-b;
for i=1:n
if i==1 p=-r
else
c=(r'*A*p)/(p'*A*p);
p=-r+c*p;
end
t=r'*r/(p'*A*p);
v=v+t*p;
r=A*v-b;
end
v
norm(r,inf)

Metoda celor mai mici patrate

clc;
disp('matricea sistemului')
a=input('A=')
disp('matricea termenilor liberi')
b=input('b=')
A=a;
b=b;
[n,n]=size(A);
B=A'*A;
c=A'*b;
d=det(B);
dm=det([c(1) B(1,2);c(2) B(2,2)]);
dn=det([B(1,1) c(1);B(2,1) c(2)]);
m=dm/d;
n=dn/d;
plot(A(1:5,1),b,'x');hold on;
plot([1;7],[m*1+n;m*7+n],'b');
grid on;

metoda Jacobi
clc
A=[11 -1 1 1;-1 11 1 1;-1 -1 11 -1;-1 -1 1 11]
b=[-11;-11;1;1]
n=4
D=diag(diag(A))
E=D-A
B=inv(D)*E
c=inv(D)*b
v=eig(B)
ro=norm(v,inf)
x=zeros(n,1)
e=A*x-b
i=0
eps=input('Dati ordinul erorii,eps=')
while(norm(e,inf)>eps)
i=i+1
x=B*x+c
e=A*x-b
end
disp('Solutia la metoda Jacobi')
x
disp('este obtinuta la pasul')
i
disp('cu precizia')
eps
disp('verificare')
A*x

metoda HouseHolder
clc

A=[-4 6 8 -3;2 5 -3 7;9 -8 6 -3;-6 1 5 -4]


b=[-2;5;1;4]
n=4
a=A
for i=1:n-1
fprintf('\n Etapa%g\n',i)
u=zeros(n,1);
s=norm(A(i:n,i),2);
beta=1/(s*(norm(A(i,i))+s));
if(A(i,i)>=0)
t=1;
else
t=-1;
end
u(i)=A(i,i)+t*s;
u(i+1:n)=A(i+1:n,i);
H=eye(n)-beta*u*u'
A=H*A
b=H*b
end
x=zeros(n,1);
x(n)=b(n)/A(n,n);
for i=n-1:-1:1
s=0;
for j=i+1:n;
s=s+A(i,j)*x(j);
end
x(i)=(b(i)-s)/A(i,i);
end
disp('Solutia sistemului prin metoda HouseHolder este')
x
disp('Verificare')
a*x

metoda GAUSS-SEIDEL
clc
A=[21 -5 3 2;-2 20 5 3;-1 -4 22 -2;4 3 2 24]
b=[-2;1;-1;-2]
n=4
M=tril(A)
U=A-M
B=-inv(M)*U
c=inv(M)*b
v=eig(B)
ro=norm(v,inf)
x=zeros(n,1)
e=A*x-b
i=0
eps=input('Dati ordinul erorii,eps=')
while(norm(e,inf)>eps)
i=i+1
x=B*x+c
e=A*x-b
end
disp('Solutia sistemului prin metoda GAUSS-SEIDEL')
x
disp('este obtinuta la pasul')
i
disp('cu precizia')
eps
disp('Verificare')
A*x

clc
A=[-20.1 1;-14 1;-8.3 1;-3 1;1 1;2 1;3 1;4 1]
b=[2;-1.4;-2;-4.5;-5.3;-7.8;-9.9;-11.1]
B=A'*A;
c=A'*b;
x=babei(B,c,2)
m=x(1)
n=x(2)
plot(A(:,1),b,'s',[-25;4],[(-25)*n+m;4*n+m],'r')
grid on

You might also like