Escolar Documentos
Profissional Documentos
Cultura Documentos
Metodos - Numericos Matlab Cimatec
Metodos - Numericos Matlab Cimatec
APLICAÇÃO NO MATLAB
1) NOTAÇÃO MATRICIAL
a11 a1n
A
a n1 a nn
b [b1 bn ]
Exemplo de matriz coluna denominada de vetor coluna:
c1
c
c m
[m, n] = size(matriz)
x A b
1
x A \ b
70,0843
x3 7,00003
10,0120
Após isso, é necessário retornar nas outras equações para
calcular as outras variáveis.
NOÇÕES SOBRE ELMINAÇÃO DE GAUSS
end
x=zeros(n,1); % define inicialmente um vetor solução de zeros, para depois serem atualizados
% serve também para estabelecer que o vetor solução é do tipo coluna
x(n)=a_ampliada(n,nb)/a_ampliada(n,n);
for l=n-1:-1:1
for g =((l+1):n)
x(l)=(a_ampliada(l,nb))/(a_ampliada(l,l))-((a_ampliada(l,l+1:n))*x(l+1:n))/((a_ampliada(l,l)));
end
MÉTODOS ITERATIVOS
A x b
Para entender melhor esse método, limitaremos o sistema a 3 x 3:
MÉTODOS ITERATIVOS
a11x1 a12 x 2 a13 x 3 b1
a 21x1 a 22 x 2 a 23 x 3 b 2
a x a x a x b
31 1 32 2 33 3 3
j1 j1
b a x a x
x1j 1 12 2 13 3
a11
j1
b a x j
a x
x 2j 2 21 1 23 3
a 22
b a x j
a x j
x 3j 3 31 1 32 2
a 33
MÉTODOS ITERATIVOS
71, 4 0,3x1 0, 2x 2
x3
10
71, 4 0,3 2,990557 0, 2 2, 499625
x3
10
x 3 7,000291
% error - função matlab que mostra uma mensagem de erro e cancela a função
% nargin - número de argumentos de entrada de uma determinada função. O
% nargin retorna o número de argumentos de entrada que foi usado para
% chamar a função.
% nargout - retorna o número de argumentos de saída da função.
% isempty - isemty(y) retorna 1 se y é um array sem elemento e 0 caso
% contrário
if nargin<2
error('pelo menos dois argumentos de entrada são necessários')
end
if nargin <4 || isempty(maxit)
maxit=50;
end
if nargin<3 ||isempty(es)
es = 0.00001;
end
MÉTODOS ITERATIVOS
[m,n]=size(a); for i=1:n
if m~=n c(i,1:n)=c(i,1:n)/a(i,i);
error('a matriz deve ser quadrada') end
end iter = 0;
c=a; ea=1;
% x=xp;
% format long
for i =1:n
c(i,i)=0; while ea>=es
x(i)=0; xvelho=x;
end for i=1:n
x=x'; x(i)=d(i)-c(i,:)*x;
for i=1:n if x(i)~=0
d(i)=b(i)/a(i,i); ea(i)=abs(x(i)-xvelho(i));
end end
iter=iter+1;
end
x
end
MÉTODOS ITERATIVOS
MÉTODO DE NEWTON-RAPHSON
f xi
x i1 x i
f ' (x i )
A equação acima corresponde ao método de Newton Raphson para
apenas uma equação.
MÉTODO DE NEWTON-RAPHSON
f1
f1 (x1 , x 2 ) f1 (x1k , x 2k ) (x1 x1k )
x1 (x ,x )
1k 2k
f1
(x 2 x 2k ) 0
x 2 (x1k ,x 2 k )
f 2
f 2 (x1 , x 2 ) f 2 (x1k , x 2k ) (x1 x1k )
x1 (x1k ,x 2 k )
f 2
(x 2 x 2k ) 0
x 2 (x1k ,x 2 k )
MÉTODO DE NEWTON-RAPHSON
Na forma vetorial as equações ficam da seguinte maneira:
f1 f1
f1 (x1 , x 2 ) f1 (x1k , x 2k ) x1 x 2 (x1 x1k )
f (x , x ) f (x , x ) f
2 1 2 2 1k 2k 2 f 2 (x 2 x 2k )
x x 2 (x
1 1k ,x 2 k )
0
0
f (x) c
MÉTODO DE NEWTON-RAPHSON
Se xo é a estimativa inicial da solução e x é um pequeno desvio
o
f (x o x o ) c
dx
Em que: c(0) c f x (0)
MÉTODO DE NEWTON-RAPHSON
O algoritmo de Newton Raphson é então colocado abaixo:
c(k ) c f x (k )
c(k )
x (k ) (k )
df
dx
x (k 1) x (k ) x (k )
f x x 3 6x 2 9x 4
MÉTODO DE NEWTON-RAPHSON
n 1 2
f (x , x , x n ) c n
MÉTODO DE NEWTON-RAPHSON
Aplicando série de Taylor e desprezando os termos de ordem
elevada resulta em:
f1 (0) f1 (0) f1 (0)
f (0)
x 1 x 2 x n c1
x1 x 2 x n
1
1
1
(0)
x
c1 f 10 (x) 1 x 2 x n x 1
c f 0 (x)
(0)
n n (0)
f n x n
(0) (0)
f n f n
x
1 2
x n
x
C J x
(k ) (k ) (k )
MÉTODO DE NEWTON-RAPHSON
C J x
(k ) (k ) (k )
x J C
(k ) 1(k ) (k )
x x x
k 1 k (k )
MÉTODO DE NEWTON-RAPHSON
Em que:
x1(k )
(k ) f (k ) f1
(k )
f1
(k )
x 2 1
x
(k )
x1
2
x x n
(k )
x n J (k )
(k ) (k ) (k )
c1 f1
(k ) f n f n f n
x
c2 f 2
(k ) 1 2
x n
x
C
(k )
c f (k )
n n
J (k ) - MATRIZ JACOBIANA
MÉTODO DE NEWTON-RAPHSON
2x1 2x 2
j x1
e 1
Passo 2: Preparar o algoritmo
MÉTODO DE NEWTON-RAPHSON
Exemplo de aplicação do método de Newton-Raphson
deltax=1; % incremento da variável é ajustado em um valor alto
x=input('Entre com a estimativa inicial -> ');
iter = 0;
disp(' iter deltac j deltax x')
while abs(deltax)>0.0001 & iter<100
iter=iter+1;
deltac=0-(x^3-6*x^2+9*x-4);
j=3*x^2-12*x+9;
deltax=deltac/j;
x=x+deltax;
% fprintf('%g', iter)
disp([iter , deltac, j, deltax, x])
end
MÉTODO DE NEWTON-RAPHSON
Exemplo de aplicação do método de Newton-Raphson
iter = 0;
x=input('Entre com a estimativa inicial da solução - vetor coluna x=[x1;x2] - >
');
deltax=[1;1];
c=[4;1];
disp('iter deltac jacobiana deltax x')
while max(abs(deltax))>=0.0001 & iter<10
iter=iter+1;
f=[x(1)^2+x(2)^2; exp(x(1))+x(2)];
deltac=c-f;
j=[2*x(1) 2*x(2);exp(x(1)) 1];
deltax=j\deltac;
x=x+deltax;
fprintf('%g', iter)
disp([ deltac, j, deltax, x]
MÉTODO DE NEWTON-RAPHSON
Exemplo de aplicação do método de Newton-Raphson
Atividade: Partindo com valores iniciais x1, x2, x3 resolva o
seguinte sistema de equações pelo método de Newton Raphson:
x12 x 22 x 32 11
x1x 2 x 22 3x 3 3
x1 x1 x 3 x 2 x 3 6