2011.2
2011.2
1 / 46
Exemplo
2011.2
2 / 46
Exemplo: >> >> >> >> [x,y] = meshgrid(-3:0.5:3); tri = delaunay(x,y) z = x.^2+3*y-x.*y.^2; trimesh(tri,x,y,z)
2011.2
3 / 46
Volumes: slice
Quando temos um gr aco de volume, por exemplo, de um s olido preenchido, podemos visualizar se c oes bidimensionais deste volume usando o comando >> slice(x,y,z,v,xslice,yslice,zslice)
para visualizarmos o volume denido por v = f (x , y , z ) na superf cie denida por xslice, yslice, zslice.
2011.2
4 / 46
Exemplo
Queremos visualizar o volume denido por v = xe (x
2 y 2 z 2 )
com 2 x 2, 2 y 2 e 2 z 2. >> >> >> >> >> >> [x,y,z] = meshgrid(-2:.2:2); v = x.*exp(-x.^2-y.^2-z.^2); xslice = [-1.2,.8,2]; yslice = 0; zslice = []; slice(x,y,z,v,xslice,yslice,zslice)
2011.2
5 / 46
para a fun c ao f (x ) = x 2 + 1. Para isso, podemos denir uma fun c ao an onima usando a seguinte sintaxe: >> e, em seguida >> >> x = -1:0.1:1 plot(x,f(x)) f = @(x) x.^2+1
2011.2
6 / 46
Fun co es an onimas
Se quisermos criar uma fun c ao an onima com mais de uma vari avel, usamos >> f = @(x,y,z,t) x+y+z+t
Exemplo: >> >> >> >> x = -3:0.1:3; [x,y] = meshgrid(x); f = @(x,y) x.^2+3*y-x.*y.^2 surf(x,y,f(x,y));
2011.2
7 / 46
2011.2
8 / 46
2011.2
9 / 46
2011.2
9 / 46
2011.2
10 / 46
Exemplo
>> >>
2011.2
11 / 46
Exemplo
>> >>
2011.2
11 / 46
2011.2
12 / 46
2011.2
12 / 46
Aqui, vamos supor que queremos resolver um sistema linear, ou seja, um problema do tipo Encontrar x Rn tal que Ax = b com A Rmn e b Rm .
2011.2
13 / 46
Primeiramente, se a matriz A for quadrada e invers vel, podemos encontrar x = A1 b . usando o comando >> x = inv(A)*b
2011.2
14 / 46
Se, por outro lado, n ao for desej avel encontrar a inversa da matriz A, podemos usar o operador \ para resolver Ax = b : >> x = A\b
2011.2
15 / 46
Sabemos que a elimina c ao gaussiana leva uma matriz A em duas matrizes L e U tais que A = LU Assim, Ax = b (LU )x = b Ly Ux = b = y
2011.2
16 / 46
Sistemas quadrados: lu
Para encontrarmos a decomposi c ao LU de uma matriz A no MATLAB, usamos o comando >> [L,U] = lu(A)
2011.2
17 / 46
Se n ao quisermos nos preocupar com o algoritmo usado na resolu c ao do sistema, temos uma outra op c ao no comando linsolve. >> x = linsolve(A,b)
2011.2
18 / 46
Exemplos
Testar a solu c ao com inv(A)*b A\b [L,U] = lu(A); U\(L\b) linsolve(A,b)
3 17 10 1 1. A = 2 4 2 , b = 2 6 18 12 3
2011.2
19 / 46
Exemplos
Testar a solu c ao com inv(A)*b A\b [L,U] = lu(A); U\(L\b) linsolve(A,b)
3 17 10 1 1. A = 2 4 2 , b = 2 6 18 12 3
2011.2
19 / 46
Exemplos
Testar a solu c ao com inv(A)*b A\b [L,U] = lu(A); U\(L\b) linsolve(A,b)
1 4 7 1 2. A = 2 5 8 , b = 2 2 5 8 3
2011.2
20 / 46
Exemplos
Testar a solu c ao com inv(A)*b A\b [L,U] = lu(A); U\(L\b) linsolve(A,b)
1 4 7 1 2. A = 2 5 8 , b = 2 2 5 8 3
x = ??
2011.2
20 / 46
Exemplos
3. A =
10 1 ,b = 1 1
1 1
2011.2
21 / 46
Exemplos
3. A =
10 1 ,b = 1 1
1 1
x=
0 1
2011.2
21 / 46
Exemplos
Testar a solu c ao com inv(A)*b A\b [L,U] = lu(A); U\(L\b) linsolve(A,b)
4. A =
1.0001 1 ,b = 1 1
2 2
2011.2
22 / 46
Exemplos
Testar a solu c ao com inv(A)*b A\b [L,U] = lu(A); U\(L\b) linsolve(A,b)
4. A =
1.0001 1 ,b = 1 1
2 2
x=
0 2
2011.2
22 / 46
Exemplos
Testar a solu c ao com inv(A)*b A\b [L,U] = lu(A); U\(L\b) linsolve(A,b)
4. A =
1.0001 1 ,b = 1 1
2.0001 2
2011.2
22 / 46
Exemplos
Testar a solu c ao com inv(A)*b A\b [L,U] = lu(A); U\(L\b) linsolve(A,b)
4. A =
1.0001 1 ,b = 1 1
2.0001 2
x=
1 1
Este sistema e chamado mal-condicionado: uma mudan ca pequena no lado direito muda completamente a solu c ao.
2011.2
22 / 46
Sistemas retangulares
Para resolver sistemas em que A e m n mas m = n, podemos repetir os comandos, com algumas ressalvas:
2011.2
23 / 46
Sistemas retangulares
Para resolver sistemas em que A e m n mas m = n, podemos repetir os comandos, com algumas ressalvas:
x = A\b e a solu c ao exata, caso esta exista; sen ao, e a solu c ao do sistema em m nimos quadrados.
2011.2
23 / 46
Sistemas retangulares
Para resolver sistemas em que A e m n mas m = n, podemos repetir os comandos, com algumas ressalvas:
2011.2
23 / 46
Sistemas retangulares
Para resolver sistemas em que A e m n mas m = n, podemos repetir os comandos, com algumas ressalvas:
linsolve(A,b) resolve o sistema atrav es da decomposi c ao QR de A: A = QR , onde Q e ortogonal e quadrada, e R e (quase) triangular superior.
2011.2
23 / 46
Exemplo
2011.2
24 / 46
Exemplo
2011.2
25 / 46
Exemplo
2011.2
26 / 46
pcg Gradiente conjugado precondicionado bicg Gradiente bi-conjugado (gradiente conjugado para matrizes n ao necessariamente sim etricas) gmres Generalized minimum residual method (com restarts) lsqr LSQR (quadrados m nimos)
2011.2
27 / 46
Agora, queremos resolver o problema de encontrar x Rn tal que F (x ) = 0 onde F : Rn Rm (onde m ou n podem ser iguais a 1).
2011.2
28 / 46
Aqui, o problema que nos interessa e encontrar uma raiz da equa c ao f (x ) = 0 onde f : R R. Para isto usamos o comando >> x = fzero(fun,x0)
2011.2
29 / 46
Exemplo: >> >> ou ainda >> x = fzero(@(x) x.^2-4,6) quadratica = @(x) x.^2-4; x = fzero(quadratica,6)
2011.2
30 / 46
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)
2011.2
31 / 46
Exemplo
2011.2
32 / 46
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)
2011.2
32 / 46
Exemplo
2011.2
33 / 46
Exemplo
2011.2
33 / 46
2011.2
34 / 46
Exemplo
p (x ) = t 3 + 2t 2 5t 6 >> >> p = [1 2 -5 -6] roots(p)
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 36 / 46
Exemplo
2011.2
37 / 46
Exemplo
>> >>
2011.2
37 / 46
Exemplo
Encontrar a raiz de F (x ) =
2+x x x1 2 3 sin(x1 + 2x2 3x3 )
2011.2
38 / 46
Exemplo
2011.2
38 / 46
Exemplo
2011.2
38 / 46
2011.2
39 / 46
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)
2011.2
40 / 46
Exemplo
Minimizar a fun c ao
2 2 f = e x1 (4x1 + 2x2 + 4x1 x2 + 2x2 + 1)
2011.2
41 / 46
Exemplo
Minimizar a fun c ao
2 2 f = e x1 (4x1 + 2x2 + 4x1 x2 + 2x2 + 1)
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])
2011.2
41 / 46
Exemplo
Minimizar
2 2 f (x ) = 100(x2 x1 ) + (1 x1 )2
2011.2
42 / 46
Exemplo
Minimizar
2 2 f (x ) = 100(x2 x1 ) + (1 x1 )2
>> >>
2011.2
42 / 46
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)
2011.2
43 / 46
Exemplo
2011.2
44 / 46
Exemplo
Minimizar f (x ) = x nos intervalos [0, 1] e [10, 1]. >> >> >> f = @(x) x; fminbnd(f,0,1) fminbnd(f,-10,1)
2011.2
44 / 46
Exemplo
2011.2
45 / 46
Exemplo
2011.2
45 / 46
Para interpolarmos um conjunto de pontos em 1D, 2D, 3D ou em N dimens oes, usamos os comandos interp1 interp2 interp3 interpn respectivamente.
2011.2
46 / 46