curso matlab 6 metnum

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

Upload: lookenya

Post on 26-Jun-2015

298 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Curso Matlab 6 Metnum

Curso MATLAB 6

Instrutor: Marcelo Escobar

Métodos Númericos para Engenheiros

Page 2: Curso Matlab 6 Metnum

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 Metnum

Á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 Metnum

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 Metnum

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 Metnum

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 Metnum

Exemplo Método de Gauss:

yxA

x

x

x

=

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

.

963

.087654321

3

2

1Exemplo:

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 Metnum

Exemplo Método de Crammer:

yxA

x

x

x

=

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

.

963

.087654321

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 Metnum

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 1 1 0 1 2( ) , , ... , , , , ...e

Page 10: Curso Matlab 6 Metnum

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 Metnum

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 Metnum

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 Metnum

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 Metnum

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 Metnum

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 =012, , ,K

xxx

g(x)

45°01* x

Page 16: Curso Matlab 6 Metnum

Métodos para Sistemas Não Lineares:

Método da Bisseção: k =012, , ,Kxx xk Rk

Lk

+ =+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 Metnum

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 =12 3, , ,K

Page 18: Curso Matlab 6 Metnum

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

xxxxfxxxxfxxxxf

)(

)(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 Metnum

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 =12 3, , ,K

Page 20: Curso Matlab 6 Metnum

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 Metnum

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 Metnum

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 Metnum

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 Metnum

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

ydtdy

Page 25: Curso Matlab 6 Metnum

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 ==

uxo

Page 26: Curso Matlab 6 Metnum

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 Metnum

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 Metnum

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 Metnum

Método de Runge Kutta Implicito :

Page 30: Curso Matlab 6 Metnum

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 Metnum

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 Metnum

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 Metnum

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

dxyd

x

zdx

yd=

2

6

x

y

dx

zd=

Page 34: Curso Matlab 6 Metnum

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 Metnum

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 Metnum

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,....)

( ) ( )21

2212 1.100)( xxxxS −+−=

Page 37: Curso Matlab 6 Metnum

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 Metnum

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 [ ]5=beq⎥⎥⎥

⎢⎢⎢

+

+=

Inf

Inf

ub 0⎥⎦

⎤⎢⎣

⎡−−

=5

8

0

7.4

1

6.1A

⎥⎥⎥

⎢⎢⎢

−−−

=Inf

Inf

Inf

lb

Page 39: Curso Matlab 6 Metnum

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 Metnum

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 Metnum

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 Metnum

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 Metnum

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 Metnum

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 Metnum

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 Metnum

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 Metnum

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 Metnum

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)