Вы находитесь на странице: 1из 4

ELIMINACION DE GAUUS CON PIVOTE PARCIAL

Resolver el siguiente sistema de ecuaciones programando en Matlab con pivote


parcial

3X1 0.1X2 0.2X3 = 7.85


0.1X1 + 7X2 0.3X3 = -19.3
0.3X1 0.2X2 + 10X3 = 71.7
Function gauss
function gauss(a,b,tol,er)
n=length(a);
for i=1:n
s(i)=abs(a(i,1));
for j=1:n
if abs(a(i,j))>s(i)
s(i)=abs(a(i,j));
end
end
eliminate(a,b,s,tol,er)
end
if er~=-1
substitute(a,n,b)
end
end

Function eliminate
function eliminate(a,b,s,tol,er)
n=length(a);
for k=1:n-1
pivot(a,b,s,n,k)
if abs(a(k,k))<tol
er=0.1;
break
end
for i=k+1:n
f=a(i,k)/a(k,k);
for j=k+1:n
a(i,j)=a(i,j)-f*a(k,j);
end
b(i)=b(i)-f*b(k);
end
end
end

Function pivot
function pivot(a,b,s,n,k)
p=k;
big=abs(a(k,k));
for ii=k+1:n
t=abs(a(ii,k));
if t>big
big=t
p=ii
end
end
if p~=k
for jj=k;n
t=a(p,jj);
a(p,jj)=a(k,jj);
a(k,jj)=t;
end
t=b(p);
b(p)=b(k);
b(k)=t;
t=s(p);
s(p)=s(k);
s(k)=t;
end
end
Function substitute
function substitute(a,n,b)
x(n)=b(n)/a(n,n);
for i=n-1:-1:1
sum=0;
for j=i+1:n
sum=sum+a(i,j)*x(j);
end
x(i)=(b(i)-sum)/a(i,i);
end
disp(x)
end
Solucin:
>> gauss([3 -0.1 -0.2;0.1 7 -0.3;0.3 -0.2 10],[7.85;-19.3;71.4],0.001,0.1)
3.0110 -2.4511

7.1400

Вам также может понравиться