Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

48
Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros

Transcript of Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Page 1: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Curso MATLAB 6

Instrutor: Marcelo Escobar

Métodos Númericos para Engenheiros

Page 2: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Métodos Numéricos

Álgebra Matricial

Sistemas Lineares

Sistemas não lineares

Equações Integrais

Equações Diferenciais

Otimização

Manipulação Simbólica

Page 3: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Álgebra Matricial:

Tópicos de Ajuda:

>>help matfun>>help elmat>>help sparfun

Multiplicação Matricial: [Produto Interno]

Dadas as Matrizes A e B:

A * B = C [n x m ] [ m x p] [n x p]

>> A*B

Divisão Matricial: [Produto Externo] B= C/A

>>C\A

Page 4: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Conceitos Importantes:

Conceitos Importantes:

Matriz Transposta: B=AT se b(j,i)=A(i,j)

Matriz Identidade: I(i,j)=1 se i==j e I(i,j)=0 se i~=j

Matriz Inversa: se B*A=I, B é a inversa da matriz A

Matriz Singular: se det(A)=0, A é singular

Matriz Simétrica: se A= AT

Diagonal Principal da Matriz : A(i,i) para i=1:n

Matriz Triangular Superior: A(i,j)=0 se i>j

Matriz Triangular Inferior: A(i,j)=0 se i<j

Ortogonalidade de Vetores: se a*b’=0a[ 1 x n] e b[ 1 x n] a e b são ditos ortogonais.

Page 5: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Sistemas Lineares:Sistemas Lineares: Forma Geral [ Ax=b ]

Classificação:

Possível e Determinado : se det(A)~=0Possível e Indeterminado: se det(A)=0 e todos det(A(:,i)=b)=0 i=1:nImpossível: se det(A)=0 e pelo menos um det(A(:,i)=b)~=0 i=1:n

Posto de uma Matriz: Número de Equações Independentes>> rank(A)

Valores Característicos: A-λI=A para λ~=0

>>eig(A)

Vetores Característicos: A* (λ*I) = (λ*I) *V

>>[lambda V]=eig(A)

Page 6: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Métodos Diretos:

Métodos de Resolução de Sistemas Lineares:

Forma mais simples no Matlab: x=A\bMínimos Quadrados: x=lsqlin(A,b)

Métodos Diretos: ( Principais)

Eliminação Gaussiana:

Fatorização:

>>help lu [ Decomposição LU]>>help qr [ Decomposição Ortogonal Triangular]>>help svd [ Decomposição em Valores Singulares]>>help schur [ Decomposição Schur]

Ex: A = L U L y = b U x

k Nj k Ni N k

aa

a

a a a a

kjkj

kk

ij ij ik kj

11

1

,...,,...,,..., ( )

Page 7: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Exemplo Método de Gauss:

yxA

x

x

x

.

9

6

3

.

087

654

321

3

2

1

Exemplo:

Linha1=linha1/A(1,1)

Linha2=linha2-A(2,1)*linha1

Linha3=linha3-A(3,1)*linha1Linha2=linha2/A(2,2)

Linha1=linha1-A(1,2)*linha1

Linha3=linha3-A(3,2)*linha3Linha3=linha3/A(3,3)

Linha1=linha1-A(1,3)*linha1

Linha2=linha2-A(2,3)*linha2

12

6

3

2160

630

321

0

2

1

900

210

101

0

2

1

100

010

001

x1=-1 x2=2 x3=0

Page 8: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Exemplo Método de Crammer:

yxA

x

x

x

.

9

6

3

.

087

654

321

3

2

1

x1=-1 x2=2 x3=0

089

656

323

Ax

097

664

331

Ay

987

654

321

Az

X1=det(Ax)/det(A)

X2=det(Ay)/det(A)

X3=det(Az)/det(A)

Linha1=b Ax

Linha2=bAy

Linha3=bAz

Page 9: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Métodos Indiretos:Métodos Indiretos: ( Principais)

Iterações de Jacobi

onde M = D-1 B, c = D-1 b, B = D - A. Sendo D a diagonal da matriz A. O método escrito para cada elemento do vetor x apresenta a seguinte forma:

x M x c kk k 1 0 1 2, , , , ...

x

b a x

ai N ki

ki ij j

k

j i

N

ii

1 11 0 1 2

( ), , ... , , , , ...e

Page 10: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Métodos Indiretos:

Iterações de Gauss-Seidel :

Este método é uma modificação do método de Jacobi, cujo princípio é de usar os novos valores de x tão logo eles estejam disponíveis. Neste caso a matriz M = (D - L)-1 U e o vetor c = (D - L)-1 b, onde D, L e U são as matrizes diagonal, triangular inferior e triangular superior, respectivamente, extraídas da matriz A = D - L - U. O método escrito para cada elemento do vetor x apresenta a seguinte forma:

x

b a x a x

ai N ki

ki ij j

kij j

k

j i

N

j

i

ii

1

1

11

1

1 0 1 2, , ... , , , , ...e

Page 11: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Sistemas Esparsos:Sistemas Esparsos: vários elementos nulos

>>help issparse [ teste de esparsidade]>>help sparse [ conversão de matriz cheia para matriz esparsa]>>help full [ conversão de matriz esparsa para matriz cheia]

Geração de Matrizes Esparsas:

>>help sprand [geração de matriz esparsa aleatória]

>>help sparndsym [geração de matriz esparsa simétrica aleatória]

Métodos para Sistemas Esparsos:

>> help pcg Conjugate Gradiente>> help cgs Conjugate Gradient Squared (CGS)>> help bicg BiConjugate Gradient (BiCG)>>help bicgstab BiConjugate Gradient Stabilized (BiCGSTAB)>>help gmres Generalized Minimum Residual (GMRES)>>help qmr Quasi-Minimal Residual without lookahead (QMR)

Page 12: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Dicas –Sistemas Lineares:Sistemas Sub-Determinados:

Numero de Equações (ne) menor que o numero de incógnitas(ni)

>>A\b assume (ni-ne) variáveis nulas

Sistemas Sobre-Determinados:

Numero de Equações (ne) Maior que o numero de incógnitas(ni)

>>A\b utiliza mínimos quadrados para minimizar os resíduos

Residuo=(A*x-b)

Conceito de Norma:

>>help norm

A norma é utilizada como critério de parada em loops multivariaveis.

M maxj

miji

N

11

M max

imij

j

N

1

2

1 1

N N

ijFi j

M m

Page 13: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Equações Transcendentais:

Equações sem solução analítica:

Ex: f(x)= x*exp(x/2) qual x / f(x)=0?

Resolução no matlab:

>>help optim

>>help fzero

>>help fsolve

Para utilizar as funções deve-se criar uma função com a equação:

function f=funcao_teste(x)

f=x*exp(x/2)

chute inicial

>>fsolve(’funcao_teste’, 0) ou >> fzero(’funcao_teste’, 0)

Page 14: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Sistemas Não Lineares:

Para resolver sistemas de equações:

function f=funcao_teste2(x)

x1=x(1);x2=x(2);

f1=x1*x2-6;

f2=x2+x1-5;

F=[f1;f2];

chute inicial

>>fsolve(’funcao_teste2’, [ 3; 4])

Page 15: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Métodos para Sistemas Não Lineares

Método de Substituição Sucessiva:

O processo iterativo é aplicado à equação algébrica na forma modificada da equação , que pode ser obtida por um rearranjo interno desta equação ou pela simples adição de x em ambos os lados da igualdade.

x g x ( )

x g xk k 1 ( ) k 0 1 2, , ,

xxx

g(x)

45°01* x

Page 16: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Métodos para Sistemas Não Lineares:

Método da Bisseção: k 0 1 2, , ,xx xk R

kLk

1

2

xx sign f x sign f x

xRk

k kRk

Rk

se

caso contrá rio

( ) ( )1

1

xx sign f x sign f x

xLk

k kLk

Lk

se

caso contrá rio

( ) ( )1

1

Os pontos iniciais devem satisfazer a condição:

onde a função sign(f(x)) fornece o sinal da função f(x).

sign f x sign f xL R( ) ( )0 0

x * x

f(x)

x0R

x0L

x1R

Page 17: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Métodos para Sistemas Não Lineares:

Método de Newton Raphson:

O processo iterativo é aplicado diretamente sobre a equação algébrica na forma:

x xf x

f xk k

k

k

1 ( )

( )

x0x * xx1

f(x)

k 1 2 3, , ,

Page 18: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Newton para Sistemas não Lineares:

Para sistemas não lineares:

nxxxxx 321

0),...,,,(

...

0),...,,,(

0),...,,,(

0),...,,,(

321

3213

3212

3211

nn

n

n

n

xxxxf

xxxxf

xxxxf

xxxxf

)(

)(1k

kKK

xJa

xfxx

n

n

n

n

dx

df

dx

df

dx

df

dx

df

dx

df

dx

df

dx

df

dx

df

dx

df

Ja

.........

............

2

3

2

2

2

1

2

1

3

1

2

1

1

1

nf

f

f

f

xf3

2

1

)(

Onde:

Page 19: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Métodos para Sistemas Não Lineares

Método de Newton Secante:

O método de Newton-secante baseia-se na aproximação da derivada da função f(x), que aparece no método clássico de Newton, pela equação de diferenças à esquerda:

f x

df

dx

f

x

f x f x

x xk

x

k k

k kk

( )( ) ( )

1

1

x x f xx x

f x f xk k k

k k

k k

11

1( )

( ) ( )k 1 2 3, , ,

Page 20: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Dicas-Sistemas não lineares:

Uma vez definida a função e criado o arquivo contendo a mesma,Podemos executar a subrotina criada, lembrando que a solução numérica é sujeita a uma tolerância:

Se f(x)>tol, x é solução da equação

Para sistemas multivariaveis iterativos devemos usar a norma:

norma(xk+1 –xk)>tol

Ao usar os métodos do matlab podemos criar um vetor de opções:

op=optimset(‘metodo’)

Op=(‘Propriedade1’, valor, ‘Propriedade2’,valor)

Page 21: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Equações Integrais :

>>help quad [ Método da quadratura de Simpson]

>>help quadl [Método da quadratura de Lobato]

>>help quad8 [Método de Alta ordem]

>>help trapz [ Método Trapezoidal]

>>help bdlquad [Método para Integrais Duplas]

max

min

).(x

x

dxxf

dydxyxfy

y

x

x..),(

max

min

max

min

Page 22: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Métodos Integrais :

Regra dos Trapézios:

Regra de Simpson:

Ex: integral do sin(x)/(x+1) de 0 a 3.14

function f=funcao_01(x)

f=sin(x)./(x+1);

>> quad(‘funcao_01’,0,3.14)

Page 23: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Equações Diferenciais:

Aproximação com Δx pequeno:

>>help diff

Utilizando os métodos integrais:

>>help ode 23 [baixa ordem]

>>help ode23s [baixa ordem rígido]

>>help ode15s [ordem moderada rígido]

>>help ode 45 [ alta ordem]

>>help ode45s [alta ordem rígido]

>>help odeset [ set de propriedades dos métodos]

x

xfxxf

dx

dyx

)()(lim 0

Page 24: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Exemplo Equações Diferenciais:

Simples:

y x t

Function dy= df(t,y)

dy=-0.1*(y-10)

>>[t,y]=ode23(‘df’, [0 60] , 100)

Ou

>>ode23(‘df’, [0 60] , 100)

Mostra a evolução da Integração

100

)10(1.0

oy

ydt

dy

Page 25: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Exemplo Equações Diferenciais:

Sistema:

function dydt = vdp1(t,y)

dydt = [y(2); (1-y(1)^2)*y(2)-y(1)];

>>ode23(‘vdp1’,[0 20],[2 0]);

Ou

>>[t,y]= ode23(‘vdp1’,[0 20],[2 0]);

>>x=y(:,1);

>>u=y(:,2);

xuudt

du

udt

dx

)1( 2

0

2

0

u

xo

Page 26: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Equações Diferenciais:

Problemas de Valor inicial no Matlab:

[t,y]=odexx(‘func’,tspan,yo)

Yo-valor inicialTspan- valor inicial e final de tempoFunc-função a ser integrada

Page 27: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Método de Euler Implicito:

),()(

txgdt

xdf

xo x2x1

f(x)

f(xo)

f(x1)

f(x2)

Condicoes Iniciais:

t=0 f(0)=fo

01

001100 ),(),()(),(

xx

txftxf

t

xf

dt

txdf

01 xxh

Passo de Integracao:

),(.),(),( 000011 txghtxftxf

Page 28: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Método de Euler Implícito :

Para sistemas :

nxxxxx 321

nnn

n

n

n

dx

dfxxxxf

dx

dfxxxxf

dx

dfxxxxf

dx

dfxxxxf

),...,,,(

...

),...,,,(

),...,,,(

),...,,,(

321

33213

23212

13211

),(.),(),(

),(.),(),(

),(.),(),(

),(.),(),(

00001

00300313

00200212

00100111

txfhtxftxf

txfhtxftxf

txfhtxftxf

txfhtxftxf

nnn

Sistema de Equações Algébricas que devem ser resolvidas simultaneamente:

Page 29: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Método de Runge Kutta Implicito :

Page 30: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Métodos Explícitos:

São os métodos implicitos só que a função g usa o valor de t e y no novo ponto.

Exemplo: Euler explicito

Os métodos explícitos são mais estavéis, no entanto se a a função g é não linear o calculo requer a solução de um sistema não linear a cada iteração.

Para facilitar podemos usar o método preditor corretor:

1-usamos o método explicito para calcular o novo ponto

2-usamos o método implícito para corrigir.

),(.),(),( 110011 txghtxftxf

Page 31: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Dicas Equações Diferenciais:

Estabilidade:

Os métodos explícitos requerem passos pequenos para manter a estabilidade, o menor passo que pode ser dado pode ser calculado pela expressão:

Onde p depende do método ( p=2 para Euler) e lambda é o valor caracteristico do sistema.

Os valores característicos , são os valores que multiplicam a variável t.

Page 32: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Dicas Equações Diferenciais:

O passo é limitado pela dinâmica mais rápida do sistema, uma forma de medir essa limitação é dada pelo conceito de rigidez:

Rigidez

Page 33: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Problemas de Contorno:Os métodos vistos para problemas de valor inicial, podem ser aplicados a problemas de contorno substituindo por exemplo t por x.O único problema é que para equações de ordem superior esses métodos requerem como entrada a derivada no primeiro ponto de x o que em alguns casos não é conhecido.

Para contornar esse tipo de problema podemos chutar valores para a derivada e verificar se a solução satisfaz o outro ponto.[Shooting Method]

Ex: C.C. Y=1 para x=1 e x=2

function F=teste(x,y)

F(1)=y(2);

F(2)=6*y(1)/x^2;

>>chute=-1.5

>> [x,y]=ode45(‘teste’,[1 2],[1 chute])

Interpolando: para x=2 y=1.1 Solução Precisa: chute=-1.516

062

22 y

dx

ydx

zdx

yd

2

6

x

y

dx

zd

Page 34: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Equações Diferenciais Parciais:

>>help pde [ toolbox de Equações Dif. Parciais]

>>pdetool [Ferramenta para Simulação]

Usando o pdetool:

1)Devemos desenhar os contornos do problema

2)Em PDE, devemos editar a equação a ser resolvida

3)Solve para resolver o problema.

Uma forma alternativa é usar Diferenças Finitas e transformar o nosso problema em um sistema de equações algébricas.Esse procedimento pode ser usado também para problemas de contorno.

Page 35: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Otimização:

>>help optim [ toolbox de otimização]

>>help optimset [ set de propriedades dos métodos]

Otimização sem restrição:

Problema a ser resolvido:

1)podemos aplicar o conceito de derivada nula, gerando um sistema de equações que podem ser resolvidos como visto anteriormente usando fzero e fsolve.

2)Usando as funções:

>>help fmin [monovariavel]

>>help fminbnd [monovariavel com limites]

>>help fminsearch [multivariavel]

Page 36: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Otimização sem Restrição:

Exemplo:min

function S=test(x)

S=100*(x(2)-x(1).^2).^2+(1-x(1)).^2;

>>x0 = [-1.2, 1]>>[X ,S]= FMINSEARCH(‘test’,X0)

xo = [1, 1] [ ótimo encontrado]S = 0 [valor da função objetivo]

Podemos criar um vetor de Opções:

Op=(optimset,’Propriedade1’,valor,....)

2

1

2212 1.100)( xxxxS

Page 37: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Otimização:

Otimização com restrição:

Problema a ser resolvido:

>>help fmincon [ Restrições lineares e não lineares]

>>help constr [ Restrições lineares]

>>help linprog [ Programação Linear]

>>help quadprog [Programação Quadrática]

>>help lsqlin [Mínimos Quadrados]

Page 38: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Otimização:

Programação Linear:

S,g e h devem ser linear.

Max Devemos Escrever na Forma:

s.a: min f'*x s.a.: A.x <= b

Aeq.x=Beq

Lb-limite inferior Ub-Limite superior

>>[x, S]=linprog(f,A,b,Aeq,Beq,lb,ub)

x=[-121.8936 ; -1.8723; 25.9787 ] S=258.0213

321 423 xxxS

5982 321 xxx

85 31 xx

487.46.1 321 xxx

02 x

423' f

8

4b

982 Aeq 5beq

Inf

Inf

ub 0

5

8

0

7.4

1

6.1A

Inf

Inf

Inf

lb

Page 39: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Otimização:

Programação Não Linear:

[Programação Linear Sucessiva-SLP]

Quando um problema de otimização é não linear, seja na função objetivo ou nas restrições, uma possibilidade para encontrar o ótimo é através da linearização em torno do ponto ótimo.

Além disso podemos utilizar métodos que transformam um problema com restrição em um problema sem restrição.

Exemplo:

[Multiplicadores de Lagrange]

[Função Penalidade]

Para maiores detalhes sobre os métodos, vide na referência

o material sobre otimização.

Page 40: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Otimização:

Programação Quadrática:

Se função objetivo é quadrática e as restrições são lineares, podemos utilizar quadprog do Matlab.

Exemplo: min

s.a.

A função objetivo deve ser escrita na forma: S=0.5*x'*H*x + f'*x

[x,S]=quadprog(H,f,A,b,Aeq,beq)

x=[0.4812 2.4962 0.5263 -0.6023 0.7514] S=17.7989

25

24

23

22

21 5432 xxxxxS

042 54321 xxxxx

025 5431 xxxx

62 321 xxx

024 543 xxx

00000' f

10

0

0

8

0

0

0

0

0

000600

00040

00002

H

1

1

1

1

2

4

0

1

5

2Aeq

2

0

1

0

4

1

0

2

0

1A

0

0beq

0

6b

Page 41: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Otimização:Programação Não Linear:

Exemplo: min

s. a.

Podemos usar fmincon do Matlab, devemos criar um arquivo com a função objetivo e se as restrições são não lineares, precisamos criar outro arquivo com as restrições.

Function S=fob(x)

S=exp(x(1))*( 4*x(1)^2 +2*x(2)^2 +4*x(1)*x(2)+2*x(2)+1);

Function [G,H]=rest(x)

G(1)=1.5+x(1)*x(2)-x(1)-x(2);

G(2)=-x(1)*x(2)-10;

H(1)=0;

>>[x S]=fmincon('fob',[-1;2],[],[],[],[],[],[],'rest')

x=[ -9.5474 1.0474] S=0.0236

12424).exp( 22122

211 xxxxxx

05.1 2121 xxxx

1021 xx

Page 42: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Otimização:

Programação Inteira Mista:

Muitos problemas em operação, projeto, localização e escalonamento de plantas envolvem variáveis que não são contínuas e sim discretas, ou seja, variáveis que são inteiras.

Exemplo:

Um dos algoritmos numéricos mais empregados para PIM e denominada Branch and Bound Technique. O Matlab não possui uma rotina pronta para esse tipo de problema. As rotinas podem ser encontradas no diretório rotinas prontas/otimização/MILP e MINLP

Page 43: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Rotinas Prontas:

No diretório do CD-ROM

Rotinas\MetodosNumericos

Temos uma série de rotinas prontas separadas por tópicos.

As rotinas seguem um padrão bem similar às funções embutidas do Matlab e um help nome da função explica o seu funcionamento.

Page 44: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Variáveis Simbólicas:

>>help symbolic [ toolbox ]

Criando variaveis simbolicas:

>>help sym >> help syms ex: >>syms x y [ cria x e y como var. simbólicas]

Manipulando variáveis simbólicas:Uma vez criada as variáveis simbólicas podemos usar todas as operações matemáticas do matlab.>>f=x+2*y >>g=x*y >>f+g; >>f*g; >>f/g;

Além de algumas operações especificas para var. simbólicas:>>finverse(f); [inversa da função f]>>compose(f,g); [ função composta f(g(x))]>>ezplot(f,2,3); [ plotagem de f entre os limites 2-3]

Page 45: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Variáveis Simbólicas:

O produto das operações pode resultar em expressões matemáticas complicadas:>>simple; [ coloca a expressão na forma mais simples]>>simplify; [ simplifica a expressão]>> pretty; [ exibe a expressão de uma forma mais visual]

Após a manipulação e simplificação pode-se desejar substituir valores para as variáveis simbólicas:>>subs( f,2) [ substitui em f x=2]>>subs(f, x,2) [ substitui em f x=2 se f é função multivariavel]>>subs(f,x,y) [ substitui em f x=y] ex:>> f=x+y>>subs(subs(f,x,2),y,3) [ ans=5] [x=2 e y=3]

Page 46: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Resolução Simbólica:

Equações Algébricas:>>help solve>>[x1,x2,..xn]=solve( ‘eq1’,’eq2’,...’eqn’)

As equações podem ser escritas na forma:

‘x*y=2’ ou ‘x*y-2’

Exemplo:

>> syms x>>f=x+4;>>g=‘x+4’;>>solve(f) [ ans=-4]>>solve(g) [ ans=-4]A vantagem é que o solve retorna todas as soluções do sistema, no entanto, o solve não é muito robusto. Não resolvendo sistemas muito complexos.

Page 47: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Resolução Simbólica:

Derivadas Simbólicas:>> help diff>>syms x y>>f= 2*x + x*y + 2*y;>>diff(f, x) [ derivada parcial em relação a x]

>>help jacobian:>>jacobian( [f; g], [ x ; y])

Integrais Indefinidas:

>>help int>>int(g) [ g(x), integra g em relação a x com constante de int=0]>>int(g,x) [ g(x), integra g em relação a x com constante de int=0]>>int(g,a,b,c) [integral definida entre a e b]

Se a constante de integração é diferente de zero, devemos somar essa constante à solução obtida

Page 48: Curso MATLAB 6 Instrutor: Marcelo Escobar Métodos Númericos para Engenheiros.

Resolução Simbólica:Equações Diferenciais:

>>help dsolve

>>dsolve(‘Dy=4*y’)>>dsolve(‘Dy=4*y’, ‘y(0)=1’)>>dsolve( eqdif 1, eqdif 2, ...., cond inicial 1,....)

Exemplo:>>S = dsolve('Dx = y', 'Dy = -x', 'x(0)=0', 'y(0)=1')

As vezes, o matlab retorna a resposta em uma estrutura:

S.x= sin(t)S.y=cos(t)