Funções de várias variáveis

Yolanda K. Saito Furuya

Um pequeno resumo dos comandos de Maple V para derivação e uso em máximos e mínimos.

1. Definição de função de 2 variáveis:

> restart; # limpando a memória

> f := (x,y) -> (2*x^2+y^2)*exp(1-x^2-y^2);

[Maple Math]

> f(x,y); f(a,b); f(1,2); avalia a função f em (x,y), (a,b) e (1,2)

[Maple Math]

[Maple Math]

[Maple Math]

2. Definindo uma expressão:

> gxy := (2*x^2+y^2)*exp(1-x^2-y^2);

[Maple Math]

> subs(x=1,y=2,gxy); avalia a expressao gxy no ponto (1,2)

[Maple Math]

3. Transformando a expressão acima em função e chamando de g:

> g :=unapply(gxy,x,y);

[Maple Math]

> g(1,2);

[Maple Math]

4. Derivando uma expressão e gerando a expressão da derivada:

> diff(f(x,y),x);

[Maple Math]

> diff(f(x,y),x,x,x); diff(f(x,y),x$3);

[Maple Math]
[Maple Math]

[Maple Math]
[Maple Math]

> diff(f(x,y),x,y);

[Maple Math]

5. Função derivada, usando o operador derivação D:

> fx :=D[1](f); derivada de f em relação à 1a. variável

[Maple Math]

> fy :=D[2](f); derivada de f em relação à 2a. variável

[Maple Math]

> fxy:= D[1,2](f); fxx := D[1$2](f); fyy:=D[2$2](f); derivadas de ordem superior

[Maple Math]

[Maple Math]
[Maple Math]

[Maple Math]
[Maple Math]

> D[1,1,2,2,2](f); D[1$2,2$3](f);

[Maple Math]
[Maple Math]
[Maple Math]

[Maple Math]
[Maple Math]
[Maple Math]

6. Função derivada, utilizando a expressão da derivada obtida com o diff.

> unapply(diff(f(x,y),x),x,y); fabricando uma função derivada, a partir da expressão da derivada.

[Maple Math]

7. Plano tangente ao gráfico de função de 2 variáveis em (x0,y0).

> with(plots): with(plottools):

> x0 := 1: y0 := 1.5: z0 := f(x0,y0): escolhendo o ponto

> Tang:= (x,y) -> z0 + fx(x0,y0)*(x-x0) + fy(x0,y0)*(y-y0); função do plano tangente

[Maple Math]

> Tang(x,y);

[Maple Math]

> Ponto := sphere([x0,y0,z0],.1):

> PlanoTang := plot3d(Tang(x,y), x=0..2,y=0..2, style=wireframe, color=blue):

> grafico := plot3d(f(x,y),x=0..2,y=0..2, style=patchcontour):

> display({grafico,PlanoTang,Ponto});

[Maple Plot]

8. Localizando pontos críticos de f através do gradiente:

> solve({fx(x,y)=0, fy(x,y)=0},{x,y});

[Maple Math]

Portando temos os pontos:

> p1:=[0,0]: p2:=[1,0]: p3:=[-1,0]: p4:=[0,1]: p5:=[0,-1]:

9. Construindo a matriz hessiana Hf como matriz de funções, com as funções fxx,fxy,fyy acima definidas:

> Hf := matrix(2,2,[fxx,fxy,fxy,fyy]);

[Maple Math]

10. Classificando os pontos críticos:

> H1:=Hf(op(p1)); H2:=Hf(op(p2)); H3:=Hf(op(p3)); H4:=Hf(op(p4)); H5:=Hf(op(p5)); avaliando a hessiana nos pontos. A função op tira o "[ ] ".

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

Pelos resultados, p1 é ponto de mínimo, p2 e p3 pontos de máximo, p4 e p5 pontos de sela.

11. Conferindo os resultados, com gráficos:

> plot3d(f(x,y), x=-2..2, y=-2..2, style=patchcontour, orientation=[85,40]);

[Maple Plot]

> with(plots):

> gradplot(f(x,y),x=-2..2,y=-2..2); fig1 :=%: campo de vetores gradiente

[Maple Plot]

> contourplot(f(x,y),x=-2..2,y=-2..2); fig2 := %: curvas de nível

[Maple Plot]

> display({fig1,fig2}, scaling=constrained); curvas de nível e os vetores gradiente, juntos

[Maple Plot]

Veja que nos pontos de máximo, os vetores gradiente da vizinhança apontam para eles, ao contrário do ponto de mínimo. No ponto de sela, passa uma curva de nível que faz um X no ponto.

>

12. Trabalhando com multiplicadores de Lagrange: (exerc. 5d)

> restart; with(plots):

> f := (x,y,z) -> x^2+y^2+z^2;

[Maple Math]

> g1 := (x,y,z) -> x^2-x*y+y^2-z^2-1;

[Maple Math]

> g2 := (x,y,z)->x^2+y^2-1;

[Maple Math]

> implicitplot3d(g1(x,y,z)=0,x=-2..2,y=-2..2,z=-2..2, style=wireframe, color=blue); fig1 := %:

[Maple Plot]

> implicitplot3d(g2(x,y,z)=0,x=-2..2,y=-2..2,z=-2..2, style=patchnogrid); fig2 := %:

[Maple Plot]

> display({fig1,fig2}, orientation=[0,55]);

[Maple Plot]

O vínculo é a curva de intersecção do hiperbolóide com o cilindro, dando duas componentes semelhantes a uma circunferência. É um conjunto compacto - fechado e limitado.

> fx := D[1](f); fy:=D[2](f); fz:=D[3](f);

[Maple Math]

[Maple Math]

[Maple Math]

> g1x := D[1](g1); g1y:=D[2](g1); g1z:=D[3](g1);

[Maple Math]

[Maple Math]

[Maple Math]

> g2x := D[1](g2); g2y:=D[2](g2); g2z:=D[3](g2);

[Maple Math]

[Maple Math]

[Maple Math]

> solve({fx(x,y,z)=lambda*g1x(x,y,z)+mu*g2x(x,y,z), fy(x,y,z)=lambda*g1y(x,y,z)+mu*g2y(x,y,z), fz(x,y,z)=lambda*g1z(x,y,z)+mu*g2z(x,y,z), g1(x,y,z)=0, g2(x,y,z)=0},{x,y,z,lambda,mu});

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

Logo, os pontos críticos imediatos sobre o vínculo são:

> p[1]:=[1,0,0]: p[2] :=[-1,0,0]: p[3] :=[0,1,0]: p[4] :=[0,-1,0]:

E também:

> Z := sqrt(2)/2; Z e -Z são RootOf(2_Z^2 -1)=raízes de 2*Z^2-1

> p[5] :=[-Z,Z,Z]: p[6]:=[Z,-Z,-Z]:

[Maple Math]

> for i from 1 to 6 do evalf(f(op(p[i]))) od;

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

Como o vínculo no problema é um COMPACTO, f tem máximo e mínimo sobre o vínculo, e portanto, os 4 primeiros pontos são de mínimo e os 2 últimos, de máximo.

> fig3 := implicitplot3d(f(x,y,z)=1, x=-2..2,y=-2..2,z=-2..2, style=wireframe,color=green):

> fig4 := implicitplot3d(f(x,y,z)=1.5, x=-2..2,y=-2..2,z=-2..2, style=wireframe, color=red):

> display({fig1,fig2,fig3,fig4});

[Maple Plot]

>

>