• Nenhum resultado encontrado

Equações Lineares em MatLab

N/A
N/A
Protected

Academic year: 2019

Share "Equações Lineares em MatLab"

Copied!
10
0
0

Texto

(1)

Equ a çõe s Lin e a r e s e m M a t La b

Fu n çõe s do M a t la b

Re solu çã o de Equ a çõe s Lin e a r e s

‰ Com o det er m inar a solução de um sist em a de equações lineares AX = B ?

1º . I nt roduza a m at riz A

» A= [ 4 1 2 ; 0 1 0 ; 8 4 5 ] A =

4 1 2 0 1 0 8 4 5

2º . I nt roduza o vect or dos t em os independent es b

» b= [ 1 0 2 ]

'

n ã o e squ e ce r qu e é t r a n spost o

b = 1 0 2

3º . Resolva o sist em a de equações lineares Ax = b ( o Mat lab im plem ent a o m ét odo de elim inação de Gauss para resolver est e sist em a)

» x = A\ b x =

0.2500 0 0

4º . Verifique que x é a solução do sist em a Ax = b

» A* x ans = 1 0 2

‰

fu n çã o LU

: fact oriza um a m at riz

( Est a função encont ram - se no Mat rix Funct ions, num erical linear algebra t oolbox)

[ L,U]

= LU( A)

– fact oriza a m at riz A= L* U, onde L – um a m at riz t riangular

inferior e U – um a m at riz t riangular superior.

Com o det erm inar a solução de um sist em a de equações lineares Ax = B usando o m ét odo de fact orização LU?

» A= [ 4 1 2 ; 0 1 0 ; 8 4 5 ]

A =

4 1 2 0 1 0 8 4 5

(2)

b = 1 0 2

» [ L,U] = lu( A) % fact orize a m at riz A usando o com ando lu

L =

0.5000 -1.0000 1.0000 0 1.0000 0 1.0000 0 0 U =

8.0000 4.0000 5.0000 0 1.0000 0 0 0 -0.5000

» L* U % verifique que A= L* U

ans =

4 1 2 0 1 0 8 4 5

» y= L\ b % resolva Ly= b

y = 2 0 0

» x= U\ y % resolva Ax= y

x = 0.2500 0 0

obtém-se a mesma solução do sistema

Utilizando o método de factorização LU com matriz de permutação:

A = [ 1 2 3; 2 4 7; 3 5 3] ;

A =

1 2 3 2 4 7 3 5 3

Factorizando a matriz A na forma LU sem matriz de permutação

» [ L,U] = lu( A)

L =

0.3333 0.5000 1.0000 0.6667 1.0000 0 1.0000 0 0 U =

3.0000 5.0000 3.0000 0 0.6667 5.0000 0 0 -0.5000

Verificando se L* U = A ans =

(3)

As linhas 1 e 3 estão trocadas

Factorizando a matriz A na forma LU com matriz de permutação

» [ L,U,P] = lu( A)

L =

1.0000 0 0 0.6667 1.0000 0 0.3333 0.5000 1.0000

U =

3.0000 5.0000 3.0000 0 0.6667 5.0000 0 0 -0.5000

P =

0 0 1 0 1 0 1 0 0

Obtemos a matriz de permutação que corresponde à permutação das linhas 1 e 3.

Resolver o sistema de equaçoes Ax= b usando a factorizaçao LU com a matriz de permutação P

1º : Aplicar a permutação P ao vector b

» b= [ 1, - 1, 0.5] '

b = 1.0000

-1.0000 0.5000

» pb= P* b

pb = 0.5000 -1.0000 1.0000

2º : Resolver o sistema de equações Ly= pb

» y= L\ pb

y =

0.5000 -1.3333 1.5000

3º : Resolver o sistema de equações Ux= y

»

x= U\ y

x =

(4)

‰

fu n çã o N ORM

: det erm ina a norm a de um a m at riz ou um vect or

Para as m at rizes:

N ORM ( A,1 )= m ax( sum ( abs( ( X) ) ) -

det erm ina | | A| |1 - o m áxim o das som as por coluna dos valores absolut os

dos elem ent os de A N ORM ( A,in f) = m ax( sum ( abs( ( X') ) )

det erm ina | | A| |∞ - o m áxim o das som as por linha dos valores absolut os

dos elem ent os de A Para os vect ores:

NORM( X,1) = m ax( sum ( abs( ( X) ) ) . Det erm ina | | X| |1 - norm a absolut a

NORM( X,inf) = m ax( abs( X) ) . Det erm ina | | X| |∞ - norm a de m áxim o

NORM( X,- inf) = m in( abs( X) ) . Det erm ina | | X| |-∞ - norm a de m ínim o

For exem plo:

» A= [ 1 2 4 ; 4 - 1 1 ; 2 5 2 ]

A =

1 2 4 4 - 1 1 2 5 2

» n or m ( A,1 ) % o m áxim o das som as por coluna dos valores absolut os dos elem ent os de A

ans =

8

» n or m ( A,in f) % o m áxim o das som as por linha dos valores absolut os dos elem ent os de A

ans =

9

» b= [ 1 1 8 3 ] '

b =

11 8 3

» n or m ( b,1 ) % a som a dos valores absolut os dos elem ent os de b ans =

22

» n or m ( b,inf) % o m áxim o em valor absolut o dos elem ent os de b ans =

11

» n or m ( b,- in f) % o m ínim o em valor absolut o dos elem ent os de b ans =

3

‰

fu n çã o CON D

: det erm ina o núm ero de condição de um a m at riz

cond( A) = | | A- 1| | | | A| |

(5)

For exem plo:

» A= [ 1 2 4 ; 4 - 1 1 ; 2 5 2 ] A =

1 2 4 4 - 1 1 2 5 2

» con d( A,in f)

ans =

4.17391304347826

Ex e r cícios e m M a t la b

1. Escreva em Mat lab a função

X= r e sidu os ( A,b,X 0 ,e ps,m a x it )

que im plem ent a

o m ét odo dos resíduos para m elhorar um a aproxim ação da solução do sist em a

de equações lineares

A

x=

b

dada um a solução inicial

X 0

, e t al que | | b

-

Ax

k

| | <

eps. Alem disso um núm ero m áx im o de it erações,

m a x it ,

t am bém é dado, para

t erm inar o processo it erat ivo quando não se verificar | | b- Ax

k

| | < eps.

function [X,error, k, Z]=residuos(A,b,X0,eps,maxit)

%--- % Esta função implementa o método dos residuos para melhorar uma % aproximação da solução de um sistema de equações lineares Ax=b % Para executar chamar:

% X = residuo(A,b,X0,eps,maxit) % [X,error,k, Z] = residuo(A,b,X0,eps,maxit) % Parâmetros de entrada

% A - a matriz do sistema

% b - o vector com os termos independentes % X0 - a solução que se pretende melhorar

% eps - a tolerancia para o criterio de paragem ||b-A*X||<eps % maxit - numero máximo de iterações

% Parâmetros de saída

% X - a aproximação da solução % error - a norma do residuo % k - o número de iterações

% Z - Matrix com todas as soluções (uma por linha)

%---

echo on; format long; X =X0;

Z =X0'; % inicializo Z (armazena a historia) for k=1:maxit;

r = b - A*X;

if (norm(r,inf)<eps) k=k-1;

break, end; e=A\r;

X=X+e;

Z = [Z;X']; % armazeno a historia end;

(6)

2. Escreva em Mat lab a função

M = m a j or r x ( A,b, de lt a )

que det erm ina um

m aj orant e do erro r elat ivo ( em norm a infinit a) da solução x do sist em a de

equações lineares Ax= b quando o vect or

b

dos t erm os independent es é

ligeiram ent e pert urbado segundo um

de lt a

dado.

function M=majorrx(A,b,delta);

%---% Esta função determina um majorante do erro relativo

%( em norma infinito)da solução x do sistema Ax=b

% quando o vector b dos termos independentes é ligeiramente % perturbado segundo um delta definido: ||b-b'||<= delta

% O majorante do erro relativo em norma pode ser calculado pela % fórmula: rx=||delta_x||/||x||<= cond(A)* (||delta_b||/||b||) % Para executar chamar:

% M = majorrx(A,b,delta) % Parâmetros de entrada

% A - a matriz A do sistema

% b - o vector com os termos independentes

% delta - o majorante para a perturbação do vector b % Parâmetros de saída

% M - o majorante do erro relativo da solução para o % sistema perturbado

%---echo on; format long;

cA=cond(A,inf) % número de condição da matriz (norma inf)

nb=norm(b,inf) % norma inf de b

(7)

3. Escreva em Mat lab a função

j a cobi( A,b, X0 , e ps, m a x )

que im plem ent a o

m ét odo it erat ivo de Jacobi para det erm inar a solução aproxim ada de

A

x=

b

,

dada um a solução inicial

X 0

t al que | | x

k

-

x

k- 1

| | < eps. Alem disso um núm ero

m áxim o de it erações,

m a x it ,

t am bém é dado, para t erm inar o processo

it erat ivo quando não se verificar | | x

k

-

x

k- 1

| | < eps.

function [X,deltaX,k,Z] = jacobi(A,b,X0,eps,maxit)

%---% Implementa o método iterativo de Jacobi para determinar uma solução % aproximada de Ax=b:

% X(k)(i)= (b(i)-A(i,1)*X(k-1)(1)-...-A(i,i-1)*X(k-1)(i-1)- % A(i,i+1)*X(k-1)(i+1)-...-A(n,n)*X(k-1)(n))/ Aii % Executar

% [X,deltaX,k] = jacobi(A,B,P,eps,maxit) % [X,deltaX,k,Z] = jacobi(A,B,P,eps,maxit) % Entrada

% A a matriz A do sistema

% b o vector dos termos independentes % X0 a solução inicial

% eps tolerância de convergência para critério de paragem % maxit número máximo de iterações para critério de paragem % Devolve

% X o vector com a aproximação da solução % error a norma do vector abs(X(k)-X(k-1)) % k o número de iterações

% Z matriz com todas as soluções (uma por linha)

%---n = le%---ngth(b);

Xant = X0; % armazena a solução anterior X(k-1)

X=X0; % inicializo X

Z = X0'; % inicializo Z

for k=1:maxit, % iterar até max veces

for i = 1:n, % para cada equação

X(i) = (b(i) - A(i,[1:i-1,i+1:n])*Xant([1:i-1,i+1:n]) ) / A(i,i); end

Z = [Z;X']; % armazeno a historia

deltaX = norm(X-Xant,inf); if (deltaX <eps) break, end

Xant = X;

(8)

4. Escreva em Mat lab a função

gse ide l( A,b, X0 , e ps, m a x )

que im plem ent a o

m ét odo it er at ivo de Gauss- Seidel para det erm inar a solução aproxim ada de

A

x=

b

, dada um a solução inicial

X 0

, e t al que | | x

k

-

x

k- 1

| | < eps. Alem disso um

núm ero m áxim o de it er ações,

m a x it ,

t am bém é dado, para t erm inar o processo

it erat ivo quando não se verificar | | x

k

-

x

k- 1

| | < eps.

function [X,deltaX, k, Z] = gseidel(A,b,X0,eps,maxit)

%---% Implementa o método iterativo de Gauss-Seidel para determinar uma solução aproximada de Ax=b

% X(k)(i)= (b(i)-A(i,1)*X(k)(1)-...-A(i,i-1)*X(k)(i-1)

% -A(j,j+1)*X(k-1)(j+1)-...-A(n,n)*X(k-1)(n))/ Aii % Executar

% [X, deltaX, k] = gseidel(A,B,P,delta,maxit) % [X, deltaX, k, Z] = dseidel(A,B,P,delta,maxit) % Entrada

% A a matriz A do sistema

% b o vector dos termos independentes % X0 a solução inicial

% eps tolerancia de convergencia do criterio de paragem % maxit número máximo de iterações

% Devolve

% X o vector com a aproximação da solução % deltaX a norma do vector abs(X(k)-X(k-1)) % k o número de iterações

% Z Matrix com todas as soluções (uma por linha)

%---n = le%---ngth(b);

Xant = X0; % armazena a solução anterior X(k-1) X = X0; % inicializo X

Z = X0'; % inicializo Z

for k=1:maxit, % iterar até max veces

for i = 1:n, % para cada equação

if i==1

X(i) =(b(1) - A(1,2:n)*Xant(2:n))/ A(i,i); elseif i==n

X(i) = (b(n) - A(n,1:n-1)*X(1:n-1) )/ A(i,i); else

X(i) = (b(j)-A(i,1:i-1)*X(1:i-1)-A(i,i+1:n)*Xant(i+1:n))/ A(i,i); end

end

Z = [Z;X']; % armazeno a historia

deltaX = norm(X-Xant,inf); if (deltaX < eps) break, end

Xant = X;

(9)

5. Part indo da aproxim ação inicial X0= [ 5/ 4,- 1/ 4] ' apr oxim e a solução do sist em a

2x1 + 0.5 x2= 2.5

x1 + 3 x2= 0.5

aplicando o m ét odo de Jacobi e o m ét odo de Gauss- Seidel com o núm ero de it erações suficient es por form a a que | | xk

-

x

k- 1

| | < 0.5 x 10

- 1

» ex5 A =

2.00000000000000 0.50000000000000 1.00000000000000 3.00000000000000 b =

2.50000000000000 0.50000000000000 X0 =

1.25000000000000 - 0.25000000000000

- - - Mét odo de Jacobi - - - I t eração x( 1) x( 2) - - -

1.00000000000000 1.25000000000000 - 0.25000000000000 2.00000000000000 1.31250000000000 - 0.25000000000000 3.00000000000000 1.31250000000000 - 0.27083333333333

- - -

A solução: x1= 1.3125 x2= - 0.27083333

% ---% Este programa partindo da aproximação inicial X0=[5/4,-1/4]

% aproxima a solução do sistema % 2x1 + 0.5 x2= 2.5

% x1 + 3 x2= 0.5

% aplicando o método de Jacobi e o método de Gauss-Seidel por forma a que % ||x(k) – x(k-1) || < 0.5 x 10-1

%

---A=[2 0.5; 1 3] % introduzir a matriz A

b=[2.5 0.5]' % introduzir o vector b

X0=[5/4,-1/4]' % introduzir a solução inicial

[X,dX,k,Z]=jacobi(A,b,X0,0.05,2); m=length(Z);

k=1:m; disp('');

disp('---Método de Jacobi ---'); disp(' Iteração x(1) x(2) ');

disp('---'); disp([k',Z])

disp('---'); disp(' ');

disp(['A solução: ','x1= ',num2str(Z(m,1),8),' x2= ',num2str(Z(m,2),8)]); [X,dX,k,Z]=gseidel(A,b,X0,0.05,2);

m=length(Z); k=1:m;

disp(' '); disp('---Método de Gauss-Seidel ---'); disp(' Iteração x(1) x(2) ');

disp('---'); disp([k',Z])

disp('---'); disp(' ');

(10)

- - - Mét odo de Gauss- Seidel - - - I t eração x( 1) x( 2)

- - -

1.00000000000000 1.25000000000000 - 0.25000000000000 2.00000000000000 1.31250000000000 - 0.27083333333333 3.00000000000000 1.31770833333333 - 0.27256944444444

- - -

Referências

Documentos relacionados

Como são fundos negociados em bolsa, ETFs tem sua dinâmica de negociação principal no mercado secundário, com negociações diárias como qualquer outra ação. O mercado

Caso o doutoramento tenha sido conferido por instituição de ensino superior estrangeira, o mesmo tem de obedecer às regras estabelecidas no regime jurídico do reconhecimento de

Como é sustentado no acórdão do Supremo Tribunal de Justiça de 18/04/2002, proferido no processo n.º 02B950, acessível em www.dgsi.pt, quando se determina que o prazo

Segundo dispõe o Código de Trânsito Brasileiro, dirigir veículo sem usar lentes corretoras de visão, aparelho auxiliar de audição, de prótese física ou as

A solução de sistemas lineares é uma ferramenta matemática muito importante na engenharia. Normalmente os problemas não-lineares são solucionados por ferramentas

Ao final do capítulo do tópico sobre sistema de equações, são evidenciados dois momentos: o primeiro, com dez exercícios, sem suas respectivas respostas e, um

recursos do FMM São financiamentos concedidos com recursos do FMM às indústrias naval, petrolífera e às empresas brasileiras de navegação que, de acordo com o tipo de finalidade,

Este método consiste na aplicação de operações elementares às linhas da matriz aumentada do sistema de equações lineares até que obtenhamos uma matriz numa