Você está na página 1de 3

'PROGRAM NEWTON'

'************************************************************************
*'
'SOLUO DE UM SISTEMA DE EQUAES NO LINEARES'
'MTODO DE NEWTON'
'************************************************************************
*'
'ENTRADA DE DADOS'
'Nmero de Variveis: N'
N = 3;
'Tolerancia: TOL'
TOL = 0.0001
'Fator de relaxao w'
w = 1.0;
'Aproximao inicial da X'
X(1,1) = 1;
X(1,2) = 2;
X(1,3) = 3;
'Equaes das Funes Coordenadas iniciais de F'
F(1,1) = (-1)*(X(1,1)^2 + 2*X(1,2)^2-X(1,2)-2*X(1,3));
F(1,2) = (-1)*(X(1,1)^2 - 8*X(1,2)^2 + 10*X(1,3));
F(1,3) = (-1)*(X(1,1)^2 - 7*X(1,2)*X(1,3));
'Equaes da Matriz Jacobiana inicial J'
JC(1,1,1) = 2*X(1,1);
JC(1,1,2) = 4*X(1,2)-1;
JC(1,1,3) = -2;
JC(1,2,1) = 2*X(1,1);
JC(1,2,2) = -16*X(1,2);
JC(1,2,3) = 10;
JC(1,3,1) = 2*X(1,1);
JC(1,3,2) = -7*X(1,3);
JC(1,3,3) = -7*X(1,2);
parada = 1;
'***********************************************************************'
k = 2;
while parada > TOL
'Parmetros de controle de iterao'
epson = 0.00001;
paradag(k) = 1;
somaY(k) = 0;
kg = 2;
'Aproximao inicial do sistema linear'
for i = 1:N
Y(k,1,i) = F(k-1,i)/JC(k-1,i,i);
end
'***********************************************************************'
'Iteraes para a soluo do sistema de equaes lineares (loop interno)'
while paradag(k) > epson
maxDY(k) = 0;
maxY(k) = 0;
SPD(k) = 0;
SPY(k) = 0;
for i = 1:N
SA = 0;
SL = 0;
Aux1(k,i) = (1-w)*Y(k,kg-1,i);
Aux2(k,i)= w*F(k-1,i)/JC(k-1,i,i);

for j = 1:N
if j <= i-1
Aux3(k,i,j) = (-1)*w*(JC(k-1,i,j)/JC(k1,i,i))*Y(k,kg,j);
SA = SA + Aux3(k,i,j);
elseif j >= i+1
Aux4(k,i,j) = (-1)*w*(JC(k-1,i,j)/JC(k1,i,i))*Y(k,kg-1,j);
SL = SL + Aux4(k,i,j);
else
dummy = 0;
end
end
Y(k,kg,i) = Aux1(k,i) + (SA + SL) + Aux2(k,i);
DY(k,kg,i) = abs(Y(k,kg,i)-Y(k,kg-1,i));
YK(k,kg,i) = abs(Y(k,kg,i));
if maxDY(k) <= DY(k,kg,i)
maxDY(k) = DY(k,kg,i);
else
dummy = 0;
end
if maxY(k) <= YK(k,kg,i)
maxY(k) = YK(k,kg,i);
else
dummy = 0;
end
end
for i = 1:N
Dif(k,kg,i) = DY(k,kg,i)^2;
SPD(k) = SPD(k)+ Dif(k,kg,i);
SPY(k) = SPY(k) + (Y(k,kg,i))^2;
end
paradag(k)= sqrt(SPD(k)/SPY(k));
kg = kg + 1;
end
NI(kg) = kg;
ka = kg;
for i = 1:N
YY(k,i) = Y(k,ka-1,i);
somaY(k) = somaY(k) + (YY(k,i))^2;
X(k,i) = X(k-1,i) + YY(k,i);
end
normaY(k) = sqrt(somaY(k));
parada = normaY(k);
'***********************************************************************'
'Atualizaes das Funes Coordenadas iniciais de F'
F(k,1) = (-1)*(X(k,1)^2+2*X(k,2)^2-X(k,2)-2*X(k,3));
F(k,2) = (-1)*(X(k,1)^2-8*X(k,2)^2+10*X(k,3));
F(k,3) = (-1)*(X(k,1)^2-7*X(k,2)*X(k,3));
'Atualizaes da matriz Jacobiana JC'
JC(k,1,1) = 2*X(k,1);
JC(k,1,2) = 4*X(k,2)-1;
JC(k,1,3) = -2;
JC(k,2,1) = 2*X(k,1);
JC(k,2,2) = -16*X(k,2);
JC(k,2,3) = 10;
JC(k,3,1) = 2*X(k,1);

JC(k,3,2) = -7*X(k,3);
JC(k,3,3) = -7*X(k,2);
k = k+1
end
Nmax = k
'***********************************************************************'
'SADAS X(k,i),NI(k),Nmax,normaY(k),paradag(k),YY(k,i),F(k,i)'
'Soluo X(k)'
X
'NI(k) = Vetor do nmero de iteraes para o sistema Linear JC(X)*Y =
F(X) '
NI
'paradag(k) = norma para finalizar iteraes sistema linear JC(X)*Y =
F(X)'
paradag
'Nmax = Nmero de iteraes para soluo do Sistema no-linear '
Nmax
'normaY(k)= norma para finalizar iteraes do sistema no linear'
normaY
YY
F

Você também pode gostar