Вы находитесь на странице: 1из 34

MATLAB Avan cado

Melissa Weber Mendon ca1


1 Universidade

Federal de Santa Catarina

2011.2

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

1 / 25

Refer encias a fun co es denidas inline

Podemos usar fun c oes an onimas para chamar fzero.

Exemplo: >> >> ou ainda >> x = fzero(@(x) x.^2-4,6) quadratica = @(x) x.^2-4; x = fzero(quadratica,6)

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

2 / 25

Refer encias a fun co es denidas em arquivo

Se a fun c ao para a qual gostar amos de encontrar uma raiz estiver em um arquivo pr oprio, no formato [y] = minhafuncao(x) comandos

Podemos chamar a fun c ao fzero a partir do ponto x0, escrevendo >> x = fzero(@minhafuncao,x0)

bissec c ao, secante e interpola c ao quadr atica inversa.

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

3 / 25

Exemplo

Encontrar uma das raizes de f (x ) = x 2 4 a partir do ponto x = 6.

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

4 / 25

Exemplo

Encontrar uma das raizes de f (x ) = x 2 4 a partir do ponto x = 6. >> >> quadratica = @(x) x.^2-4; fzero(quadratica,-6)

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

4 / 25

Exemplo

Encontrar uma raiz de f (x ) = e 2x 3.

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

5 / 25

Exemplo

Encontrar uma raiz de f (x ) = e 2x 3. >> >> fun = @(x) exp(2*x)-3; fzero(fun,0)

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

5 / 25

Raizes de um polin omio: roots


Para encontrar as raizes de um polin omio de grau n da forma p (x ) = a0 + a1 x + a2 x 2 + . . . + an x n primeiramente representamos este polin omio como um vetor linha p no MATLAB, cujas componentes s ao os coecientes dos termos em ordem descendente de grau, ou seja, >> p = [an an1 a2 a1 a0 ]

Em seguida, usamos o comando >> r = roots(p)

resultando em um vetor coluna r com as raizes deste polin omio.

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

6 / 25

Exemplo
p (x ) = t 3 + 2t 2 5t 6 >> >> p = [1 2 -5 -6] roots(p)

Figura: p (x ) = t 3 + 2t 2 5t 6 e suas raizes.


M. Weber Mendon ca (UFSC) MATLAB Avan cado 2011.2 7 / 25

Sistema de equa co es n ao lineares: fsolve


Para encontrarmos a solu c ao de um sistema de equa co es n ao lineares da forma F (x ) = 0 onde F : Rn Rm , usamos a fun c ao fsolve, identicamente ` a fun c ao fzero: >> fsolve(@minhafuncao,x0)

se utilizarmos uma fun c ao em arquivo, ou >> fsolve(fun,x0)

se utilizarmos uma fun c ao an onima. Observa c ao: Este comando faz parte da Optimization Toolbox, que pode n ao estar dispon vel na sua instala c ao do MATLAB.
M. Weber Mendon ca (UFSC) MATLAB Avan cado 2011.2 8 / 25

Exemplo

Resolver o sistema de equa c oes


2 + 4x 2 16 y1 = 3x1 2 2 3x 2 5 y2 = 2x1 2

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

9 / 25

Exemplo

Resolver o sistema de equa c oes


2 + 4x 2 16 y1 = 3x1 2 2 3x 2 5 y2 = 2x1 2

>> >>

fun = @(x) [3*x(1).^2+4*x(2).^2-16; 2*x(1).^2-3*x(2).^2-5]; fsolve(fun,[1;1])

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

9 / 25

Exemplo

Encontrar a raiz de F (x ) =
2+x x x1 2 3 sin(x1 + 2x2 3x3 )

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

10 / 25

Exemplo

Encontrar a raiz de F (x ) = >> >>


2+x x x1 2 3 sin(x1 + 2x2 3x3 )

fun = @(x) [x(1).^2+x(2).*x(3); sin(x(1)+2*x(2)-3*x(3))]; fsolve(fun,[1;1;1])

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

10 / 25

Exemplo

Encontrar a raiz de F (x ) = >> >> >>


2+x x x1 2 3 sin(x1 + 2x2 3x3 )

fun = @(x) [x(1).^2+x(2).*x(3); sin(x(1)+2*x(2)-3*x(3))]; fsolve(fun,[1;1;1]) fsolve(fun,[0;0;0])

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

10 / 25

Otimiza c ao: Minimiza c ao de fun c oes

Agora, queremos resolver o problema minimizar f (x ).

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

11 / 25

Minimiza c ao de uma fun c ao de v arias vari aveis: fminsearch

Para encontrarmos o m nimo de uma fun c ao real de v arias vari aveis, a partir de um ponto inicial x0, usamos o comando >> x = fminsearch(@funcao,x0)

Se quisermos tamb em saber o valor da fun c ao no ponto de m nimo, usamos a sintaxe >> [x,fval] = fminsearch(@funcao,x0)

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

12 / 25

Exemplo

Minimizar a fun c ao
2 2 f = e x1 (4x1 + 2x2 + 4x1 x2 + 2x2 + 1)

a partir do ponto inicial x0 = (0, 0).

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

13 / 25

Exemplo

Minimizar a fun c ao
2 2 f = e x1 (4x1 + 2x2 + 4x1 x2 + 2x2 + 1)

a partir do ponto inicial x0 = (0, 0). >> >>

f=@(x)exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1); fminsearch(f,[0;0])

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

13 / 25

Exemplo

Minimizar
2 2 f (x ) = 100(x2 x1 ) + (1 x1 )2

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

14 / 25

Exemplo

Minimizar
2 2 f (x ) = 100(x2 x1 ) + (1 x1 )2

>> >>

f = @(x) 100*(x(2)-x(1).^2).^2+(1-x(1)).^2 fminsearch(f,[0;0])

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

14 / 25

Minimiza c ao de uma fun c ao de uma vari avel com restri co es: fminbnd

Para encontrarmos o m nimo de uma fun c ao de uma vari avel dentro de um intervalo [a, b ], usamos o comando >> x = fminbnd(@funcao,a,b)

Se quisermos tamb em saber o valor da fun c ao no ponto de m nimo, usamos a sintaxe >> [x,fval] = fminbnd(@funcao,a,b)

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

15 / 25

Exemplo

Minimizar f (x ) = x nos intervalos [0, 1] e [10, 1].

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

16 / 25

Exemplo

Minimizar f (x ) = x nos intervalos [0, 1] e [10, 1]. >> >> >> f = @(x) x; fminbnd(f,0,1) fminbnd(f,-10,1)

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

16 / 25

Exemplo

Minimizar f (x ) = x 2 1 no intervalo [1, 3].

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

17 / 25

Exemplo

Minimizar f (x ) = x 2 1 no intervalo [1, 3]. >> >> f = @(x) x.^2; fminbnd(f,1,3)

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

17 / 25

interp1, interp2, interp3 e interpn

Para interpolarmos um conjunto de pontos em 1D, 2D, 3D ou em N dimens oes, usamos os comandos interp1 interp2 interp3 interpn respectivamente.

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

18 / 25

Interpola c ao 1D: interp1

O comando >> yi = interp1(x,Y,xi,method)

interpola os dados (x,Y) nos novos pontos xi, usando o m etodo method, que pode ser: nearest Vizinho mais pr oximo linear Interpola c ao linear (default) spline Splines c ubicos cubic Interpola c ao por polin omios de Hermite

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

19 / 25

Exemplo
>> >> >> >> >> >> >> >> >> >> >> >> x = 0:10; y = sin(x); xi = 0:.25:10; yi = interp1(x,y,xi); plot(x,y,o,xi,yi); hold on; zi = interp1(x,y,xi,nearest); plot(xi,zi,:k); wi = interp1(x,y,xi,spline); plot(xi,wi,m); ui = interp1(x,y,xi,cubic); plot(xi,ui,--g)

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

20 / 25

Interpola c ao 2D: interp2

O comando >> ZI = interp2(X,Y,Z,XI,YI,method)

interpola os dados (X,Y,Z) nos novos pontos (XI,YI) usando o m etodo method, que pode ser nearest Vizinho mais pr oximo linear Interpola c ao linear (default) spline Splines c ubicos cubic Interpola c ao c ubica, se os dados forem uniformemente espa cados; sen ao, e o mesmo que spline.

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

21 / 25

Exemplo

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

22 / 25

Interpola c ao polinomial: polyfit


O comando >> p = polyfit(x,y,n)

encontra os coecientes do polin omio p (x ) de grau n que interpola os dados y (i ) = p (x (i )), em um sentido de m nimos quadrados. O vetor p resultante cont em os coecientes do polin omio em ordem descendente de pot encias. Exemplo: Tentar interpolar com um polin omio os mesmos pontos do exerc cio anterior, ou seja, >> >> x = 0:10; y = sin(x);

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

23 / 25

Integra c ao num erica: trapz

Para calcularmos uma aproxima c ao num erica de a f (x )dx , primeiramente precisamos representar a fun c ao f em um conjunto de pontos: >> >> x = 0:pi/100:pi; y = sin(x);

Agora, usamos o comando trapz: >> z = trapz(x,y)

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

24 / 25

Integra c ao num erica: quad

Para calcularmos uma aproxima c ao num erica de a f (x )dx pela quadratura de Simpson (adaptativa), usamos o comando >> q = quad(fun,a,b)

em que fun e uma refer encia a uma fun c ao.

M. Weber Mendon ca (UFSC)

MATLAB Avan cado

2011.2

25 / 25

Вам также может понравиться