Você está na página 1de 6

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 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 relaxarii simple


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;
eps=input('eps=');
i=0;
while norm(r,inf)>eps
[m,j]=max(abs(r));
p=zeros(n,1);
p(j)=1;
t=-r(j)/A(j,j);
v=v+t*p;
r=A*v-b;
i=i+1;
end
i
v

Metoda super relaxarii


clc;
disp('matricea sistemului')
a=input('A=')
disp('matricea termenilor liberi')
b=input('b=')
A=a;
b=b;
[n,n]=size(A);
Uj=diag(diag(A));
B=eye(n)-inv(Uj)*A;
ro1=norm(eig(B),inf);
w=2/(1+sqrt(1-ro1^2));
U=tril(A)+(1/w-1)*Uj;
B=eye(n)-inv(U)*A;
ro=norm(eig(B),inf);
c=inv(U)*b;
x=zeros(n,1);
e=A*x-b;
eps=input('eps=');
p=0;
while norm(e,inf)>eps

end
x
p

x=B*x+c;
e=A*x-b;
p=p+1;

Metoda Jacobi&Gauss-Seidel
clc;
disp('matricea sistemului')
a=input('A=')
disp('matricea termenilor liberi')
b=input('b=')
A=a;
b=b;
[n,n]=size(A);
%U=diag(diag(A));
U=tril(A);
B=eye(n)-inv(U)*A;
c=inv(U)*b;
ro=norm(eig(B),inf);
x=zeros(n,1);
e=A*x-b;
eps=input('eps=');
p=0;
while norm(e,inf)>eps
x=B*x+c;
e=A*x-b;
p=p+1;
end
x
p

Metoda Householder
clc;
disp('matricea sistemului')
a=input('A=')
disp('matricea termenilor liberi')
b=input('b=')
A=a;
b=b;
[n,n]=size(A);
for i=1:n-1
s=norm(a(i:n,i),2);
beta=1/(s*(s+abs(a(i,i))));
if a(i,i)==0 t=1
else t=sign(a(i,i))
end

u=zeros(n,1);
u(i)=a(i,i)+t*s;
for j=i+1:n
u(j)=a(j,i);
end
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
x

Metoda lui Cholesky

clc;
disp('matricea sistemului')
a=input('A=')
disp('matricea termenilor liberi')
b=input('b=')
A=a;
b=b;
c=a;
[n,n]=size(A);
R=zeros(n);
for p=1:n
R(p,p)=sqrt(A(p,p));
for j=p+1:n
R(p,j)=A(p,j)/R(p,p);
end
for i=p+1:n
for j=p+1:n
a(i,j)=A(i,j)-A(p,i)*A(p,j)/A(p,p);
end
end
A=a;
R
end
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
y
b=y
x=zeros(n,1);

x(n)=b(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)=(b(i)-s)/R(i,i);
end
x

Metoda lui Gauss


clc;
disp('matricea sistemului')
a=input('A=')
disp('matricea termenilor liberi')
b=input('b=')
A=a;
B=b;
c=a;
[n,n]=size(A);
for p=1:n-1
for i=p+1:n
for j=p:n
a(i,j)=A(i,j)-A(i,p)*A(p,j)/A(p,p);
end
b(i)=B(i)-A(i,p)*B(p)/A(p,p);
end
A=a;
B=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

Você também pode gostar