Documente Academic
Documente Profesional
Documente Cultură
Nmero complexo ( 1 )
I
> I;
I
Nmero (e) exp(1) > exp(1);
e
11
4.4. CONSTANTES E FUNES DA ARITMTICA
Aqui temos o nmero representado pela constante Pi e as funes:
ifactor => faz a decomposio de um nmero em fatores primos.
iquo => determina o quociente da diviso entre dois nmeros.
igcd => determina o mximo divisor comum entre dois nmeros.
root => calcula a raiz n-sima de um nmero.
Nota: Comandos para trabalhar com nmeros inteiros.
Os exemplos a seguir ilustram como cada um destes comandos devem ser usados:
Exemplos:
> Pi;
t
> evalf(Pi);
3.141592654
> evalf(Pi,100);
3.14159265358979323846264338327950288419716939937510582097494459230 \
7816406286208998628034825342117068
> ifactor(20);
( ) 2
2
( ) 5
> ifactor(13);
( ) 13
> ifactor(144);
( ) 2
4
( ) 3
2
> ifactor(120);
( ) 2
3
( ) 3 ( ) 5
> iquo(144,120);
1
> iquo(2401,33);
72
> igcd(123,45);
3
> igcd(144,120);
24
> igcd(1500,650);
50
> sqrt(n);
n
> sqrt(2);
2
> evalf(%);
1.414213562
> evalf(sqrt(3));
1.732050808
> evalf(sqrt(10),20);
3.1622776601683793320
> sqrt(3.1);
1.760681686
> root [3](125);
5
> root [3](25);
5
( ) / 2 3
> evalf(%);
2.924017738
> evalf(root [6](127));
2.241991457
12
4.5. EXPRESSES ARITMTICAS
Vamos agora trabalhar com algumas expresses aritmticas j que sabemos como manipular com os
operadores bsicos.
Devemos usar parnteses ( ) nestas expresses, pois para o Maple no vlido, por exemplo uma
expresso como {5*(37+12)/(57-15)]*(10+3)}/20, embora tenha sentido matemtico. A expresso
digitada desta maneira ir causar um chamado erro de sintaxe, aparecendo na tela aps execuo a
mensagem Error, use intersect for sets, que indica que as chaves { } so usadas para interseo
entre conjuntos. Confira!
> {[5*(37+12)/(57-15)]*(10+3)}/20;
1
20
{ }
(
(
455
6
O correto ser:
> ((5*(37+12)/(57-15))*(10+3))/20;
91
24
EXERCCIO: Calcule o valor das seguintes expresses aritmticas:
1) 180 + {2 x [5 x 3 + (8 x 4 - 2 x 9) - (19 x 3 - 37)]}
2) {83 - [56 + (6 x 8 - 28) - 20 + 5]} - 12
3) 58 - {30 + 4 x 3 - [25 - (12 - 4) + 3]}
4) {(9 x 4 + 6) : 7 + [(15 + 2) x 3] : 17} - 9
5) 82 + {33 x [132 : (7 - 1) x (18 - 7)] - 3 x 22}
6) 9600 : {[200 + (3 x 200 - 500) + 400 : 20] + 4 x 20}
7) ( )
2
1
Respostas: 1) 198 2) 10 3) 36 4) 0 5) 8002 6) 24
Soluo:
1) > 180+(2*(5*3+(8*4-2*9)-(19*3-37)));
198
3) > 58-(30+4*3-(25-(12-4)+3));
36
7) > I^2;
-1
13
4.6. OPERAES COM CONJUNTOS
Para tratar de conjuntos finitos, o Maple apresenta uma srie de comandos:
Operao Smbolo Objetivo
Unio union Faz a operao de unio entre conjuntos
Interseco intersect Faz a operao de interseo entre conjuntos
Diferena minus Retira um conjunto de outro
Valor mximo max Encontra o maior valor de um conjunto
Valor mnimo min Encontra o menor valor de um conjunto
Exemplo: Considerando os conjuntos A = {-2, 3, 4, 7, -18, 15}, B = {-9, 3, 6, 8, 10, -11} e
C = {0, -4, 3, 9, 7, 8, -14}, fazer as seguintes operaes:
a) B A b) C A c) C B d) C B A e) ) ( C B A f) ) ( ) ( C A B A
g) B A h) A B i) Mximo(A) j) Mnimo (B) k) Mximo(A)-Mnimo(B)
Soluo: Inicialmente vamos definir os conjuntos A, B e C, na tela do Maple.
> A:={-2,3,4,7,-18,15};
:= A { } , , , , , -18 -2 3 4 7 15
> B:={-9,3,6,8,10,-11};
:= B { } , , , , , -11 -9 3 6 8 10
> C:={0,-4,3,9,7,8,-14};
:= C { } , , , , , , -14 -4 0 3 7 8 9
a) > A union B;
{ } , , , , , , , , , , -18 -11 -9 -2 3 4 6 7 8 10 15
b) > A union C;
{ } , , , , , , , , , , -18 -14 -4 -2 0 3 4 7 8 9 15
c) > B union C;
{ } , , , , , , , , , , -14 -11 -9 -4 0 3 6 7 8 9 10
d) > A union B union C;
{ } , , , , , , , , , , , , , , -18 -14 -11 -9 -4 -2 0 3 4 6 7 8 9 10 15
e) > A union (B intersect C);
{ } , , , , , , -18 -2 3 4 7 8 15
f) > (A union B)intersect(A union C);
{ } , , , , , , -18 -2 3 4 7 8 15
g) > A minus B;
{ } , , , , -18 -2 4 7 15
h) > B minus A;
{ } , , , , -11 -9 6 8 10
i) > max(-2,3,4,7,-18,15);
15
j) > min(-9,3,6,8,10,-11);
-11
k) > max(-2,3,4,7,-18,15) - min(-9,3,6,8,10,-11);
26
Exerccio: Sejam os conjuntos A = {2, 3, 4, 6, 12, -3}, B = {4, 5, 8, 3, -2, -5} e C = {6, 12, -3}.
Calcular:
a) A unio B unio C b) A interseo B interseo C c) A unio ( B interseo C)
d) (A unio B) interseo ( A unio C) e) A - B - C f) C - A - B
g) A unio ( B - C) h) (A - C) interseo (B - C)
14
4.7. FUNES ELEMENTARES:
Funo Smbolo Exemplo
Exponencial exp(x)
Logaritmo natural ln(x) > ln(exp(1)); 1
Raiz quadrada sqrt(x)
Valor absoluto ou Mdulo abs(x)
Trigonomtricas
sin(x); cos(x); tan(x)
sec(x); csc(x); cot(x)
Trigonomtricas Inversas
(determinao do arco ou ngulo)
arcsin(x); arccos(x); arctan(x)
arcsec(x); arccsc(x); arccot(x)
Exemplos:
> sqrt(3);
3
> evalf(%);
1.732050808
> abs(x);
x
> abs(-2);
2
> exp(x);
e
x
> exp(1);
e
> evalf(%,20);
2.7182818284590452354
> ln(10);
( ) ln 10
> evalf(%);
2.302585093
> log(x);
( ) ln x
> log(10);
( ) ln 10
> evalf(%);
2.302585093
> sin(Pi);
0
> sin(2);
( ) sin 2
> evalf(%);
.9092974268
> sin(Pi/4);
1
2
2
> arctan(infinity);
1
2
t
> tan(Pi/2);
Error, (in tan) numeric exception: division by zero
15
4.8. VARIVEIS:
O Maple sempre interpreta uma letra como sendo uma varivel. Para fixarmos o valor da varivel x
como um nmero, por exemplo, 3 usamos o comando de atribuio ( := atribui um valor uma
varivel) veja o exemplo:
> x:=3;
:= x 3
Desta forma, sempre que uma expresso de entrada contiver x o Maple interpretar como 3, para
reestabelecermos x como uma varivel devemos utilizar o comando restart, que apagar da
memria todos os valores atribudos as variveis. Veja um exemplo:
> 2*x;
6
> y:=2;
:= y 2
> 4*x+y^3-y*x;
14
> restart;
> x^3;
x
3
O Maple case sensitive, isto , ele diferencia uma varivel escrita com letra minscula de uma
varivel escrita com letra maiscula. Outra observao, que um erro de ocorrncia freqente,
esquecer de utilizar o smbolo de multiplicao entre variveis, desta forma ele interpretar como outra
varivel.
> b:= 4;
:= b 4
> B:= 5;
:= B 5
> b*B;
20
> bB;
bB
Exerccio: Calcule da mesma forma os produtos de x por y, x por z e x por y por z, atribuindo a x o
valor 5 a y o valor 2 e a z o valor 8. No esquea de limpar (inicializar) as variveis.
Outros exemplos:
> A:=2;
:= A 2
> B:=3;
:= B 3
> C:=A;
:= C 2
> A:=B;
:= A 3
> B:= C;
:= B 2
> E:=A+B;
:= E 5
> F:=2*A+E;
:= F 11
16
4.9. COMO RESOLVER UMA EQUAO DO PRIMEIRO GRAU:
O exemplo abaixo mostra como resolver uma equao do 1 grau passo a passo:
> eq:=4*x+18=48;
:= eq = + 4 x 18 48
> eq - (18=18);
= 4 x 30
> %/4;
= x
15
2
> eq1:=7*x - 12 = 2*x + 3;
:= eq1 = 7 x 12 + 2 x 3
> eq1 - (-12=-12);
= 7 x + 2 x 15
> % - (2*x=2*x);
= 5 x 15
> %/5;
= x 3
Exerccios:
1) Resolver as equaes abaixo:
a) 6x - 18 = -3x +27 b) 2x +10 = 3x + 5/7 c) 4y - 6 = 10y - 12 d) x + 5 = 2x -6
2) Achar a soluo dos sistemas abaixo:
a) x + y = 5 ; 2x - y = 1 b) 7x +8y = 9 ; -x + y = 3 c) 3x + 4y - 5z = 2; 2x - y + z = 1; -x-3y-z=3
17
4.10. EXPRESSES ALGBRICAS:
Uma das grandes vantagens de um programa como o Maple permitir manipular expresses algbricas
do mesmo modo que uma calculadora permite manipular expresses aritmticas. Alguns dos
comandos algbricos do Maple esto listados a seguir:
Smbolo Objetivo Exemplo
simplify Simplificar uma expresso
factor Fatorar uma expresso dada
subs Determinar o valor da expresso para um valor especfico
expand Expandir as expresses (desenvolver o Binmio de Newton, por exemplo)
numer Numerador de uma expresso
denom Denominador de uma expresso
Inicialmente, vamos usar os seguintes comandos:
simplify => simplifica uma expresso algbrica.
expand => expande uma expresso algbrica.
factor => fatora uma expresso algbrica.
solve => resolve um sistema de equaes para um conjunto de incgnitas.
subs => substitui um valor atribudo uma varivel.
numer => recebe a expresso do numerador de uma expresso algbrica fracionria.
denom => recebe a expresso do denominador de uma expresso algbrica fracionria.
Vamos ilustrar, com alguns exemplos cada um destes comandos.
> simplify ((2+x)/x+(2-x)/x);
4
1
x
> a:=4*x^2/(1+x^2)^3+(5-x)^2;
:= a + 4
x
2
( ) + 1 x
2
3
( ) 5 x
2
> simplify(%);
+ + + + 80 x
2
25 78 x
4
28 x
6
10 x 30 x
3
30 x
5
10 x
7
x
8
( ) + 1 x
2
3
> subs(x=1,a);
33
2
> p:=numer(a);
:= p + + + + 80 x
2
25 78 x
4
28 x
6
10 x 30 x
3
30 x
5
10 x
7
x
8
> q:=denom(a);
:= q ( ) + 1 x
2
3
> subs(x=1,p);
132
> subs(x=1,q);
8
> expand((3*x^2-4*x)*(x+1)*(3*x^2+5*x+1));
+ 9 x
5
12 x
4
14 x
3
21 x
2
4 x
> expand((3*x^2-4*x)*(x+1)*(3*x^2+5*x+1));
+ 9 x
5
12 x
4
14 x
3
21 x
2
4 x
18
> factor(%);
x ( ) 3 x 4 ( ) + x 1 ( ) + + 3 x
2
5 x 1
> b:=8*x^3-18*x*y^2+20*x^2*y-45*y^3;
:= b + 8 x
3
18 x y
2
20 x
2
y 45 y
3
> factor(%);
( ) + 3 y 2 x ( ) + 5 y 2 x ( ) + 3 y 2 x
> expand(%);
+ 8 x
3
18 x y
2
20 x
2
y 45 y
3
> subs(y=1,%);
+ 8 x
3
18 x 20 x
2
45
> expand((1+2*x)^2);
+ + 1 4 x 4 x
2
> subs(x=k,%);
+ + 1 4 k 4 k
2
> factor(2*x^2+3*x-2);
( ) + 2 x ( ) 2 x 1
> solve({32*x-15*y=12,10*x+4*y=16},{x,y});
{ } , = x
144
139
= y
196
139
Observe que neste ltimo exemplo usamos chaves { } separando as expresses por vrgula dentro das
chaves. O Maple interpreta isto como um conjunto, observe que a sada um conjunto.
Podemos armazenar esta sada em uma varivel e da consultarmos cada varivel do conjunto atravs
de um ndice atribudo a varivel que recebeu este contedo de sada. Este ndice escrito entre
colchetes [].Veja:
> sol:= solve({32*x-15*y=12,10*x+4*y=16},{x,y});
:= sol { } , = x
144
139
= y
196
139
> sol[1]; # Aqui ser mostrado o primeiro elemento do conjunto soluo
= x
144
139
> sol[2]; # Aqui ser mostrado o segundo elemento do conjunto soluo
= y
196
139
Assim, sempre possvel selecionar qualquer elemento de um dado conjunto. Note tambm, que as
solues obtidas por meio do comando solve so dadas em forma de equao. Existem dois comandos
do Maple muito teis para equaes: lhs - (left-hand side) seleciona o lado esquerdo da equao e rhs -
(right-hand side) seleciona o lado direito.
> rhs(sol[1]);
144
139
> lhs(sol[1]);
x
19
4.11. OPERAES COM POLINMIOS
Como sabemos como criar expresses algbricas, agora vamos tratar da manipulao de operaes
com polinmios que so expresses algbricas a uma varivel. Podemos somar, subtrair,
multiplicar, dividir e elevar a uma potncia expresses polinomiais usando os smbolos aritmticos
(+, -, *, / e ^, respectivamente)).
Smbolo Objetivo Sintaxe
rem Calcula o resto da diviso de dois polinmios rem(expresso, divisor, varivel)
quo Calcula o quociente da diviso de dois polinmios rem(expresso, divisor, varivel)
degree Indica o grau de um polinmio degree(polinmio)
coeff Indica o coeficiente de um termo indicado coeff(polinmio, termo)
tcoeff Indica o termo independente de um polinmio tcoeff(polinmio)
coeffs Lista todos os coeficientes no nulos de um polinmio tcoeffs(polinmio)
Observao: No esquecer de utilizar o smbolo de multiplicao (*) entre as variveis.
Inicialmente, vamos aprender os dois comandos a seguir:
rem => que calcula o resto da diviso de um polinmio por outro.
quo => que calcula o quociente da diviso de um polinmio por outro.
A sintaxe destes comandos :
rem(expresso, divisor, varivel)
quo(expresso, divisor, varivel);
Veja os exemplos a seguir:
> p:=x^3-2*x^2+x-1;
:= p + x
3
2 x
2
x 1
> q:=3*x^3+7*x^2-2*x+8;
:= q + + 3 x
3
7 x
2
2 x 8
> r:=p+q;
:= r + + 4 x
3
5 x
2
x 7
> s:=p-q;
:= s + 2 x
3
9 x
2
3 x 9
> P:=x^3+1;
:= P + x
3
1
> Q:=x+1;
:= Q + x 1
> R:=P/Q;
:= R
+ x
3
1
+ x 1
> simplify(R);
+ x
2
x 1
> S:=P*Q;
:= S ( ) + x
3
1 ( ) + x 1
> simplify(S);
( ) + x
3
1 ( ) + x 1
> expand(S);
+ + + x
4
x
3
x 1
20
> rem(P,Q,x);
0
> quo(P,Q,x);
+ x
2
x 1
> rem(x^4+3*x^2-1,x^3+x,x);
+ 1 2 x
2
> rem(x^3+x,x^4+3*x^2-1,x);
+ x
3
x
> quo(x^4+3*x^2-1,x^3+x,x);
x
> simplify((x^3+x)*(%)+(%));
+ + x
4
x
2
x
> Q^3;
( ) + x 1
3
> expand(%);
+ + + x
3
3 x
2
3 x 1
Observao: Agora, vamos trabalhar com os outros comandos:
degree => indica o grau de um polinmio.
coeff => indica o coeficiente de um termo indicado.
tcoeff => indica o termo independente de um polinmio.
coeffs => lista todos os coeficientes no nulos de um polinmio.
Exemplos:
> polinomio:=x^6-x^5-9*x^4+x^3+20*x^2+12*x+5;
:= polinomio + + + + x
6
x
5
9 x
4
x
3
20 x
2
12 x 5
> degree(polinomio);
6
> coeff(polinomio,x^4);
-9
> tcoeff(polinomio);
5
> coeffs(polinomio);
, , , , , , 5 1 12 20 -9 1 -1
21
4.12. REPRESENTAO DE FUNES NO MAPLE
O Maple tem o seguinte comando para representar funes:
f:=(x)-> expresso em x => este comando representa a funo f(x), f ser funo de x que ser
representada por uma expresso em x. Veja alguns exemplos a seguir:
> restart:
> f:=(x)-> x^3+2*x^2-3;
:= f x + x
3
2 x
2
3
> f(1);
0
> f(3);
42
> f(a+b);
+ ( ) + a b
3
2 ( ) + a b
2
3
> expand(%);
+ + + + + + a
3
3 a
2
b 3 a b
2
b
3
2 a
2
4 a b 2 b
2
3
> f(a-1);
+ ( ) a 1
3
2 ( ) a 1
2
3
> expand(%);
a
3
a
2
a 2
> f(a)+f(a-1);
+ + + a
3
2 a
2
6 ( ) a 1
3
2 ( ) a 1
2
> expand(%);
+ 2 a
3
a
2
5 a
> g:=(x)->cos(x)+sin(x);
:= g x + ( ) cos x ( ) sin x
> g(Pi/2);
1
> g(3*Pi/4);
0
> h:=(x,y)->log(x^2+y^2)+sqrt(x+y^2);
:= h ( ) , x y + ( ) log + x
2
y
2
+ x y
2
> h(2,3);
+ ( ) ln 13 11
> evalf(%);
5.881574147
> h(1.5,1);
2.759793826
> h(a,b);
+ ( ) ln + a
2
b
2
+ a b
2
> h(f(x),g(x));
+ ( ) ln + ( ) + x
3
2 x
2
3
2
( ) + ( ) cos x ( ) sin x
2
+ + x
3
2 x
2
3 ( ) + ( ) cos x ( ) sin x
2
> h(f(2),g(Pi/2));
+ ( ) ln 170 14
> evalf(%);
8.877455824
22
4.13. FUNES COMPOSTAS
Alm de definirmos uma funo composta usando a forma normal f(g(x)), o Maple trabalha com
funes compostas utilizando o sinal @ entre as variveis que representaro a funo, ou seja
f@g, veja os exemplos a seguir:
> restart:
> f:=(x)->2*x^2;
:= f x 2 x
2
> g:=(x)->exp(-x^2);
:= g x e
( ) x
2
> h:=(x)->sin(2*x)+cos(2*x);
:= h x + ( ) sin 2 x ( ) cos 2 x
> f@g)(x);
2 ( ) e
( ) x
2
2
> g@f)(x);
e
( ) 4 x
4
> h@f)(x);
+ ( ) sin 4 x
2
( ) cos 4 x
2
> f@g@h)(x);
2 ( ) e
( ) ( ) + ( ) sin 2 x ( ) cos 2 x
2
2
> f@f)(x);
8 x
4
> f@g@h)(1);
2 ( ) e
( ) ( ) + ( ) sin 2 ( ) cos 2
2
2
> evalf(%);
1.229677785
23
5. PLOTANDO GRFICOS BIDIMENSIONAIS
Para fazer um grfico bidimensional em coordenadas cartesianas de uma funo utilizado o comando
plot, cuja sintaxe a seguinte: >plot(f(x), x=a..b, y=c..d)
Onde:
f(x) => a funo real ou conjunto de pontos a serem traados.
x = a..b => o intervalo a ser considerado no eixo x.
y = c..d => o intervalo a ser considerado no eixo y.
As variaes de x e y no so obrigatrias. Pode-se dar apenas as variaes de x e, conforme o grfico,
ele escolhe as variaes de y ou pode-se tambm suspender as variaes de x e, neste caso, o Maple
escolhe a variao de x de -10 a 10.
O Maple possibilita a construo (plotagem) de mais de um grfico no mesmo sistema de eixos. Isto
possvel usando a seguinte sintaxe:
plot([f1,f2,f3,..,fn], x = a..b); => onde neste caso todas as funes devem estar declaradas entre
colchetes e devem depender da mesma varivel.
Quanto a escala dos eixos o Maple trabalha com dois tipos:
scaling = constrained => as variaes de x e y so proporcionalmente iguais;
scaling = unconstrained => as variaes de x e y so proporcionais tela do monitor.
Os eixos podem ser de quatro tipos diferentes:
axes = frame => os eixos se interceptam nos limites inferiores de cada intervalo;
axes = normal => os eixos se interceptam no ponto (0, 0);
axes boxed => os eixos se interceptam nos limites inferiores de cada intervalo e o grfico aparece
dentro de uma caixa
axes none => no mostra os eixos.
Para especificar a cor de uma curva traada usa-se o comando color = <opo de cor>, onde as opes
de cores so: aquamarine, black, blue, navy, coral, cyan, brown, gold, green, gray, grey khaki,
magenta, maroon, orange, pink, plum, red, sienna, tan, turquoise, violet, wheat, white, yellow.
Veja os exemplos a seguir:
> f:=x-> x^2;
:= f x x
2
> plot(f);
24
> plot(f(x),x=-2..2);
> plot(sin(x),x=-Pi..Pi);
> plot(x^2-3*x+2,x=-4..4,y=-5..5);
> plot((2*x-5)/(x+3)-1,x=-30..30,y=-10..10);
25
> plot((x^2-x-6)/(x^2-x-12),x=-5..5,y=-10..10);
> f1:=x^2-x-6;
:= f1 x
2
x 6
> factor(%);
( ) + x 2 ( ) x 3
> f2:=x^2-x-12;
:= f2 x
2
x 12
> factor(%);
( ) + x 3 ( ) x 4
> f:=f1/f2;
:= f
x
2
x 6
x
2
x 12
> g:=factor(f1*f2);
:= g ( ) + x 2 ( ) x 3 ( ) + x 3 ( ) x 4
> plot(g,x=-6..6,y=-15..80);
26
O Maple possibilita a construo (plotagem) de mais de um grfico no mesmo sistema de eixos. Isto
possvel usando a seguinte sintaxe:
plot([f1,f2,f3,..,fn], x = a..b); => onde neste caso todas as funes devem estar declaradas entre
colchetes e devem depender da mesma varivel.
Exemplos:
> plot([sin(x),cos(x)],x=0..2*Pi);
> plot([x^3+3*x,exp(x),3],x=-2..2);
> plot([x^2-2*x+1,ln(x^3+2*x+1)],x=-3..3);
27
Quanto a escala dos eixos o Maple trabalha com dois tipos:
scaling = constrained => as variaes de x e y so proporcionalmente iguais;
scaling = unconstrained => as variaes de x e y so proporcionais tela do monitor.
Os eixos podem ser de quatro tipos diferentes:
axes = frame => os eixos se interceptam nos limites inferiores de cada intervalo;
axes = normal => os eixos se interceptam no ponto (0, 0);
axes boxed => os eixos se interceptam nos limites inferiores de cada intervalo e o grfico aparece
dentro de uma caixa
axes none => no mostra os eixos.
Para especificar a cor de uma curva traada usa-se o comando color = <opo de cor> , onde as
opes de cores so: aquamarine, black, blue, navy, coral, cyan, brown, gold, green, gray, grey
khaki, magenta, maroon, orange, pink, plum, red, sienna, tan, turquoise, violet, wheat, white,
yellow.
Vejamos como utilizar estes comandos que foram apresentados:
> f:= x^2+2*x - 3;
:= f + x
2
2 x 3
> g:= 2*sin(x);
:= g 2 ( ) sin x
> h:= 3*x-4;
:= h 3 x 4
> plot([f,g],x=-5..5,axes=normal);
> plot([g,h],x=-Pi..Pi,axes=boxed,color=blue);
28
> plot([g+h,2*f],x=-2..2,axes=framed);
> plot([f*g,h+2],x=-10..10,axes=normal,scaling=constrained);
> plot([f*g,h+2],x=-10..10,axes=normal);
Exerccios: Plotar os grficos das seguintes funes:
1) f(x) = 2x + sen(x)
2) g(x) = exp(2x) - ln(x) + 2
3) h(x) = x^3 + 2x^2 - 3x +1
4) i(x) = f(x) + 2h(x)
5) j(x) = g(f(x))
6) k(x) = f(f(x))
29
6. USANDO O SOFTWARE MAPLE PARA PLOTAR AS CURVAS DE NVEL E GRFICOS
DE SUPERFCIES
Exemplos:
1) Construir, usando o software Maple (verso 7.0), os grficos e as curvas de nvel das seguintes
curvas:
a)
2 2
) , ( y x y x f + = (Parabolide)
> plot3d(x^2+y^2,x=-3..3,y=-3..3);
> with (plots):
> contourplot(x^2+y^2,x=-3..3,y=-3..3,color=black);
,
b)
2 2
) , ( y x y x f + = (cone)
> plot3d(sqrt(x^2+y^2),x=-3..3,y=-3..3);
> with (plots):
> contourplot(sqrt(x^2+y^2),x=-3..3,y=-3..3,contours=30,color=black);
30
d)
2 2
) , ( y x y x f = (Sela)
> plot3d(x^2-y^2,x=-3..3,y=-3..3);
> with (plots):
> contourplot(x^2-y^2,x=-3..3,y=-3..3,color=black);
e)
2 2
) , ( x y y x f =
> with (plots):
> contourplot(y^2-x^2,x=-4..4,y=-4..4,color=black,contours=10);
f)
2 2
) , ( y x y x f + =
> with (plots):
> contourplot(x^2+y^2,x=-3..3,y=- 3..3,contours=30,color=black);
31
2) Outros exemplos de grficos tridimensionais no Maple (verso 7.0)
a)
2 2
) , (
y x
e xy y x f
=
> plot3d(x*y*exp(-x^2-y^2), x=-2..2,y=-2..2);
b)
2 2
) , (
y x
e x y x f
=
> plot3d(x*exp(-x^2-y^2), x=-2..2,y=-2..2);
c)
2 2
) , (
y x
e y y x f
=
> plot3d(y*exp(-x^2-y^2), x=-2..2,y=-2..2);
32
d)
5
3 3
) , (
2 2
+
+ + + + =
y x
y xy x y x f , 3 3 3 3 s s s s y e x
> plot3d(x^2+x*y+y^2+3/x+3/y+5,x=-3..3,y=-3..3);
e)
5
3 3
) , (
2 2
+
+ + + + =
y x
y xy x y x f , 2 2 2 2 s s s s y e x
> plot3d(x^2+x*y+y^2+3/x+3/y+5,x=-2..2,y=-2..2);
f)
5
3 3
) , (
2 2
+
+ + + + =
y x
y xy x y x f , 4 4 4 4 s s s s y e x
> plot3d(x^2+x*y+y^2+3/x+3/y+5,x=-4..4,y=-4..4);
33
3) Construir os seguintes grficos, usando o software Maple (verso 7.0), dada a funo e o domnio da
mesma.
a) 8 8 8 8 ), ln( ) , (
2 2
s s s s + = y e x y x y x f , na cor cinza (gray)
> plot3d(ln(x^2+y^2),x=-8..8,y=-8..8,color=gray);
b) 3 3 3 3 ), ln( ) , (
2 2
s s s s + = y e x y x y x f , , na cor padro do Maple V (verso 7.0)
> plot3d(ln(x^2+y^2),x=-3..3,y=-3..3);
c) 3 3 3 3 , ) , (
2 2 2
s s s s + = y e x y x sen y x f , na cor padro do Maple V (verso 7.0)
> plot3d( (sin(sqrt(x^2+y^2))^2 ),x=-3..3,y=-3..3);
34
d) 3 3 3 3 ,
1
5
) , (
2 2
s s s s
+ +
= y e x
y x
x
y x f , na cor azul (blue)
> plot3d(-5*x/(x^2+y^2+1),x=-3..3,y=-3..3,color=blue);
e) 3 3 3 3 ,
) (
) , (
2 2
2 2
s s s s
+
+
= y e x
y x
y x sen
y x f na cor verde (green)
> plot3d(sin(x^2+y^2)/(x^2+y^2),x=-3..3,y=-3..3,color=green);
35
4) Use a funo IMPLICITIPLOT => GRFICOS DE FUNES IMPLCITAS
a) 16
2 2
= + y x (Circunferncia)
> with(plots):
> implicitplot(x^2+y^2=16,x=-5..5,y=-5..5);
b) 1
9 4
2 2
= +
y x
(Elipse)
> with(plots):
> implicitplot(x^2/4+y^2/9=1,x=-3..3,y=-4..4);
c) 1
9 4
2 2
=
y x
(Hiprbole)
> with(plots):
> implicitplot(x^2/4-y^2/9=1,x=-3..3,y=-4..4);
36
d)
2 2 2
y x z + = (cones)
> with(plots):
> implicitplot3d(z^2=x^2+y^2,x=-3..3,y=-3..3,z=-3..3,color=gray);
> implicitplot3d(z^2=x^2+y^2,z=-2..2,y=-2..2,x=-2..2);
e) 9
2 2 2
= + + z y x (Esfera)
> with(plots):
> implicitplot3d(x^2+y^2+z^2=9,x=-3..3,y=-3..3,z=-3..3);
37
7. LIMITE E CONTINUIDADE
Objetivo: Apresentar o conceito de limite de uma funo dada, o conceito de limites laterais e as
propriedades de limites. Estender esse conceito para continuidade e evidenciar exemplos quando as
funes dadas so contnuas ou descontnuas.
7.1. LIMITES
Nesta seo apresentamos o conceito de limite de uma funo. Este conceito muito importante no
ensino do Clculo Diferencial e Integral (CDI). Evidenciamos este conceito atravs de alguns
exemplos, esclarecendo-o atravs do grfico da funo.
Definio: Seja uma funo f definida em um intervalo aberto I que contm o ponto p, exceto
possivelmente no prprio ponto p. O limite de f(x) quando x se aproxima de p L. A afirmao:
L x f
p x
=
) ( lim
significa que, para todo 0 > existe um 0 > tal que < | ) ( | L x f sempre que < < | | 0 p x .
Observe que se f(x) tem limite quando x tende para p, ento tal limite nico.
A seguir, tem-se alguns exemplos de clculo de limite utilizando os comandos Limit e limit do
software Maple.
- O comando Limit representa a expresso em forma da expresso do limite a ser calculado.
- O comando limit calcula o valor do limite desejado.
- O comando Limit=limit representa a expresso e calcula o limite.
Exemplos:
1) Calcular o seguinte limite:
2
10
lim
3
2
x
x x
x
.
Soluo: Para resolver este limite damos o seguinte comandos na tela do Maple:
> Limit((x^3+x-10)/(x-2),x=2)=limit((x^3+x-10)/(x-2),x=2);
= lim
x 2
+ x
3
x 10
x 2
13
Vamos visualizar o limite obtido anteriormente traando o grfico da funo dada no intervalo
contendo o ponto analisado.
Observe que no grfico dado anteriormente o valor no eixo y correspondente a x = 2 13.
Portanto, conclumos que: 13
2
10
lim
3
2
=
x
x x
x
38
2) Calcular o seguinte limite:
2
3
2
) 2 (
10
lim
x
x x
x
.
Soluo: Para resolver este limite e construir o grfico damos os seguintes comandos na tela do Maple:
> Limit((x^3+x-10)/(x-2)^2,x=2)=limit((x^3+x-10)/(x-2)^2,x=2);
= lim
x 2
+ x
3
x 10
( ) x 2
2
undefined
> plot((x^3+x-10)/(x-2)^2,x=0..4,color=black);
> # MELHORANDO A VISUALIZAO GRFICA, EM TORNO DO PONTO ANALISADO:
> plot((x^3+x-10)/(x-2)^2,x=0..4,y=-50..50,color=black);
Vemos no grfico anterior que quando x tende pela direita ou pela esquerda a 2 a funo tende a dois
lados diferentes, isto , no existe o valor do limite desejado.
Portanto, conclumos que:
2
3
2
) 2 (
10
lim
x
x x
x
no existe.
Nos dois exemplos anteriores calculamos o valor do limite quando x se aproxima de um valor finito. A
seguir apresentamos exemplos quando x tende para infinito.
39
Exemplos:
1) Calcular o seguinte limite:
5 4
2 3 7
lim
3
3
+
+
x x
x x
x
.
Soluo: > Limit((7*x^3+3*x-2)/(4*x^3+x-5),x=infinity)=
limit((7*x^3+3*x-2)/(4*x^3+x-5),x=infinity);
= lim
x
+ 7 x
3
3 x 2
+ 4 x
3
x 5
7
4
> plot((7*x^3+3*x-2)/(4*x^3+x-5),x=1..10,y=0..10,color=black);
> plot((7*x^3+3*x-2)/(4*x^3+x-5),x=1..100,y=1..10,color=black);
> plot((7*x^3+3*x-2)/(4*x^3+x-5),x=0..10000,y=1..10,color=black);
Nos trs grficos anteriores vemos que medida que o valor de x aumenta o valor de f(x) tende a uma
constante, o que se confirma calculando-se algebricamente o valor do seu limite que 7/4.
Portanto, conclumos que:
4
7
5 4
2 3 7
lim
3
3
=
+
+
x x
x x
x
.
40
2) Calcular o seguinte limite:
4 2
5
lim
2
+
x
x
x
.
Soluo:
> Limit(sqrt(x^2+5)/(2*x-5),x=-infinity)=limit(sqrt(x^2+5)/(2*x-5),x=-infinity);
= lim
x ( )
+ x
2
5
2 x 5
-1
2
> plot(sqrt(x^2+5)/(2*x-5),x=-5..5,y=-5..5,color=black);
> plot(sqrt(x^2+5)/(2*x-5),x=-20..5,y=-3..3,color=black);
> plot(sqrt(x^2+5)/(2*x-5),x=-5000..0,y=-2..2,color=black);
Nos trs grficos anteriores vemos que medida que o valor de x aumenta o valor de f(x) tende a uma
constante, o que se confirma calculando-se algebricamente o valor do seu limite que -1/2. Tambm
observamos pelo grfico que o limite da funo dada no ponto x = 2 no existe.
Portanto, conclumos que:
2
1
4 2
5
lim
2
=
+
x
x
x
.
41
Os exemplos a seguir apresentam o limite de algumas funes especiais quando x tende a 0 ou quando
x tende a menos ou mais infinito.
7.2. LIMITES ESPECIAIS OU FUNDAMENTAIS
Exemplos:
1) Calcule o seguinte limite:
x
x sen
x 0
lim
\
|
x
sen x
x
1
lim
0
A seguir construa o grfico para visualizar o resultado.
Soluo: > Limit(x*sin(1/x),x=0)=limit(x*sin(1/x),x=0);
= lim
x 0
x
|
\
|
.
|
|
sin
1
x
0
> plot(x*sin(1/x),x=-1..1,color=black);
3) Calcule o seguinte limite:
| |
1
lim
0
x
x
. A seguir construa o grfico para visualizar o resultado.
Soluo: > Limit(1/abs(x),x=0)=limit(1/abs(x),x=0);
= lim
x 0
1
x
> plot(1/abs(x),x=-2..2,y=0..10,color=black);
42
4) Calcule o seguinte limite:
x
x
x
1
0
) 1 ( lim +
|
.
|
|
1
x
e
> plot((1+x)^(1/x),x=-2..2,y=0..4,color=black);
5) Calcule o seguinte limite:
x
x
x
|
.
|
\
|
+
1
1 lim . A seguir construa o grfico para visualizar o resultado.
Soluo: > Limit((1+1/x)^x,x=infinity)=limit((1+1/x)^x,x=infinity);
= lim
x
|
\
|
.
|
|
+ 1
1
x
x
e
> plot((1+1/x)^x,x=0..10,y=0..3,color=black);
> plot((1+1/x)^x,x=0..1000,y=0..3,color=black);
6) Calcule o seguinte limite:
x
x
x
|
.
|
\
|
+
1
1 lim . A seguir construa o grfico para visualizar o resultado.
Soluo: > Limit((1+1/x)^x,x=-infinity)=limit((1+1/x)^x,x=-infinity);
= lim
x ( )
|
\
|
.
|
|
+ 1
1
x
x
e
> plot((1+1/x)^x,x=-100..0,y=0..4,color=black);
> plot((1+1/x)^x,x=-1000..10,y=0..4,color=black);
Os exemplos a seguir calculam os limites laterais.
43
7.3. LIMITES LATERAIS
1) Calcule os seguintes limites laterais ( esquerda e direita) e construa o grfico:
x
x
x
3
9
lim
2
3
.
Soluo:
> Limit((9-x^2)/(3-x),x=3,left)=limit((9-x^2)/(3-x),x=3,left);
= lim
- x 3
9 x
2
3 x
6
> Limit((9-x^2)/(3-x),x=3,right)=limit((9-x^2)/(3-x),x=3,right);
= lim
+ x 3
9 x
2
3 x
6
> plot((9-x^2)/(3-x),x=-2..6,color=black);
Portanto, conclumos que: 6
3
9
lim
2
3
=
x
x
x
, pois: 6
3
9
lim
2
3
=
x
x
x
e 6
3
9
lim
2
3
=
x
x
x
.
2) Calcule os seguintes limites laterais ( esquerda e direita) e construa o grfico:
2
| 2 |
lim
2
x
x
x
.
Soluo:
> Limit(abs(x-2)/(x-2),x=2,left)=limit(abs(x-2)/(x-2),x=2,left);
= lim
- x 2
x 2
x 2
-1
> Limit(abs(x-2)/(x-2),x=2,right)=limit(abs(x-2)/(x-2),x=2,right);
= lim
+ x 2
x 2
x 2
1
> plot(abs(x-2)/(x-2),x=-3..3,color=black);
Portanto, conclumos que:
2
| 2 |
lim
2
x
x
x
no existe, pois: 1
2
| 2 |
lim
2
=
x
x
x
e 1
2
| 2 |
lim
2
=
x
x
x
.
44
3) Calcule os seguintes limites laterais ( esquerda e direita) e construa o grfico:
x
x
1
lim
0
.
Soluo:
> Limit(1/x,x=0,left)=limit(1/x,x=0,left);
= lim
- x 0
1
x
> Limit(1/x,x=0,right)=limit(1/x,x=0,right);
= lim
+ x 0
1
x
> plot(1/x,x=-5..5,y=-8..8,color=black);
Portanto, conclumos que:
x
x
1
lim
0
no existe, pois: =
x
x
1
lim
0
e =
+
x
x
1
lim
0
4) Calcule os seguintes limites laterais ( esquerda e direita) e construa o grfico:
2
0
1
lim
x
x
.
Soluo:
> Limit(1/x^2,x=0,left)=limit(1/x^2,x=0,left);
= lim
- x 0
1
x
2
> Limit(1/x^2,x=0,right)=limit(1/x^2,x=0,right);
= lim
+ x 0
1
x
2
> plot(1/x^2,x=-5..5,y=-8..8,color=black);
Portanto, conclumos que: =
2
0
1
lim
x
x
, pois: =
2
0
1
lim
x
x
e =
+
2
0
1
lim
x
x
. Nota: Na realidade este
limite, tambm no existe, pois no existe um nmero L, exigido pela definio.
45
7.4. Propriedades de limites
Use o Maple e suas funes: Limit e expand para verificar as seguintes propriedades de limites:
Nota: importante lembrar que para verificar as propriedades devemos carregar antes o pacote
with(student), dando o seguinte comando: >with(student):
P1) ) ( lim ) ( lim )] ( ) ( [ lim x g x f x g x f
p x p x p x
+ = +
P2) ) ( lim ) ( lim )] ( ) ( [ lim x g x f x g x f
p x p x p x
=
P3) ) ( lim )] ( [ lim x f c x f c
p x p x
=
P4) ) ( lim ) ( lim )] ( ) ( [ lim x g x f x g x f
p x p x p x
=
P5)
) ( lim
) ( lim
) (
) (
lim
x g
x f
x g
x f
p x
p x
p x
=
(
, 0 ) ( = x g
P6)
) ( lim
) (
) ( lim ) ( lim
x g
p x
x g
p x
p x
x f x f
=
P7) ) ( lim ) ( lim x f x f
p x p x
=
Soluo: Para facilitar, vamos combinar as duas funes: >Limit=expand
> with(student):
P1) > Limit(f(x)+g(x),x=p)=expand(Limit(f(x)+g(x),x=p));
= lim
x p
+ ( ) f x ( ) g x + ( ) lim
x p
( ) f x ( ) lim
x p
( ) g x
P2) > Limit(f(x)-g(x),x=p)=expand(Limit(f(x)-g(x),x=p));
= lim
x p
( ) f x ( ) g x ( ) lim
x p
( ) f x ( ) lim
x p
( ) g x
P3) > Limit(c*f(x),x=p)=expand(Limit(c*f(x),x=p));
= lim
x p
c ( ) f x c ( ) lim
x p
( ) f x
P4) > Limit(f(x)*g(x),x=p)=expand(Limit(f(x)*g(x),x=p));
= lim
x p
( ) f x ( ) g x ( ) lim
x p
( ) f x ( ) lim
x p
( ) g x
P5) > Limit(f(x)/g(x),x=p)=expand(Limit(f(x)/g(x),x=p));
= lim
x p
( ) f x
( ) g x
lim
x p
( ) f x
lim
x p
( ) g x
P6) > Limit(f(x)^(g(x)),x=p)=expand(Limit(f(x)^(g(x)),x=p));
= lim
x p
( ) f x
( ) g x
( ) lim
x p
( ) f x
( ) lim
x p
( ) g x
P7) > Limit(sqrt(f(x)),x=p)=expand(Limit(sqrt(f(x)),x=p));
= lim
x p
( ) f x lim
x p
( ) f x
46
7.5. CONTINUIDADE
A seguir estudaremos o conceito de continuidade de uma funo num certo ponto, utilizando os
recursos do sofftware Maple. Inicialmente definimos este conceito matematicamente.
Definio: Uma funo f contnua em um valor p se satisfaz as seguintes condies:
(i) f(p) definido, ou seja: existe f(p).
(ii) ) ( lim x f
p x
existe, ou seja: ) ( lim ) ( lim x f x f
p x p x
+
=
(iii) ) ( ) ( lim p f x f
p x
=
Se uma ou mais destas trs condies no forem verificadas em p dizemos que a funo f
descontnua em p.
Agora consideraremos alguns exemplos de funes contnuas e descontnuas. Em cada exemplo
traamos um esboo do grfico, determinando os pontos onde existe um salto no grfico, e mostramos
qual das trs condies da definio dada anteriormente no vlida em cada descontinuidade.
Nota: Analisaremos a continuidade das funes esboando os seus respectivos grficos. Escolhemos
as variaes de x e y conforme a necessidade de cada funo.
Exemplo:
1) Analisar a continuidade da funo:
>
s +
=
1 , 2
1 , 2
) (
x se x
x se x
x f .
Soluo: Neste caso, dividimos a funo dada em duas partes designando a primeira f1 e a segunda
f2. Observe os comando a seguir:
> f1:=(x)->if x<=1 then 2+x else undefined fi:
> f2:=(x)->if x>1 then 2-x else undefined fi:
> plot({f1,f2},-3.5..3.5,-4..4,color=black);
Pelo grfico anterior conclumos que a funo dada no contnua em x = 1.
47
2) Analisar a continuidade da funo:
=
=
=
2 , 2
2 ,
2
4
) (
2
x se
x se
x
x
x f .
Soluo: Neste caso, dividimos a funo dada em trs partes designando a primeira f1, a segunda
f2e a terceira de f3. Observe os comando a seguir:
> restart: # COMANDO USADO PARA REINICIAR AS VARIVEIS
> f1:=(x)->if x<2 then (x^2-4)/(x-2) else undefined fi:
> f2:=(x)->if x=2 then 2 else undefined fi:
> f3:=(x)->if x>2 then (x^2-4)/(x-2) else undefined fi:
> plot({f1,f2,f3},-5..5,-5..5,color=black);
Observe que no ponto x = 2 seu valor 2 no aparece na tela, mas esse ponto fornece um valor vazio
conforme f1 e f3. Assim, conclumos que a funo dada no contnua em x = 2.
48
3) Analisar a continuidade da funo:
=
=
=
0 , 0
0 ,
) (
x se
x se
x
x sen
x f .
Soluo: Neste caso, dividimos a funo dada em trs partes designando a primeira f1, a segunda
f2e a terceira de f3. Observe os comando a seguir:
> restart: # COMANDO USADO PARA REINICIAR AS VARIVEIS
> f1:=(x)->if x<0 then sin(x)/x else undefined fi:
> f2:=(x)->if x=0 then 0 else undefined fi:
> f3:=(x)->if x>0 then sin(x)/x else undefined fi:
> plot({f1,f2,f3},-15..15,-2..2,color=black);
Observe que no ponto x = 0 seu valor 0 no aparece na tela, mas esse ponto fornece um valor vazio
conforme f1 e f3. Assim, conclumos que a funo dada no contnua em x = 0.
49
4) Analisar a continuidade da funo:
s s
> < + +
=
2 3 , 1
2 3 , 6 5
) (
2
x se
x ou x se x x
x f .
Soluo: Neste caso dividimos a primeira parte da funo dada em duas partes considerando f1 e
f3, enquanto a segunda parte fica como f2. Observe os comando a seguir:
> restart: # COMANDO USADO PARA REINICIAR AS VARIVEIS
> f1:=(x)->if x<-3 then sqrt(x^2+5*x+6) else undefined fi:
> f2:=(x)->if x>=-3 and x<=-2 then -1 else undefined fi:
> f3:=(x)->if x>-2 then sqrt(x^2+5*x+6) else undefined fi:
> plot({f1,f2,f3},-5..5,-5..5,color=black);
Pelo grfico anterior conclumos que a funo dada no contnua nem em x = -2 e nem em x = -3.
Nesse caso temos dois pontos de descontinuidades.
50
8. DERIVADAS
O Maple um aplicativo que possui inmeras aplicaes na resoluo de problemas que envolvem o
Clculo Diferencial e Integral eis aqui alguns exemplos de como calcular derivadas atravs dos
comandos Diff e diff:
> restart: # COMANDO USADO PARA REINICIAR AS VARIVEIS
> Diff(Pi*r^2,r)=diff(Pi*r^2,r);
=
c
c
r
t r
2
2 t r
> Diff(4/3*Pi*r^3,r)=diff(4/3*Pi*r^3,r);
=
c
c
r
|
\
|
.
|
|
4
3
t r
3
4 t r
2
> Diff(Pi*r^2*h,r)=diff(Pi*r^2*h,r);
=
c
c
r
t r
2
h 2 t r h
> Diff(Pi*r^2*h,h)=diff(Pi*r^2*h,h);
=
c
c
h
t r
2
h t r
2
> f:=3*x^3+2*x^2+3*x+4;
:= f + + + 3 x
3
2 x
2
3 x 4
> Diff(f,x)=diff(f,x);
=
c
c
x
( ) + + + 3 x
3
2 x
2
3 x 4 + + 9 x
2
4 x 3
> g:=5*x^4-3*x^2-2/x;
:= g 5 x
4
3 x
2
2
x
> Diff(g,x)=diff(g,x);
=
c
c
x
|
\
|
.
|
|
5 x
4
3 x
2
2
x
+ 20 x
3
6 x
2
x
2
- Derivada de segunda ordem, ou seja, segunda derivada.
> restart:
> f:=3*x^3+2*x^2+3*x+4;
:= f + + + 3 x
3
2 x
2
3 x 4
> Diff(f,x$2)=diff(f,x$2);
=
c
c
2
x
2
( ) + + + 3 x
3
2 x
2
3 x 4 + 18 x 4
51
- Derivadas trigonomtricas:
1) Verifique as seguintes regras de derivadas trigonomtricas:
R1) [sen(x)] = cos(x)
R2) [cos(x)] =-sen(x)
R3) [tg(x)] = sec
2
(x)
R4) [cossec(x)] = -cossec(x) cotg(x)
R5) [sec(x)] = sec(x) tg(x)
R6) [cotg(x)] = -cossec
2
(x)
Lembre-se: 1 + tg
2
(x) = sec
2
x e 1 + cotg
2
x = cossec
2
x
Soluo:
R1) > Diff([sin(x)],x)=diff(sin(x),x);
=
c
c
x
[ ] ( ) sin x ( ) cos x
R2) > Diff([cos(x)],x)=diff(cos(x),x);
=
c
c
x
[ ] ( ) cos x ( ) sin x
R3) > Diff([tan(x)],x)=diff(tan(x),x);
=
c
c
x
[ ] ( ) tan x + 1 ( ) tan x
2
R4) > Diff([csc(x)],x)=diff(csc(x),x);
=
c
c
x
[ ] ( ) csc x ( ) csc x ( ) cot x
R5) > Diff([sec(x)],x)=diff(sec(x),x);
=
c
c
x
[ ] ( ) sec x ( ) sec x ( ) tan x
R6) > Diff([cot(x)],x)=diff(cot(x),x);
=
c
c
x
[ ] ( ) cot x 1 ( ) cot x
2
> h2:=x->(3*x^2-4*x+5)/(4*x^3);
:= h2 x
1
4
+ 3 x
2
4 x 5
x
3
> D(h2)(x);
1
4
6 x 4
x
3
3
4
+ 3 x
2
4 x 5
x
4
> normal(%);
1
4
+ 3 x
2
8 x 15
x
4
> diff(h1,x$2);
60 x
2
6
4
x
3
> diff(h1,x$4);
120
48
x
5
> (D@@1)(h2)(x);
1
4
6 x 4
x
3
3
4
+ 3 x
2
4 x 5
x
4
> normal(%);
1
4
+ 3 x
2
8 x 15
x
4
52
- Calculando mais algumas derivadas:
> f2:=x -> sin(2*x);
:= f2 x ( ) sin 2 x
> # Derivando uma vez.
> diff(f2(x),x);
2 ( ) cos 2 x
> # Derivando 3 vezes.
> diff(f2(x),x,x,x);
8 ( ) cos 2 x
> # Observa que para derivar 3 vezes podemos usar x,x,x; ou $3.
> diff(f2(x),x$3);
8 ( ) cos 2 x
- Calculando derivadas com operador diferencial "D" A sada (output) sempre uma funo:
> h:=x -> x^2;
:= h x x
2
> h(x);
x
2
> D(h); # Vai sair uma funo !
x 2 x
> D(h)(x);
2 x
> diff(f(x)*g(x),x); # derivada do produto
+
|
\
|
.
|
|
c
c
x
( ) f x ( ) g x ( ) f x
|
\
|
.
|
|
c
c
x
( ) g x
> diff( f(x,y(x)) , x ); # derivada total de f(x,y(x))
+ ( ) ( ) D
1
f , x ( ) y x ( ) ( ) D
2
f , x ( ) y x
|
\
|
.
|
|
c
c
x
( ) y x
53
9. CALCULANDO INTEGRAIS
> # Integrais definidas
> Int(x^n,x)=int(x^n,x); # Construir a integral e calcul-la.
= d
(
]
(
(
x
n
x
x
( ) + n 1
+ n 1
> Int(1/x,x)=int(1/x,x); # Construir a integral e calcul-la.
= d
(
]
(
(
(
(
1
x
x ( ) ln x
> Int(a^x,x)=int(a^x,x); # Construir a integral e calcul-la.
= d
(
]
(
(
a
x
x
a
x
( ) ln a
> Int(exp(x),x)=int(exp(x),x); # Construir a integral e calcul-la.
= d
(
]
(
(
e
x
x e
x
> Int(sin(x),x)=int(sin(x),x); # Construir a integral e calcul-la.
= d
(
]
(
( ) sin x x ( ) cos x
> Int(cos(x),x)=int(cos(x),x);# Construir a integral e calcul-la
= d
(
]
(
( ) cos x x ( ) sin x
> Int(ln(x),x)=int(ln(x),x); # Construir a integral e calcul-la.
= d
(
]
(
( ) ln x x x ( ) ln x x
> Int(tan(x),x)=int(tan(x),x);# Construir a integral e calcul-la.
= d
(
]
(
( ) tan x x ( ) ln ( ) cos x
> Int(cot(x),x)=int(cot(x),x);# Construir a integral e calcul-la.
= d
(
]
(
( ) cot x x ( ) ln ( ) sin x
> Int(1/sqrt(1-x^2),x)=int(1/ sqrt(1-x^2),x);
= d
(
]
(
(
(
(
(
1
1 x
2
x ( ) arcsin x
> Int(1/(1+x^2),x)=int(1/(1+x^2),x);
= d
(
]
(
(
(
(
1
+ 1 x
2
x ( ) arctan x
54
> # Integrais Mltiplas
> Int(Int(x^2+y^2,y=0..2),x=0..2)=int(int(x^2+y^2,y=0..2),x=0..2 );
= d
(
]
(
(
0
2
d
(
]
(
(
0
2
+ x
2
y
2
y x
32
3
> Int(Int(Int(z*cos(x),x=0..2*y),y=0..2 ),z=1..2)=int(int(int(z*cos(x),x=0..2*y),y=0..2 ),z=1..2);
= d
(
]
(
1
2
d
(
]
(
0
2
d
(
]
(
0
2 y
z ( ) cos x x y z +
3
4
( ) cos 4
3
4
> evalf(%);
= 1.240232716 1.240232716
> # Integrais indefinidas
> Int(1/x^2,x=1..infinity)=int(1/x^2,x=1..infinity);
= d
(
]
(
(
(
(
1
1
x
2
x 1
> # MAIS INTEGRAIS:
> plot(1/x,x=0..5,y=0..5,color=black);
> Int(1/x,x=0..1)=int(1/x,x=0..1);
= d
(
]
(
(
(
(
0
1
1
x
x
55
PRINCIPAIS FUNES DO SOFTWARE MAPLE
A seguir, tem-se um resumo das mais importantes funes do software Maple e uma breve explicao
de cada uma.
O comando Limit representa a expresso em forma da expresso do limite a ser calculado.
O comando limit calcula o valor do limite desejado.
O comando Limit=limit representa a expresso e calcula o limite.
O comando expand serve para expandir uma expresso.
O comando subs utilizado para substituir um certo valor em uma expresso.
O comando value serve para calcular o valor de uma expresso.
O comando normal utilizado para escrever uma expresso numa forma normal (simplificada).
O comando evalf avalia um resultado em decimais para n dgitos, sendo o nmero padro igual a
10, se desejarmos aumentar a preciso do clculo, basta especificar o nmero de dgitos desejado.
O comando restart reinicia as variveis.
O comando plot constri um grfico bidimensional.
O comando factor fatora uma expressa.
O comando solve resolve uma equao.
Se um comando comea com letra maiscula, ento ele "inerte". Isto , s escreve mas no
calcula.
LISTA DE EXERCCIOS PROPOSTOS PARA A REVISO DOS CONCEITOS:
INTEGRAIS SIMPLES, DUPLAS E TRIPLAS
56
- SRIES DE TAYLOR
A funo "series" escreve a srie de Taylor de funes analticas. Em geral, a resposta dada em
termos de uma expanso de ordem 6.
Exemplos:
1) y = e
x
> S:=exp(x);
:= S e
x
> S1:=series(S,x=0); # Em torno de x=0.
:= S1 + + + + + + 1 x
1
2
x
2
1
6
x
3
1
24
x
4
1
120
x
5
( ) O x
6
> # Suponha que queremos agora uma expanso de ordem 10:
> S2:=series(S,x=0,10);
S2 1 x
1
2
x
2
1
6
x
3
1
24
x
4
1
120
x
5
1
720
x
6
1
5040
x
7
1
40320
x
8
1
362880
x
9
+ + + + + + + + + + :=
( ) O x
10
2) y = sen x
3) y = cos x
> # Converter a srie num polinmio.
> S3:=convert(S2,polynom);
:= S3 + + + + + + + + + 1 x
1
2
x
2
1
6
x
3
1
24
x
4
1
120
x
5
1
720
x
6
1
5040
x
7
1
40320
x
8
1
362880
x
9
> S3(2); # intil
1 ( ) x 2
1
2
( ) x 2
2
1
6
( ) x 2
3
1
24
( ) x 2
4
1
120
( ) x 2
5
1
720
( ) x 2
6
1
5040
( ) x 2
7
+ + + + + + +
1
40320
( ) x 2
8
1
362880
( ) x 2
9
+ +
> value(%); #intil
1 ( ) x 2
1
2
( ) x 2
2
1
6
( ) x 2
3
1
24
( ) x 2
4
1
120
( ) x 2
5
1
720
( ) x 2
6
1
5040
( ) x 2
7
+ + + + + + +
1
40320
( ) x 2
8
1
362880
( ) x 2
9
+ +
> # Vamos transformar a expresso S3 numa funo de verdade.
> P:=unapply(S3,x);
:= P x + + + + + + + + + 1 x
1
2
x
2
1
6
x
3
1
24
x
4
1
120
x
5
1
720
x
6
1
5040
x
7
1
40320
x
8
1
362880
x
9
> evalf(P(1));
2.718281526
> evalf(subs(x=1,S));
2.718281828
57
- FRAES PARCIAIS
O procedimento de fraes parciais utilizado para simplificar as expresses envolvendo quocientes
na mesma varivel, onde geralmente o denominador envolve expresses polinomiais. Usaremos os
comandos convert e parfrac cuja sintaxe convert(expresso, parfrac, varivel), ou seja,
converter uma expresso algbrica em fraes parciais em relao a uma varivel. O comando
identity indica que os lados direito e esquerdo de uma equao so idnticos e, deve sempre ser
usado numa situao como a que ser apresentada.
Veja os exemplos a seguir:
> restart;
> k1:=x^3/(x^2+x);
:= k1
x
3
+ x
2
x
> factor(%);
x
2
+ x 1
> convert(k1,parfrac,x);
+ x 1
1
+ x 1
> k2:=(2*x-1)/(2*x^2-3*x-2);
:= k2
2 x 1
2 x
2
3 x 2
> convert(k2,parfrac,x);
+
4
5
1
+ 2 x 1
3
5
x 2
> simplify(%);
2 x 1
( ) + 2 x 1 ( ) x 2
> k3:=k1+k2;
:= k3 +
x
3
+ x
2
x
2 x 1
2 x
2
3 x 2
> factor(k3);
+ 2 x
4
3 x
3
x 1
( ) + x 1 ( ) + 2 x 1 ( ) x 2
> convert(k3,parfrac,x);
+ + + x 1
1
+ x 1
4
5
+ 2 x 1
3
5
x 2
> simplify(%);
+ 2 x
4
3 x
3
x 1
( ) + x 1 ( ) + 2 x 1 ( ) x 2
> k4:=(x^3+y^3)/(x+x*y);
:= k4
+ x
3
y
3
+ x x y
> factor(k4);
( ) + x y ( ) + x
2
x y y
2
x ( ) + 1 y
58
> convert(k4,parfrac,y);
+
+ y
2
y 1
x
x
3
1
x ( ) + 1 y
> expand(%);
+ +
y
2
x
y
x
1
x
x
2
+ 1 y
1
x ( ) + 1 y
> simplify(%);
+ x
3
y
3
x ( ) + 1 y
> k5:=(x+1)/(2*x^3+x^2-13*x+6);
:= k5
+ x 1
+ + 2 x
3
x
2
13 x 6
> factor(%);
+ x 1
( ) x 2 ( ) 2 x 1 ( ) + x 3
> eq1:=(k5=a/(2*x-1)+b/(x-2)+c/(x+3));
:= eq1 =
+ x 1
+ + 2 x
3
x
2
13 x 6
+ +
a
2 x 1
b
x 2
c
+ x 3
> simplify(eq1*denom(k5));
= + x 1 + + + + + a x
2
a x 6 a 2 b x
2
5 b x 3 b 2 c x
2
5 c x 2 c
> identity(%,x);
( ) identity , = + x 1 + + + + + a x
2
a x 6 a 2 b x
2
5 b x 3 b 2 c x
2
5 c x 2 c x
> solve(%);
{ } , , = a
-2
7
= c
-2
35
= b
1
5
> subs(%,rhs(eq1));
+
2
7
1
2 x 1
1
5
x 2
2
35
1
+ x 3
> k5=(%);
=
+ x 1
+ + 2 x
3
x
2
13 x 6
+
2
7
1
2 x 1
1
5
x 2
2
35
1
+ x 3
> convert(k5,parfrac,x);
+
2
7
1
2 x 1
1
5
x 2
2
35
1
+ x 3
59
MAPLE V - Uma Abordagem Computacional no Ensino do Clculo
Inder Jeet Taneja EDITORA DA UFSC
Inder Jeet Taneja, Ph.D. Professor Titular Departamento de Matemtica Universidade Federal de
Santa Catarina 88.040-900 Florianpolis, SC, Brasil.
DETALHES POR CAPTULO
Captulo 1: Introduo
Neste captulo damos a introduo, apresentando a necessidade e importncia de softwares computacionais desenvolvidos
na era da informtica principalmente para temas especiais, tais como: clculo, equaes diferenciais, lgebra linear, etc. E
concentramos este trabalho utilizando o software Maple V para os temas de clculo diferencial e integral.
Captulo 2: Noes Bsicas de Matemtica
Neste captulo apresentamos noes bsicas de matemtica utilizando o software Maple. Os principais tpicos so:
construo de grficos bidimensionais no sistema cartesiano, funes, funes compostas, fraes parciais, diviso de
polinmios, etc..
Captulo 3: Resoluo de Equaes e Inequaes
Neste captulo apresentamos resoluo de equaes e inequaes. Apresentamos tambm sistemas de equaes de duas e
trs variveis. Curvas passando por pontos dados tambm so obtidas. Utilizando a aproximao grfica resolvemos
sistemas de equaes no resolvidas facilmente.
Captulo 4: Limite e Continuidade
Neste captulo apresentamos o conceito de limite de uma funo dada. Tambm apresentamos o conceito de limites laterais
e as propriedades de limite. Estendemos este conceito para continuidade e apresentamos alguns exemplos quando as
funes dadas so contnuas ou descontnuas.
Captulo 5: Derivada
Neste captulo apresentamos alguns resultados relacionados com derivada e suas aplicaes. Apresentamos frmulas de
derivada. Derivada da funo composta e derivadas de ordem superior tambm so abordadas.
Captulo 6: Integral
Neste captulo apresentamos clculo de integrais definidas e indefinidas. Damos as formas de integrao por substituio,
por partes, e por fraes parciais. Tambm mostramos clculo de integrais duplas e triplas, onde consideramos integrais
definidas e indefinidas.
Captulo 7: Grficos em Coordenadas Especiais
Neste captulo apresentamos grficos bi e tridimensionais. Os grficos bidimensionais tratam de coordenadas paramtricas
e polares. Tambm construmos os grficos de funes definidas implicitamente. Damos formas de como animar os
grficos. Apresentamos grficos tridimensionais nas formas cartesiana, paramtrica, cilndrica e esfrica. Apresentamos
tambm curvas no espao e curvas de nvel.
Captulo 8: Aplicaes I - Comprimentos e reas
Neste captulo damos aplicaes de coordenadas especiais abordadas no captulo 7. Utilizando coordenadas cartesianas,
paramtricas e polares, calculamos comprimento de arco e rea de regio plana limitada.
Captulo 9: Grficos Tridimensionais
Neste captulo apresentamos grficos tridimensionais das funes definidas em diversas situaes. Apresentamos grficos
de coordenadas cartesianas, grficos de equaes escritas em forma paramtrica dando curvas e superfcies no espao.
Tambm apresentamos curvas de nvel e construmos grficos tridimensionais em coordenadas cilndricas e esfricas.
Captulo 10: Aplicaes II - reas e Volumes
Neste captulo calculamos a rea de regio plana limitada em coordenadas cartesianas e polares, aplicando o conceito de
integral dupla. rea de superfcie e volume do slido de revoluo tambm foram estudados. Tambm calculamos o
volume de um slido, utilizando coordenadas polares e cartesianas em integrao dupla. Utilizando a integrao tripla
tambm calculamos o volume de um slido em coordenadas cartesianas, cilndricas e esfricas.
60
USANDO O MAPLE V
(VERSO 7.0) PARA A DETERMINAO E CLASSIFICAO DE
EXTREMOS DE FUNES DE DUAS VARIVEIS
Objetivos:
1) Definir a funo.
2) Construir o seu grfico.
3) Calcular as derivadas parciais de 1
a
ordem.
4) Determinar os pontos crticos.
5) Calcular as derivadas parciais de 2
a
ordem.
6) Construir o hessiano da funo.
7) Classificar os pontos crticos.
Observao importante: Ao iniciar o trabalho com o Maple salve o seu
arquivo, escolhendo um nome apropriado (fcil de lembrar).
Sinal Significado
:= Recebe
= Igual
; Fim da linha de comando
# Cerquilha (texto)
? Ajuda
Exemplo:
2 2
y x y x f + = ) , (
1)>Z:=x^2+y^2;
2)>plot3d(Z,x=-1..1,y=-1..1);
3)>Zx:=diff(Z,x);
>Zy:=diff(Z,y);
4)>solve({Zx=0,Zy=0},{x,y});
5)>Zxx:=diff(Zx,x);
>Zxy:=diff(Zx,y);
>Zyx:=diff(Zy,x);
>Zyy:=diff(Zy,y);
6)>with(linalg):
>H:=matrix([[Zxx,Zxy],[Zyx,Zyy]]);
>Hessiano:=det(H);
7)>subs(x=xc,y=yc,Hessiano);
>subs(x=xc,y=yc,Zxx);
>subs(x=xc,y=yc,Z);
61
- DEFINIO DA FUNO: ) , ( y x f z =
Exemplo 1:
2 2
) , ( y x y x f + = >Z:=x^2+y^2;
Exemplo 2: y x xy y x y x f 3 2 ) , (
2 3
+ + = >Z:=x^3+y^2+x*y-2*x-3*y;
- CONSTRUO DO GRFICO:
>plot3d(FUNO,x=x
inicial
..x
final
,y=y
inicial
..y
final
);
- DERIVADAS PARCIAIS DE 1
a
ORDEM:
x
f
c
c
) , ( y x >Zx:=diff(Z,x);
y
f
c
c
) , ( y x >Zy:=diff(Z,y);
- A SEGUIR, RESOLVA O SISTEMA FORMADO PELAS DERIVADAS PARCIAIS DE
PRIMEIRA ORDEM:
=
c
c
=
c
c
0
0
y
f
x
f
>solve({Zx=0,Zy=0},{x,y});
- DERIVADAS PARCIAIS DE 2
a
ORDEM:
2
2
x
f
c
c
) , ( y x >Zxx:=diff(Zx,x);
x y
f
c c
c
2
) , ( y x >Zxy:=diff(Zx,y);
y x
f
c c
c
2
) , ( y x >Zyx=diff(Zy,x);
2
2
y
f
c
c
) , ( y x >Zyy:=diff(Zy,y);
- HESSIANO DA FUNO OU MATRIZ HESSIANA:
>with(linalg):
(
(
(
(
c
c
c c
c
c c
c
c
c
=
) , ( ) , (
) , ( ) , (
) , (
2
2 2
2
2
2
y x
y
f
y x
y x
f
y x
x y
f
y x
x
f
y x H
>H:=matrix([[Zxx,Zxy],[Zyx,Zyy]]);
- DETERMINANTE HESSIANO DA FUNO:
) , ( ) , (
) , ( ) , (
) , (
2
2 2
2
2
2
y x
y
f
y x
y x
f
y x
x y
f
y x
x
f
y x H
c
c
c c
c
c c
c
c
c
= >Hessiano:=det(H);
62
- EM SEGUIDA, SUBSTITUA OS PONTOS CRTICOS NO DETERMINANTE HESSIANO
DA FUNO, NA SEGUNDA DERIVADA EM RELAO A X E NA FUNO PARA
FAZER A CLASSIFICAO:
- Se 0 ) , (
0 0
> y x H e 0 ) , (
0 0 2
2
>
c
c
y x
x
f
, ento ) , (
0 0
y x um ponto de mnimo
local de f .
- Se 0 ) , (
0 0
> y x H e 0 ) , (
0 0 2
2
<
c
c
y x
x
f
, ento ) , (
0 0
y x um ponto de mximo
local de f .
- Se 0 ) , (
0 0
< y x H , ento ) , (
0 0
y x no extremante local. Nesse caso,
) , (
0 0
y x um ponto de sela.
- Se 0 ) , (
0 0
= y x H , nada se pode afirmar.
>subs(x=xc,y=yc,Hessiano)
>subs(x=xc,y=yc,Zxx)
>subs(x=xc,y=yc,Z)
- TELA INICIAL DO PROGRAMA (SCRIPT = ROTEIRO) ESCRITO EM MAPLE V
63
Notas:
1)Aps construir o grfico da funo, clique com o boto direito do
mouse sobre a figura gerada e selecione a opo Axes seguida de
Framed, como ilustra a figura a seguir:
A sada ser a figura com eixos, de acordo como a figura que segue:
64
2) Aps substituir a funo por uma nova, pressione ENTER para
verificar se a mesma foi digitada corretamente. A seguir,
selecione no menu a opo Edit seguida de Execute e por fim
Worksheet, conforme ilustrado na figura que segue.
A seguir, apresentaremos alguns exemplos.
65
1)
2 2
) , ( y x y x f + =
- Entradas e sadas do programa (SCRIPT = ROTEIRO)
> Z:=x^2+y^2;# DEFINA AQUI A FUNO QUE SER ANALISADA
:= Z + x
2
y
2
> plot3d(Z,x=-3..3,y=-3..3); # CONSTRUA O GRFICO DA FUNO
> Zx:=diff(Z,x);# CLCULO DA DERIVADA DE Z EM RELAO A VARIVEL x
:= Zx 2 x
> Zy:=diff(Z,y); # CLCULO DA DERIVADA DE Z EM RELAO A VARIVEL y
:= Zy 2 y
> solve({Zx=0,Zy=0},{x,y});# RESOLUO do SISTEMA COMPOSTO PELAS (derivadas de 1.a ordem)
{ } , = x 0 = y 0
> Zxx:=diff(Zx,x);# CLCULO DA DERIVADA DE Zx EM RELAO A VARIVEL x
:= Zxx 2
> Zxy:=diff(Zx,y);# CLCULO DA DERIVADA DE Zx EM RELAO A VARIVEL Y
:= Zxy 0
> Zyx:=diff(Zy,x);# CLCULO DA DERIVADA DE Zy EM RELAO A VARIVEL x
:= Zyx 0
> Zyy:=diff(Zy,y);# CLCULO DA DERIVADA DE Zy EM RELAO A VARIVEL y
:= Zyy 2
> with(linalg):# ACIONANDO A CAIXA DE FERRAMENTAS DE ALGEBRA LINEAR
Warning, the protected names norm and trace have been redefined and unprotected
66
> H:=matrix([[Zxx,Zxy],[Zyx,Zyy]]);# CONSTRUO DA MATRIZ HESSIANA (derivadas de 2.a ordem)
:= H
(
(
2 0
0 2
> Hessiano:=det(H);# CLCULO DO DETERMINANTE DA MATRIZ HESSIANA
:= Hessiano 4
> subs(x=0,y=0,Hessiano);# AVALIANDO O PONTO CRTICO ENCONTRADO NO HESSIANO
4
> subs(x=0,y=0,Zxx);# CASO HESSIANO > 0, CLASSIFIQUE EM MXIMO OU MNIMO
2
> subs(x=0,y=0,Z); # AVALIANDO A FUNO NO PONTO CRTICO ENCONTRADO
0
> # VOLTE A PRIMEIRA LINHA DO PROGRAMA E SUBSTITUA A FUNO POR UMA OUTRA!
> # NO MENU PRINCIPAL CLQUE EM <Edit> SELECIONE A OPO <Execute> E <Worksheet>
> # SUBSTITUA OS NOVOS PONTOS CRTICOS ENCONTRADOS, CLASSIFICANDO-OS.
RESPOSTA: Como Hessiano > 0 e Zxx > 0 => (0, 0) ponto de mnimo e
f(0, 0) = 0.
2)
2 2
) 2 ( ) 1 ( ) , ( + = y x y x f
- Entradas e sadas do programa (SCRIPT = ROTEIRO)
> Z:=(x-1)^2+(y-2)^2;# DEFINA AQUI A FUNO QUE SER ANALISADA
:= Z + ( ) x 1
2
( ) y 2
2
> plot3d(Z,x=-3..3,y=-3..3); # CONSTRUA O GRFICO DA FUNO
67
> Zx:=diff(Z,x);# CLCULO DA DERIVADA DE Z EM RELAO A VARIVEL x
:= Zx 2 x 2
> Zy:=diff(Z,y); # CLCULO DA DERIVADA DE Z EM RELAO A VARIVEL y
:= Zy 2 y 4
> solve({Zx=0,Zy=0},{x,y});# RESOLUO DO SISTEMA COMPOSTO PELAS (derivadas de 1.a ordem)
{ } , = x 1 = y 2
> Zxx:=diff(Zx,x);# CLCULO DA DERIVADA DE Zx EM RELAO A VARIVEL x
:= Zxx 2
> Zxy:=diff(Zx,y);# CLCULO DA DERIVADA DE Zx EM RELAO A VARIVEL Y
:= Zxy 0
> Zyx:=diff(Zy,x);# CLCULO DA DERIVADA DE Zy EM RELAO A VARIVEL x
:= Zyx 0
> Zyy:=diff(Zy,y);# CLCULO DA DERIVADA DE Zy EM RELAO A VARIVEL y
:= Zyy 2
> with(linalg):# ACIONANDO A CAIXA DE FERRAMENTAS DE ALGEBRA LINEAR
> H:=matrix([[Zxx,Zxy],[Zyx,Zyy]]);# CONSTRUO DA MATRIZ HESSIANA (derivadas de 2.a ordem)
:= H
(
(
2 0
0 2
> Hessiano:=det(H);# CLCULO DO DETERMINANTE DA MATRIZ HESSIANA
:= Hessiano 4
> subs(x=1,y=2,Hessiano);# AVALIANDO O PONTO CRTICO ENCONTRADO NO HESSIANO
4
> subs(x=1,y=2,Zxx);# CASO HESSIANO > 0, CLASSIFIQUE EM MXIMO OU MNIMO
2
> subs(x=1,y=2,Z); # AVALIANDO A FUNO NO PONTO CRTICO ENCONTRADO
0
> # VOLTE A PRIMEIRA LINHA DO PROGRAMA E SUBSTITUA A FUNO POR UMA OUTRA!
> # NO MENU PRINCIPAL CLQUE EM <Edit> SELECIONE A OPO <Execute> E <Worksheet>
> # SUBSTITUA OS NOVOS PONTOS CRTICOS ENCONTRADOS, CLASSIFICANDO-OS.
Agora classifique o ponto crtico encontrado!
Resposta:
Como Hessiano > 0 e Zxx > 0 => (1,2) ponto de mnimo e f(1,2) = 0.
68
3) x x xy y x f 3 3 ) , (
3 2
+ =
- Entradas e sadas do programa (SCRIPT = ROTEIRO)
> Z:=3*x*y^2+x^3-3*x;# DEFINA AQUI A FUNO QUE SER ANALISADA
:= Z + 3 x y
2
x
3
3 x
> plot3d(Z,x=-3..3,y=-3..3); # CONSTRUA O GRFICO DA FUNO
> Zx:=diff(Z,x);# CLCULO DA DERIVADA DE Z EM RELAO A VARIVEL x
:= Zx + 3 y
2
3 x
2
3
> Zy:=diff(Z,y); # CLCULO DA DERIVADA DE Z EM RELAO A VARIVEL y
:= Zy 6 x y
> solve({Zx=0,Zy=0},{x,y});# RESOLUO DO SISTEMA COMPOSTO PELAS (derivadas de 1.a ordem)
, , , { } , = y 0 = x 1 { } , = y 0 = x -1 { } , = y 1 = x 0 { } , = y -1 = x 0
> Zxx:=diff(Zx,x);# CLCULO DA DERIVADA DE Zx EM RELAO A VARIVEL x
:= Zxx 6 x
> Zxy:=diff(Zx,y);# CLCULO DA DERIVADA DE Zx EM RELAO A VARIVEL Y
:= Zxy 6 y
> Zyx:=diff(Zy,x);# CLCULO DA DERIVADA DE Zy EM RELAO A VARIVEL x
:= Zyx 6 y
> Zyy:=diff(Zy,y);# CLCULO DA DERIVADA DE Zy EM RELAO A VARIVEL y
:= Zyy 6 x
> with(linalg):# ACIONANDO A CAIXA DE FERRAMENTAS DE ALGEBRA LINEAR
> H:=matrix([[Zxx,Zxy],[Zyx,Zyy]]);# CONSTRUO DA MATRIZ HESSIANA (derivadas de 2.a ordem)
:= H
(
(
6 x 6 y
6 y 6 x
> Hessiano:=det(H);# CLCULO DO DETERMINANTE DA MATRIZ HESSIANA
:= Hessiano 36 x
2
36 y
2
> subs(x=1,y=0,Hessiano);# AVALIANDO O PONTO CRTICO ENCONTRADO NO HESSIANO
36
69
> subs(x=1,y=0,Zxx);# CASO HESSIANO > 0, CLASSIFIQUE EM MXIMO OU MNIMO
6
> subs(x=1,y=0,Z); # AVALIANDO A FUNO NO PONTO CRTICO ENCONTRADO
-2
> subs(x=-1,y=0,Hessiano);# AVALIANDO O PONTO CRTICO ENCONTRADO NO HESSIANO
36
> subs(x=-1,y=0,Zxx);# CASO HESSIANO > 0, CLASSIFIQUE EM MXIMO OU MNIMO
-6
> subs(x=-1,y=0,Z); # AVALIANDO A FUNO NO PONTO CRTICO ENCONTRADO
2
> subs(x=0,y=1,Hessiano);# AVALIANDO O PONTO CRTICO ENCONTRADO NO HESSIANO
-36
> subs(x=0,y=1,Zxx); # CASO HESSIANO > 0, CLASSIFIQUE EM MXIMO OU MNIMO;
0
> subs(x=0,y=1,Z); # AVALIANDO A FUNO NO PONTO CRTICO ENCONTRADO
0
> subs(x=0,y=-1,Hessiano);# AVALIANDO O PONTO CRTICO ENCONTRADO NO HESSIANO
-36
> subs(x=0,y=-1,Zxx); # CASO HESSIANO > 0, CLASSIFIQUE EM MXIMO OU MNIMO;
0
> subs(x=0,y=-1,Z); # AVALIANDO A FUNO NO PONTO CRTICO ENCONTRADO
0
> # VOLTE A PRIMEIRA LINHA DO PROGRAMA E SUBSTITUA A FUNO POR UMA OUTRA!
> # NO MENU PRINCIPAL CLQUE EM <Edit> SELECIONE A OPO <Execute> E <Worksheet>
> # SUBSTITUA OS NOVOS PONTOS CRTICOS ENCONTRADOS, CLASSIFICANDO-OS.
Agora classifique cada um dos pontos encontrados!
Resposta:
- Ponto crtico (1, 0): Como Hessiano > 0 e Zxx > 0 => (1, 0)
ponto de mnimo e f(1, 0) = -2.
- Ponto crtico (-1, 0): Como Hessiano > 0 e Zxx < 0 => (-1, 0)
ponto de mximo e f(-1, 0) = 2.
- Ponto crtico (0, 1): Como Hessiano < 0 => (0, 1) ponto de sela
e f(0, 1) = 0.
- Ponto crtico (0, -1): Como Hessiano < 0 => (0, -1) ponto de
sela e f(0, -1) = 0.
70
4)
|
|
.
|
\
| +
=
2
2 2
) , (
y x
e xy y x f
- Entradas e sadas do programa (SCRIPT = ROTEIRO)
> Z:=x*y*exp(-(x^2+y^2)/2);# DEFINA AQUI A FUNO QUE SER ANALISADA
:= Z x y e
( ) / 1 2 x
2
/ 1 2 y
2
> plot3d(Z,x=-3..3,y=-3..3); # CONSTRUA O GRFICO DA FUNO
> Zx:=diff(Z,x);# CLCULO DA DERIVADA DE Z EM RELAO A VARIVEL x
:= Zx y e
( ) / 1 2 x
2
/ 1 2 y
2
x
2
y e
( ) / 1 2 x
2
/ 1 2 y
2
> Zy:=diff(Z,y); # CLCULO DA DERIVADA DE Z EM RELAO A VARIVEL y
:= Zy x e
( ) / 1 2 x
2
/ 1 2 y
2
x y
2
e
( ) / 1 2 x
2
/ 1 2 y
2
> solve({Zx=0,Zy=0},{x,y});# RESOLUO DO SISTEMA COMPOSTO PELAS (derivadas de 1.a ordem)
, , , , { } , = x 0 = y 0 { } , = x 1 = y 1 { } , = x 1 = y -1 { } , = x -1 = y 1 { } , = x -1 = y -1
> Zxx:=diff(Zx,x);# CLCULO DA DERIVADA DE Zx EM RELAO A VARIVEL x
:= Zxx + 3 x y e
( ) / 1 2 x
2
/ 1 2 y
2
x
3
y e
( ) / 1 2 x
2
/ 1 2 y
2
> Zxy:=diff(Zx,y);# CLCULO DA DERIVADA DE Zx EM RELAO A VARIVEL Y
:= Zxy + e
( ) / 1 2 x
2
/ 1 2 y
2
y
2
e
( ) / 1 2 x
2
/ 1 2 y
2
x
2
e
( ) / 1 2 x
2
/ 1 2 y
2
x
2
y
2
e
( ) / 1 2 x
2
/ 1 2 y
2
> Zyx:=diff(Zy,x);# CLCULO DA DERIVADA DE Zy EM RELAO A VARIVEL x
:= Zyx + e
( ) / 1 2 x
2
/ 1 2 y
2
y
2
e
( ) / 1 2 x
2
/ 1 2 y
2
x
2
e
( ) / 1 2 x
2
/ 1 2 y
2
x
2
y
2
e
( ) / 1 2 x
2
/ 1 2 y
2
> Zyy:=diff(Zy,y);# CLCULO DA DERIVADA DE Zy EM RELAO A VARIVEL y
:= Zyy + 3 x y e
( ) / 1 2 x
2
/ 1 2 y
2
x y
3
e
( ) / 1 2 x
2
/ 1 2 y
2
> with(linalg):# ACIONANDO A CAIXA DE FERRAMENTAS DE ALGEBRA LINEAR
71
> H:=matrix([[Zxx,Zxy],[Zyx,Zyy]]);# CONSTRUO DA MATRIZ HESSIANA (derivadas de 2.a ordem)
H :=
+ 3 x y e
( ) / 1 2 x
2
/ 1 2 y
2
x
3
y e
( ) / 1 2 x
2
/ 1 2 y
2
[ ,
+ e
( ) / 1 2 x
2
/ 1 2 y
2
y
2
e
( ) / 1 2 x
2
/ 1 2 y
2
x
2
e
( ) / 1 2 x
2
/ 1 2 y
2
x
2
y
2
e
( ) / 1 2 x
2
/ 1 2 y
2
]
+ e
( ) / 1 2 x
2
/ 1 2 y
2
y
2
e
( ) / 1 2 x
2
/ 1 2 y
2
x
2
e
( ) / 1 2 x
2
/ 1 2 y
2
x
2
y
2
e
( ) / 1 2 x
2
/ 1 2 y
2
[ ,
+ 3 x y e
( ) / 1 2 x
2
/ 1 2 y
2
x y
3
e
( ) / 1 2 x
2
/ 1 2 y
2
]
> Hessiano:=det(H);# CLCULO DO DETERMINANTE DA MATRIZ HESSIANA
Hessiano 5 x
2
y
2
( ) e
( ) / 1 2 x
2
/ 1 2 y
2
2
x
2
y
4
( ) e
( ) / 1 2 x
2
/ 1 2 y
2
2
x
4
y
2
( ) e
( ) / 1 2 x
2
/ 1 2 y
2
2
:=
( ) e
( ) / 1 2 x
2
/ 1 2 y
2
2
2 y
2
( ) e
( ) / 1 2 x
2
/ 1 2 y
2
2
2 x
2
( ) e
( ) / 1 2 x
2
/ 1 2 y
2
2
+ +
y
4
( ) e
( ) / 1 2 x
2
/ 1 2 y
2
2
x
4
( ) e
( ) / 1 2 x
2
/ 1 2 y
2
2
> subs(x=0,y=0,Hessiano);# AVALIANDO O PONTO CRTICO ENCONTRADO NO HESSIANO
( ) e
0
2
> subs(x=0,y=0,Zxx);# CASO HESSIANO > 0, CLASSIFIQUE EM MXIMO OU MNIMO
0
> subs(x=0,y=0,Z); # AVALIANDO A FUNO NO PONTO CRTICO ENCONTRADO
0
> subs(x=1,y=1,Hessiano);# AVALIANDO O PONTO CRTICO ENCONTRADO NO HESSIANO
4 ( ) e
( ) -1
2
> subs(x=1,y=1,Zxx);# CASO HESSIANO > 0, CLASSIFIQUE EM MXIMO OU MNIMO
2 e
( ) -1
> subs(x=1,y=1,Z); # AVALIANDO A FUNO NO PONTO CRTICO ENCONTRADO
e
( ) -1
> subs(x=1,y=-1,Hessiano);# AVALIANDO O PONTO CRTICO ENCONTRADO NO HESSIANO
4 ( ) e
( ) -1
2
> subs(x=1,y=-1,Zxx); # CASO HESSIANO > 0, CLASSIFIQUE EM MXIMO OU MNIMO;
2 e
( ) -1
> subs(x=1,y=-1,Z); # AVALIANDO A FUNO NO PONTO CRTICO ENCONTRADO
e
( ) -1
> subs(x=-1,y=1,Hessiano);# AVALIANDO O PONTO CRTICO ENCONTRADO NO HESSIANO
4 ( ) e
( ) -1
2
> subs(x=-1,y=1,Zxx); # CASO HESSIANO > 0, CLASSIFIQUE EM MXIMO OU MNIMO;
2 e
( ) -1
72
> subs(x=-1,y=1,Z); # AVALIANDO A FUNO NO PONTO CRTICO ENCONTRADO
e
( ) -1
> subs(x=-1,y=-1,Hessiano);# AVALIANDO O PONTO CRTICO ENCONTRADO NO HESSIANO
4 ( ) e
( ) -1
2
> subs(x=-1,y=-1,Zxx); # CASO HESSIANO > 0, CLASSIFIQUE EM MXIMO OU MNIMO;
2 e
( ) -1
> subs(x=-1,y=-1,Z); # AVALIANDO A FUNO NO PONTO CRTICO ENCONTRADO
e
( ) -1
> # VOLTE A PRIMEIRA LINHA DO PROGRAMA E SUBSTITUA A FUNO POR UMA OUTRA!
> # NO MENU PRINCIPAL CLQUE EM <Edit> SELECIONE A OPO <Execute> E <Worksheet>
> # SUBSTITUA OS NOVOS PONTOS CRTICOS ENCONTRADOS, CLASSIFICANDO-OS.
Resposta:
- Ponto crtico (0, 0): Como Hessiano < 0 => (0, 0) ponto de sela
e f(0, 0) = 0.
- Ponto crtico (1, -1): Como Hessiano > 0 e Zxx > 0 => (1, -1)
ponto de mnimo e f(1, -1) = -e
-1
.
- Ponto crtico (-1, 1): Como Hessiano > 0 e Zxx > 0 => (-1, 1)
ponto de mnimo e f(-1, 1) = -e
-1
.
- Ponto crtico (1, 1): Como Hessiano > 0 e Zxx < 0 => (1, 1)
ponto de mximo e f(1, 1) = e
-1
.
- Ponto crtico (-1, -1): Como Hessiano > 0 e Zxx < 0 => (-1, -1)
ponto de mximo e f(-1, -1) = e
-1
.
73
- LISTA DE EXERCCIOS PROPOSTOS PARA A REVISO DOS CONCEITOS
- Utilizando o software Maple V, determine (caso exista(m)) os
pontos crticos da funo dada. A seguir classifique-os em: Ponto
de mximo, ponto de mnimo ou ponto de sela. Determine tambm o
valor funcional para cada ponto crtico.
1) 4 2 2 ) , (
2 2
+ = y x y x xy y x f
Resposta:
- Ponto crtico (-2, -2): Como Hessiano > 0 e Zxx < 0 => (-2, -2)
ponto de mximo e f(-2, -2) = 8 .
2) xy y
x
y x f 4 9
3
) , (
3
3
+ =
Resposta:
- Ponto crtico (4/3, 4/9): Como Hessiano > 0 e Zxx > 0 => (4/3,
4/9) ponto de mnimo e f(4/3, 4/9) =-64/81.
- Ponto crtico (0, 0) Como Hessiano < 0 => (0 0) ponto de sela e
f(0, 0) = 0.
3) ) ln( 2 ) , (
2
y x x xy y x f + =
Resposta:
- Ponto crtico (1/2, 2): Como Hessiano > 0 e Zxx > 0 => (1/2, 2)
ponto de mnimo e f(1/2, 2) = 2 ln(1/2).
4)
2 2
1 2 2
) 2 ( ) , (
y x
e y x y x f
+ =
Resposta:
- Ponto crtico (0, 0): Como Hessiano > 0 e Zxx > 0 => (0, 0)
ponto de mnimo e f(0, 0) = 0 .
- Ponto crtico (1, 0): Como Hessiano > 0 e Zxx < 0 => (1, 0)
ponto de mximo e f(1, 0) = 2.
- Ponto crtico (-1, 0): Como Hessiano > 0 e Zxx < 0 => (-1, 0)
ponto de mximo e f(-1, 0) = 2.
- Ponto crtico (0, 1): Como Hessiano < 0 => (0, 1) ponto de sela
e f(0, 1) = 1.
- Ponto crtico (0, -1): Como Hessiano < 0 => (0, -1) ponto de
sela e f(0, -1) = 1 .
5) y e y x f
x
cos ) , (
2
=
Resposta:
- Esta funo no admite pontos extremos (pontos crticos). O
software Maple V no mostra a soluo, pois a mesma no existe
(apenas no avisa que a mesma no existe).
74
6) y x y x y x f 32 4 ) , (
4 2
+ =
Resposta:
- Ponto crtico (2, 2): Como Hessiano > 0 e Zxx > 0 => (2, 2)
ponto de mnimo e f(2, 2) = -52 .
7) 5
3 3
) , (
2 2
+ + + + + =
y x
y xy x y x f
Resposta:
- Ponto crtico (1, 1): Como Hessiano > 0 e Zxx > 0 => (1, 1)
ponto de mnimo e f(1, 1) = 14.
8) y x xy y x y x f 3 2 ) , (
2 3
+ + =
Resposta:
- Ponto crtico (1/2, 5/4): Como Hessiano > 0 e Zxx > 0 => (1/2,
5/4) ponto de mnimo e f(1/2, 5/4) = -39/16.
- Ponto crtico (-1/3, 5/3): Como Hessiano < 0 => (-1/3, 5/3)
ponto de sela e f(-1/3, 5/3) = -58/27.
9) y x y x y x f 6 6 2 2 ) , (
3 3
+ =
Resposta:
- Ponto crtico (1, 1): Como Hessiano > 0 e Zxx > 0 => (1, 1)
ponto de mnimo e f(1, 1) = -8 .
- Ponto crtico (-1, -1): Como Hessiano > 0 e Zxx < 0 => (-1, -1)
ponto de mximo e f(-1, -1) = 8.
- Ponto crtico (1, -1): Como Hessiano < 0 => (1, -1) ponto de
sela e f(1, -1) = 0.
- Ponto crtico (-1, 1): Como Hessiano < 0 => (-1, 1) ponto de
sela e f(-1, 1) = 0.
10) ) (
2
1
) , (
2 2
y x sen y x f + =
Resposta:
- Ponto crtico (0, 0): Como Hessiano > 0 e Zxx < 0 => (0, 0)
ponto de mximo.
75
11) INTRODUO PROGRAMAO NO MAPLE
O Maple possui linguagem de programao de alto nvel, disponvel on-line e compatvel com os
recursos de sua prpria estrutura. Assim, possvel construir procedimentos nos quais o usurio tenha
um interesse especial, e utilizar nessa construo todas as estruturas e funes do Maple, ou mesmo
estend-las ou modific-las, de acordo com suas necessidades particulares. Procedimentos e estruturas
modificadas podem ser inicializadas em um nico pacote, e um conjunto de procedimentos pode ser
inicializado em uma biblioteca.
- Procedimentos
No Maple os programas so feitos em forma de procedimentos. Um procedimento na verdade uma
funo que transforma os argumentos inseridos em outros argumentos, conforme foi programado. A
estrutura de um procedimento a seguinte:
Nome_procedimento:=proc(argumentos)
Local (variveis locais);
instrues a serem executadas;
end;
Exemplos:
1) Usando o Maple, criar um procedimento em que fornecido um nmero x, o mesmo calcule o seu
cubo.
Soluo:
> cubo:=proc(x);
> x^3;
> end;
:= cubo proc( ) end proc x ^ x 3
> # Exemplos:
> cubo(2);
8
> cubo(-2);
-8
> cubo(0);
0
> cubo(sqrt(2));
2 2
> cubo(I);
-I
2) O termial de um nmero bastante conhecido. S no comum o uso de um smbolo especfico e
de um nome. De maneira semelhante ao fatorial, pode-se definir o termial de um nmero natural,
representado por ? n , por:
1 2 3 ... ) 3 ( ) 2 ( ) 1 ( ? + + + + + + + = n n n n n , para n maior ou igual a 2
Nota: Para mais detalhe consulte o Anexo I - O problema dos quatro quatros
Usando o Maple, criar um procedimento em que fornecido um nmero n, o mesmo calcule o seu
termial.
Soluo:
Comearemos com a definio de um procedimento bem simples:
> termial:= proc(n)# Imitando a definio de fatorial, mas com soma em vez de produto.
> sum(i, i=1..n);# sum soma uma seqncia numrica ou literal.
> end;
:= termial proc ( ) end proc n ( ) sum , i = i .. 1 n
76
Assim, colocando a instruo sum(..) entre os termos proc(..) e end ns a transformamos em
um procedimento. Podemos agora chamar essa nova funo:
> termial(1);
1
> termial(2);
3
> termial(10);
55
> termial(100);# Gauss conhecia esta soma!
5050
Podemos operar com essa funo, como com outra qualquer funo do Maple:
> termial(n);
1
2
( ) + n 1
2
1
2
n
1
2
> factor(%);#J conhecemos esta frmula: Soma dos n elementos de uma PA!
1
2
n ( ) + n 1
A varivel n utilizada na definio do procedimento termial chama-se parmetro ou
argumento. Em nossa definio no especificamos o tipo do argumento, de modo que podemos
colocar qualquer tipo que seja aceito pelo comando sum.
Por exemplo:
> termial(5/2); # 5/2 = 2.5 => 2 + 1 = 3
3
> termial(5.3); # 5.3 => 5 + 4 + 3 + 2 + 1 = 15
15
Se desejarmos restringir o tipo do argumento de entrada, podemos definir assim nosso
procedimento:
> termial2 := proc(n::posint) # posint significa tipo inteiro positivo
> sum(i, i=1..n);
> end;
:= termial2 proc ( ) end proc :: n posint ( ) sum , i = i .. 1 n
Agora nosso procedimento s aceita argumento inteiro positivo. Se utilizarmos outro tipo de dado
numrico receberemos uma mensagem de erro.
> termial2(5/2);
Error, invalid input: termial2 expects its 1st argument, n, to be of type posint,
but received 5/2
77
- Variveis locais e globais
As variveis utilizadas na construo de um procedimento podem ser locais ou globais . Os valores
das variveis locais so reconhecidos pelo Maple apenas dentro do procedimento. Por outro lado, os
valores das variveis globais so reconhecidos pelo Maple tambm fora do procedimento. Se o
procedimento no especifica o carter da varivel que est utilizando, o Maple decide sobre isso e
avisa o usurio. Variveis utilizadas normalmente na folha de trabalho, fora da definio de
procedimentos, so sempre globais. Vejamos alguns exemplos.
> a:= 5; # Definindo o valor da varivel global a
:= a 5
> termial3:= proc(n) # Usando a como varivel local
> local a;
> a:= sum(i, i=1..n);
> a;
> end;
:= termial3 proc ( ) end proc n local ; a ; := a ( ) sum , i = i .. 1 n a
> termial3(3);
6
> a;
5
Vemos que, ao executar o procedimento, o valor da varivel a passou a ser 6, mas isso ocorreu
apenas localmente. Estudemos agora o seguinte exemplo:
> termial4 := proc(n) # Usando a como varivel global
global a;
a:= sum(i, i=1..n);
a;
end;
:= termial4 proc( ) end proc n global ; a ; := a ( ) sum , i = i .. 1 n a
> termial4(3);
6
> a;
6
Vemos assim que o valor de a foi modificado pelo procedimento.
78
- Uma forma de definir uma funo por procedimento: Algumas aplicaes ao dia a dia
Sintaxe: Como sabemos, um procedimento tem a seguinte forma:
Nome_procedimento:=proc(argumentos)
Local (variveis locais);
instrues a serem executadas;
end;
Exemplos:
1) Usando o Maple, elabore um procedimento que determine o valor em reais a ser pago em relao ao
consumo de gua, medido em m
3
, conta de gua residencial SANEPAR 2006 para isso use os
dados que constam no quadro a seguir:
Faixas de consumo (m
3
) Tarifa (R$)
at 10 16,35 (Mnimo)
11 a 30 2,35/ m
3
(Excedente)
acima de 30 4,18/m
3
(Excedente)
Fonte: SANEPAR, 2006
Soluo:
> restart:# Reiniciar as variveis
> agua:=proc(x);
if x<=10 then 16.35 elif x<=30 then 16.35+(x-10)*2.45 else
16.35+20*2.45+(x-30)*4.18 fi;
end;
agua x proc( ) :=
s x 10 16.35 if then
s x 30 + 8.15 2.45 x elif then
+ 60.05 4.18 x else
end if
end proc
> # Exemplos:
> agua(0);
16.35
> agua(5);
16.35
> agua(10);
16.35
> agua(15);
28.60
> agua(20);
40.85
> agua(30);
65.35
> agua(50);
148.95
79
2) Usando o Maple, elabore um procedimento que determine o valor a ser pago em relao ao
saneamento bsico (gua e esgoto), medido em m
3
, conta de saneamento bsico SANEPAR 2006
para isso use os dados do exemplo anterior e o fato de que o valor a ser pago em relao ao esgoto
de 80% do valor da gua.
Soluo:
> restart:
> saneamento:=proc(x);
if x<=10 then (16.35)*1.80 else (16.35+(x-10)*2.45)*1.80 fi;
end;
saneamento :=
proc( ) end proc x if then else end if s x 10 29.4300 + 14.6700 4.4100 x
> saneamento(0);
29.4300
> saneamento(5);
29.4300
> saneamento(10);
29.4300
> saneamento(15);
51.4800
> saneamento(20);
73.5300
Exerccio:
1) Usando o Maple, elabore um procedimento que determine o valor em reais a ser pago em relao ao
consumo de gua, medido em m
3
, conta de gua residencial SABESP 2006 para isso use os
dados que constam no quadro a seguir:
Faixas de consumo (m
3
) Tarifa (R$)
at 10 11,19 (Mnimo)
11 a 20 1,56/ m
3
(Excedente)
21 a 30 2,39/m
3
(Excedente)
31 a 50 2,39/m
3
(Excedente)
acima de 50 2,86/m
3
(Excedente)
Fonte: SANEPAR, 2006
Soluo: Agora com vocs!
2) Sobre o fatorial de um nmero natural, que indicamos por ! n , sabemos que:
1 2 3 ... ) 3 ( ) 2 ( ) 1 ( ! = n n n n n , para n maior ou igual a 2 e: 0! = 1 e 1! = 1
Usando o Maple, criar um procedimento em que fornecido um nmero n, o mesmo calcule o seu
fatorial.
Soluo: Agora com vocs!
Sugesto: Use a funo do Maple: mul cuja finalidade multiplicar uma seqncia de valores
Exemplo:
> mul(i, i=1..5);
120
80
3) Usando o Maple, criar um procedimento para determinar se um dado nmero par ou mpar.
> par_impar:=proc(x)
> if irem(x,2)=0 then # irem Resto da diviso inteira
> print(x,` par`)
> else print(x,` impar`)
> fi
> end;
par_impar x proc( ) :=
if then else end if = ( ) irem , x 2 0 ( ) print , x ` par` ( ) print , x ` impar`
end proc
> # Exemplos:
> par_impar(-3);
, -3 impar
> par_impar(6);
, 6 par
> par_impar(9);
, 9 impar
> par_impar(2.4);
Error, (in par_impar) wrong number (or type) of parameters in function irem
> par_impar(123456789);
, 192837465 impar
4) Construa uma funo definida por vrias sentenas no Maple par a funo:
>
< s
< s
<
=
2 , 3
2 1 , 2
1 0 , 1
0 , 0
) (
x se
x se
x se
x se
x F
Soluo:
> F:=x->
if x<0 then 0
elif x<1 then 1
elif x<2 then 2
else 3
fi;
F x proc( ) :=
option ; , operator arrow
if then elif then elif then else end if < x 0 0 < x 1 1 < x 2 2 3
end proc
> plot(F,-2..4);
81
5) Tabela do INSS
> restart:
> INSS:=SB->
if SB<=752.62 then (7.65/100)*SB
elif SB>752.62 and SB<=780 then (8.65/100)*SB
elif SB>780 and SB<=1254.36 then (9.00/100)*SB
elif SB>1254.37 and SB<=2508.72 then (11.00/100)*SB
else 275.95
fi;
INSS SB proc( ) :=
option ; , operator arrow
s SB 752.62 .07650000000 SB if then
and < 752.62 SB s SB 780 .08650000000 SB elif then
and < 780 SB s SB 1254.36 .09000000000 SB elif then
and < 1254.37 SB s SB 2508.72 .1100000000 SB elif then
275.95 else
end if
end proc
> INSS(500);
38.25000000
> INSS(760);
65.74000000
> INSS(1000);
90.00000000
> INSS(1500);
165.0000000
> INSS(3000);
275.95
> plot(INSS,0..5000,title=`VARIAO DO INSS EM FUNO DO SALRIO
BRUTO`,color=black);
82
6) Construa um programa em que dado um nmero n, calcula o seu termial.
> termial:= proc(n) #imitando a definio de fatorial, mas com soma
em vez de produto
> sum(i,i=1..n);
> end;
:= termial proc( ) end proc n ( ) sum , i = i .. 1 n
> termial(1);
1
> termial(2);
3
> termial(10);
55
> termial(100);# Gaus conhecia esta soma
5050
> termial(n);
1
2
( ) + n 1
2
1
2
n
1
2
> factor(%);#J conhecemos esta frmula: Soma dos elementos de uma
PA!
1
2
n ( ) + n 1
83
7) Criar um procedimento usando a funo for calcule os 10 primeiros quadrados.
> for j from 1 to 10 do
> lprint (`O quadrado de` ,j,``, j^2);
> od;
`O quadrado de`, 1, ``, 1
`O quadrado de`, 2, ``, 4
`O quadrado de`, 3, ``, 9
`O quadrado de`, 4, ``, 16
`O quadrado de`, 5, ``, 25
`O quadrado de`, 6, ``, 36
`O quadrado de`, 7, ``, 49
`O quadrado de`, 8, ``, 64
`O quadrado de`, 9, ``, 81
`O quadrado de`, 10, ``, 100
84
Num procedimento podem ser necessrios comandos de
- repetio e iterao
- seleo
Vamos falar rapidamente sobre eles.
Certas situaes exigem que uma instruo seja repetida vrias vezes. Para isto utilizamos o comando
"for". A utilizao deste comando segue o esquema:
(for-do-od)
Por exemplo:
for j from inicio by passo to fim
do expresses dependentes de j
od
A sequencia "do-od" tambm funciona em outros comandos.
Um outro comando especial para fazer recorrncias o "while" que em portugus significa enquanto.
O esquema o seguinte:
while k satisfaz-condio do
instrues envolendo k
od
Os comandos de seleo "if" ou desvio so utilizados para se executar uma instruo dentre as vrias
possveis, condicionadas a uma proposio que pode ser falsa ou verdadeira. O esquema o seguinte:
if condio verdadeira then
instrues a executar
else outras instrues a executar
fi
Os comandos de sada de dados so "print"e o "lprint".
85
MATRIZES USANDO O SOFTWARE MAPLE
Aps digitar a matriz, pressione <ENTER>. Selecione a Matriz digitada e clique com o boto direito
do Mouse, abrir a seguinte janela com as respectivas funes, selecione a desejada.
86
0. INTRODUO AO PACOTE DE LGEBRA LINEAR NO MAPLE
Nesta seo introduziremos algumas das principais funes do pacote
de lgebra Linear linalg para as aplicaes mais bsicas: operaes com
matrizes, resoluo de sistemas lineares, clculo da inversa de uma
matriz e clculo do determinante de uma matriz.
Sempre que iniciarmos um trabalho no software Maple, ser de
fundamental importncia acionar o pacote de funes e operaes
especficas para o problema em questo. O comando
with(package):
aciona o pacote de comandos e funes package do Maple. Em
particular,utilizamos o pacote de lgebra Linear:
with(linalg):
1. OPERAES COM MATRIZES
a) Soma de matrizes e multiplicao de uma matriz por um escalar
Com o comando:
matadd(A,B,a,b);
executamos a combinao linear aA+bB de A e B, onde a e b so
escalares reais.
Dessa forma podemos:
1) Somar duas matrizes;
2) Multiplicar uma matriz por uma escalar;
3) Fazer qualquer combinao linear de duas matrizes.
Exemplo 1:
> with(linalg):
A:=matrix([ [1,2],[3,4] ]);
Warning, the protected names norm and trace have been redefined and
unprotected
:= A
(
(
1 2
3 4
> B:=matrix([ [5,6],[7,8] ]);
:= B
(
(
5 6
7 8
Observao:Se queremos apenas somar as duas matrizes, basta omitir os
escalares
> S:=matadd(A,B);
:= S
(
(
6 8
10 12
Observao: S a matriz A+B.
87
Exemplo 2:
Queremos agora multiplicar a matriz A pelo escalar 3:
> A:=matrix([ [1,2],[3,4] ]);
:= A
(
(
1 2
3 4
Para tanto necessrio que um dos escalares seja zero, assim a outra
matriz de entrada (pode ser qualquer matriz) no interfere no
clculo desejado.
> M:=matadd(A,A,3,0);
:= M
(
(
3 6
9 12
Observao: A matriz M a matriz A multiplicada pelo escalar 3.
Exemplo 3:
Para fazer a combinao linear de duas matrizes, s usar todos os
argumentos do comando. Por exemplo, para obter a combinao linear
5A - 8B:
> A:=matrix([ [1,2],[3,4] ]);
:= A
(
(
1 2
3 4
> B:=matrix([ [5,6],[7,8] ]);
:= B
(
(
5 6
7 8
> C:=matadd(A,B,5,-8);
:= C
(
(
-35 -38
-41 -44
b) Produto de matrizes
O comando:
multiply(A,B,...);
executa o produto das matrizes listadas, na ordem em que aparecem,
desde que para isso, as matrizes escolhidas obedeam s regras de
multiplicao de matrizes (o nmero de colunas da primeira matriz a
ser multiplicada deve ser igual ao nmero de linhas da segunda).
Exemplo 4:
> with(linalg):
A:=matrix([ [1,2],[3,4] ]);
:= A
(
(
1 2
3 4
> B:=matrix([ [5,6],[7,8] ]);
:= B
(
(
5 6
7 8
Multiplicaremos A por B, obtendo uma matriz AB.
88
> AB:=multiply(A,B);
:= AB
(
(
19 22
43 50
Observao: Lembre-se que o produto de matrizes em geral no
comutativo:
> BA:=multiply(B,A);
:= BA
(
(
23 34
31 46
Agora multiplicaremos o produto AB por uma matriz C, obtendo a
matriz ABC:
> C:=matrix([ [9,10],[11,12] ]);
:= C
(
(
9 10
11 12
> ABC:=multiply(AB,C);
:= ABC
(
(
413 454
937 1030
Observao: Da mesma maneira, possvel calcular o produto ABC
diretamente, sem antes ter calculado o produto AB:
> ABC:=multiply(A,B,C);
:= ABC
(
(
413 454
937 1030
c) Transposio de uma matriz
O comando
transpose(A);
calcula a matriz transposta de A.
Exemplo 5:
> A:=matrix([ [1,2,3],[4,5,6],[7,8,9] ]);
:= A
(
(
(
(
(
1 2 3
4 5 6
7 8 9
> AT:=transpose(A);
:= AT
(
(
(
(
(
1 4 7
2 5 8
3 6 9
Observao: As linhas de A so as colunas de AT, pois AT a matriz
transposta de A, e vice-versa.
89
d) Potncias de uma matriz
O comando:
evalm(A^n);
calcula a n-sima potncia de uma matriz A.
Exemplo 6:
> A:=matrix([ [1,2],[3,4] ]);
:= A
(
(
1 2
3 4
Para calcular A^10, ao invs de usarmos o comando
multiply(A,A,A,...,A) e escrevermos 10 vezes a matriz A, fazemos
simplesmente:
> W:=evalm(A^10);
:= W
(
(
4783807 6972050
10458075 15241882
2. RESOLUO DE SISTEMAS LINEARES
O comando:
solve({equao 1, equao 2, ... , equao n},{x1, x2, ... , xm});
resolve o sistema de n equaes e m variveis x1, x2, ... , xm.
Exemplo 1: Sistema com soluo nica (SISTEMA POSSVEL DETERMINADO - SPD).
Dado o sistema
= +
= +
= + +
3 2
6 2
6
:
z y x
z y x
z y x
S
usamos o comando solve para determinar o valor das variveis x, y e z :
> restart:
with(linalg):
solve( {x+y+z=6, 2*x-y+z=3, x-y+2*z=3}, {x,y,z} );
Warning, the protected names norm and trace have been redefined and
unprotected
{ } , , = z
9
5
= y
12
5
= x
9
5
90
Exemplo 2: Sistema sem soluo (SISTEMA IMPOSSVEL - SI).
Dado o sistema
= + +
= + +
= + +
50 8 6 4
21 5 4 3
14 3 2
:
z y x
z y x
z y x
S
Ao executarmos o comando solve
> restart:
with(linalg):
solve( {x+2*y+3*z=14, 3*x+4*y+5*z=21, 4*x+6*y+8*z=50}, {x,y,z} );
Warning, the protected names norm and trace have been redefined and
unprotected
Observao: Neste caso, no obteremos resultado algum. Isso ocorrer
sempre que o sistema em questo for impossvel, ou seja, no admite
soluo.
Exemplo 3: Sistema com infinitas solues (SISTEMA POSSVEL INDETERMINADO - SPI).
Dado o sistema homogneo (todos os termos independente so nulos)
= + +
= + +
= + +
1 8 7 5
0 3 3 2
1 5 4 3
:
z y x
z y x
z y x
S
> restart:
with(linalg):
solve( {3*x+4*y+5*z=1, 2*x+3*y+3*z=0, 5*x+7*y+8*z=1}, {x,y,z} );
Warning, the protected names norm and trace have been redefined and
unprotected
{ } , , = y
1
3
x 1 = z +
1
3
x 1 = x x
Observao:Verificamos que uma das variveis (z, nesse caso) tomada
como parmetro, da temos infinitas solues para esse sistema: para
cada valor atribudo a z, obtemos uma soluo diferente para o
sistema.
91
3. CLCULO DO DETERMINANTE E INVERSA DE UMA MATRIZ
a) Determinante de uma Matriz
O comando
det(A);
calcula o determinante da matriz A.
Exemplo:
> restart:
with(linalg):
A:= matrix([ [6,1,8],[7,5,3],[2,9,4] ]);
det(A);
:= A
(
(
(
(
(
6 1 8
7 5 3
2 9 4
360
Observao: Se a Matriz no for quadrada, ser exibida uma mensagem de
erro avisando que a mesma deve ser uma matriz quadrada.
b) Inversa de uma Matriz
Sempre que o determinante de uma matriz for diferente de zero, esta
matriz possui uma inversa. Neste caso, o comando
inverse(A);
calcula a matriz inversa de A.
Exemplo 1:
> restart:
with(linalg):
A:= matrix([ [6,1,8],[7,5,3],[2,9,4] ]);
det(A);
invA:=inverse(A);
:= A
(
(
(
(
(
6 1 8
7 5 3
2 9 4
360
:= invA
(
(
(
(
(
(
(
(
(
(
(
(
(
-7
360
17
90
-37
360
-11
180
1
45
19
180
53
360
-13
90
23
360
92
Exemplo 2:
> B:=matrix([ [1,2,3],[4,5,6],[7,8,9] ]);
det(B);
invB:= inverse(B);
:= B
(
(
(
(
(
1 2 3
4 5 6
7 8 9
0
Error, (in inverse) singular matrix
Observao: Recebemos uma mensagem de erro esperada, j que como o
determinante de B 0, B no possui inversa.
4. INTERPRETAO GEOMTRICA DA SOLUO DE SISTEMAS LINEARES COM DUAS
EQUAES E DUAS INCGNITAS
O comando:
solve({equao 1, equao 2},{x, y});
resolve o sistema de duas equaes e duas variveis x e y.
Exemplo 1: Sistema com soluo nica (SISTEMA POSSVEL DETERMINADO - SPD).
Dado o sistema
=
= +
2
10
:
y x
y x
S
usamos o comando solve para determinar o valor das variveis x e y:
usamos o comando implicitplot para a construes do grfico das funes que compem o
sistema linear.
> restart:
with(linalg):
solve( {x+y=6, x-y=2}, {x,y} );
with(plots):
implicitplot({x+y=6, x-y=2},x=-10..10,y=-10..10,title=`Sistema
Linear - SPD`);
{ } , = y 2 = x 4
93
Observao: A soluo do sistema linear, representa o ponto de
interseco das duas equaes de retas que compem o sistema.
Exemplo 2: Sistema sem soluo (SISTEMA IMPOSSVEL - SI).
Dado o sistema
= +
= +
10 2 2
6
:
y x
y x
S
usamos o comando solve para determinar o valor das variveis x e y:
usamos o comando implicitplot para a construes do grfico das funes que compem o
sistema linear.
> restart:
with(linalg):
solve( {x+y=6, 2*x+2*y=10}, {x,y} );
with(plots):
implicitplot({x+y=6, 2*x+2*y=10},x=-10..10,y=-10..10,title=`Sistema
Linear - SI`);
Warning, the protected names norm and trace have been redefined and
unprotected
Warning, the name changecoords has been redefined
Observao: Neste caso, no obteremos resultado algum. Isso ocorrer
sempre que o sistema em questo for impossvel, ou seja, no admite
soluo.Geometricamente, temos que as duas retas so paralelas e distintas, portanto no
apresentam ponto de interseco.
94
Exemplo 3: Sistema com infinitas solues (SISTEMA POSSVEL INDETERMINADO - SPI).
Dado o sistema
= +
= +
12 2 2
6
:
y x
y x
S
> restart:
with(linalg):
solve( {x+y=6, 2*x+2*y=12}, {x,y} );
with(plots):
implicitplot({x+y=6, 2*x+2*y=12},x=-10..10,y=-10..10,title=`Sistema
Linear - SPI`);
Warning, the protected names norm and trace have been redefined and
unprotected
{ } , = x + y 6 = y y
Warning, the name changecoords has been redefined
Observao:Verificamos que uma das variveis (y, nesse caso) tomada
como parmetro, da temos infinitas solues para esse sistema: para
cada valor atribudo a y, obtemos uma soluo diferente para o
sistema.Geometricamente, as duas retas so paralelas e coincidentes. Assim, todo ponto de
uma reta automaticamente ponto da outra, justificando o porque das infinitas solues.
95
5. LISTA DE EXERCCIOS PROPOSTOS PARA A REVISO DOS CONCEITOS
1) Usando o software Maple, resolva os seguintes Sistemas Lineares:
a)
= +
= +
= +
3 3 4
2 3
1 2
:
z y x
y x
z x
S b)
= +
= +
= +
3 3
2 2
1 2
:
y x
z y x
z y x
S c)
= +
= +
= +
0 2 3
0 2 4
0 2 3
:
z y x
y x
z y x
S
Soluo:
a)
> restart:
with(linalg):
solve( {2*x+z=1, x+3*y=2, -x+4*y-3*z=3}, {x,y,z} );
Warning, the protected names norm and trace have been redefined and
unprotected
{ } , , = x
10
11
= z
-9
11
= y
4
11
b)
> restart:
with(linalg):
solve( {2*x-y+z=1, 2*x-y+z=2, x+3*y=3}, {x,y,z} );
Warning, the protected names norm and trace have been redefined and
unprotected
Observao: Neste caso, no obteremos resultado algum. Isso ocorrer
sempre que o sistema em questo for impossvel, ou seja, no admite
soluo.
c)
> restart:
with(linalg):
solve( {3*x-y+2*z=0, 4*x+2*y=0, -x-3*y+2*z=0}, {x,y,z} );
Warning, the protected names norm and trace have been redefined and
unprotected
{ } , , = x
1
2
y = y y = z
5
4
y
Observao:Verificamos que uma das variveis (x, nesse caso) tomada
como parmetro, da temos infinitas solues para esse sistema: para
cada valor atribudo a x, obtemos uma soluo diferente para o
sistema.
> # Tpicos 1, 2 e 3 => Adaptado de Reginaldo - UFMG
96
EXEMPLO DE PROGRAMAS (ROTEIROS = SCRIPTS):
1) Elabore um programa em que dada uma funo de uma varivel, o mesmo determine:
a) O grfico da funo dada;
b) A derivada de primeira ordem, ou seja, a primeira derivada;
c) O(s) ponto(s) crtico(s) da funo;
d) A derivada de segunda ordem, ou seja, a segunda derivada;
e) A classificao do(s) ponto(s) crtico(s) da funo usando o teste da segunda derivada.
Soluo:
OBSERVAO: fx: representa a 1.a derivada e fxx: representa a 2.a derivada
> f:=x^3/3-6*x^2+35*x+70;# DEFINA AQUI A FUNO QUE SER ANALISADA
:= f + +
1
3
x
3
6 x
2
35 x 70
> plot(f,x=4..10); # CONSTRUA O GRFICO DA FUNO (APS OS PONTOS CRTICOS
REDEFINA O INTERVALO)
> fx:=diff(f,x);# CLCULO DA DERIVADA DE f EM RELAO A VARIVEL x (DERIVADA DE
1.a ORDEM)
:= fx + x
2
12 x 35
> critico:=solve({fx=0},{x});# RESOLUO DA EQUAO f'(x) = 0
:= critico , { } = x 7 { } = x 5
> fxx:=diff(fx,x);# CLCULO DA DERIVADA DE SEGUNDA ORDEM
:= fxx 2 x 12
97
> fxx_critico1:=subs(critico[1],fxx);# AVALIANDO O PONTO CRTICO ENCONTRADO NA
SEGUNDA DERIVADA
:= fxx_critico1 2
> f_critico1:=subs(critico[1],f);# AVALIANDO A FUNO NO PONTO CRTICO ENCONTRADO
:= f_critico1
406
3
> fxx_critico2:=subs(critico[2],fxx);# AVALIANDO O PONTO CRTICO ENCONTRADO NA
SEGUNDA DERIVADA
:= fxx_critico2 -2
> f_critico2:=subs(critico[2],f);# AVALIANDO A FUNO NO PONTO CRTICO ENCONTRADO
:= f_critico2
410
3
> ################################################################################
> ### FAAMOS AQUI A CLASSIFICAO DOS PONTOS CRTICOS ENCONTRADOS ####
> ################################################################################
> if fxx_critico1 < 0 then print(critico[1],`ABSCISSA DO PONTO DE MXIMO`)
elif fxx_critico1 > 0 then print(critico[1],`ABSCISSA DO PONTO DE MNIMO`)
else print(critico[1],`NADA A CONCLUIR PELO TESTE DA DERIVADA SEGUNDA`)
fi;
, { } = x 7 ABSCISSA DO PONTO DE MNIMO
> if fxx_critico2 < 0 then print(critico[2],`ABSCISSA DO PONTO DE MXIMO`)
elif fxx_critico2 > 0 then print(critico[2],`ABSCISSA DO PONTO DE MNIMO`)
else print(critico[2],`NADA A CONCLUIR PELO TESTE DA DERIVADA SEGUNDA`)
fi;
, { } = x 5 ABSCISSA DO PONTO DE MXIMO
> # ------------------------ FIM DO PROGRAMA -----------------------------------#
> # VOLTE A PRIMEIRA LINHA DO PROGRAMA E SUBSTITUA A FUNO POR UMA OUTRA! #
> # NO MENU PRINCIPAL CLQUE EM <Edit> SELECIONE A OPO <Execute> E <Worksheet> #
> # OBSERVE A CLASSIFICAO DOS PONTOS CRTICOS ENCONTRADOS. #
> # ------------------------ FIM DO PROGRAMA -----------------------------------#
>
98
2) Elabore um programa em que dada uma funo de duas variveis, o mesmo determine:
a) o grfico da funo dada;
b) as derivada parciais de primeira ordem, ou seja, as primeiras derivadas;
c) o(s) ponto(s) crtico(s) da funo;
d) as derivadas de segunda ordem, ou seja, a segundas derivadas;
e) a classificao do(s) ponto(s) crtico(s) da funo usando o teste da segunda derivada.
Soluo:
> f:=1/3*x^3+1/3*y^3-3/2*x^2-7/2*y^2+2*x+12*y+1000;# DEFINA AQUI A FUNO QUE SER
ANALISADA
:= f + + + +
1
3
x
3
1
3
y
3
3
2
x
2
7
2
y
2
2 x 12 y 1000
> plot3d(f,x=-3..3,y=-3..3,axes=framed); # CONSTRUA O GRFICO DA FUNO
> fx:=diff(f,x);# CALCULO DA DERIVADA DE f EM RELAO A VARIVEL x
:= fx + x
2
3 x 2
> fy:=diff(f,y); # CALCULO DA DERIVADA DE Z EM RELAO A VARIVEL y
:= fy + y
2
7 y 12
> critico:=solve({fx=0,fy=0},{x,y});# RESOLUO DO SISTEMA COMPOSTO PELAS
(derivadas de 1.a ordem)
:= critico , , , { } , = y 3 = x 1 { } , = x 1 = y 4 { } , = y 3 = x 2 { } , = x 2 = y 4
99
> fxx:=diff(fx,x);# CALCULO DA DERIVADA DE fx EM RELAO A VARIVEL x
:= fxx 2 x 3
> fxy:=diff(fx,y);# CALCULO DA DERIVADA DE fx EM RELAO A VARIVEL Y
:= fxy 0
> fyx:=diff(fy,x);# CALCULO DA DERIVADA DE fy EM RELAO A VARIVEL x
:= fyx 0
> fyy:=diff(fy,y);# CALCULO DA DERIVADA DE fy EM RELAO A VARIVEL y
:= fyy 2 y 7
> with(linalg):# ACIONANDO A CAIXA DE FERRAMENTAS DE ALGEBRA LINEAR
> H:=matrix([[fxx,fxy],[fyx,fyy]]);# CONSTRUO DA MATRIZ HESSIANA (derivadas de
2.a ordem)
:= H
(
(
2 x 3 0
0 2 y 7
> Hessiano:=det(H);# CALCULO DO DETERMINANTE DA MATRIZ HESSIANA
:= Hessiano ( ) 2 x 3 ( ) 2 y 7
> H_critico1:=subs(critico[1],Hessiano);# AVALIANDO O PONTO CRTICO ENCONTRADO NO
HESSIANO
:= H_critico1 1
> fxx_critico1:=subs(critico[1],fxx);# CASO HESSIANO > 0, CLASSIFIQUE EM MXIMO OU
MNIMO
:= fxx_critico1 -1
> f_critico1:=subs(critico[1],f); # AVALIANDO A FUNO NO PONTO CRTICO ENCONTRADO
:= f_critico1
3043
3
> H_critico1:=subs(critico[1],Hessiano);# AVALIANDO O PONTO CRTICO ENCONTRADO NO
HESSIANO
:= H_critico1 1
> fxx_critico1:=subs(critico[1],fxx);# CASO HESSIANO > 0, CLASSIFIQUE EM MXIMO OU
MNIMO
:= fxx_critico1 -1
> f_critico1:=subs(critico[1],f); # AVALIANDO A FUNO NO PONTO CRTICO ENCONTRADO
:= f_critico1
3043
3
> H_critico2:=subs(critico[2],Hessiano);# AVALIANDO O PONTO CRTICO ENCONTRADO NO
HESSIANO
:= H_critico2 -1
> fxx_critico2:=subs(critico[2],fxx);# CASO HESSIANO > 0, CLASSIFIQUE EM MXIMO OU
MNIMO
:= fxx_critico2 -1
> f_critico2:=subs(critico[2],f); # AVALIANDO A FUNO NO PONTO CRTICO ENCONTRADO
:= f_critico2
6085
6
> H_critico3:=subs(critico[3],Hessiano);# AVALIANDO O PONTO CRTICO ENCONTRADO NO
HESSIANO
:= H_critico3 -1
> fxx_critico3:=subs(critico[3],fxx);# CASO HESSIANO > 0, CLASSIFIQUE EM MXIMO OU
MNIMO
:= fxx_critico3 1
> f_critico3:=subs(critico[3],f); # AVALIANDO A FUNO NO PONTO CRTICO ENCONTRADO
100
:= f_critico3
6085
6
> H_critico4:=subs(critico[4],Hessiano);# AVALIANDO O PONTO CRTICO ENCONTRADO NO
HESSIANO
:= H_critico4 1
> fxx_critico4:=subs(critico[4],fxx);# CASO HESSIANO > 0, CLASSIFIQUE EM MXIMO OU
MNIMO
:= fxx_critico4 1
> f_critico4:=subs(critico[4],f); # AVALIANDO A FUNO NO PONTO CRTICO ENCONTRADO
:= f_critico4 1014
> ################################################################################
> ### FAAMOS AQUI A CLASSIFICAO DOS PONTOS CRTICOS ENCONTRADOS ###
> ################################################################################
> if H_critico1 < 0 then print(critico[1],`PONTO DE SELA`)
elif H_critico1 > 0 and fxx_critico1 > 0 then print(critico[1],`PONTO DE MNIMO`)
elif H_critico1 > 0 and fxx_critico1 < 0 then print(critico[1],`PONTO DE MXIMO`)
else print(critico[1],`NADA A CONCLUIR PELO TESTE DA DERIVADA SEGUNDA`)
fi;
, { } , = y 3 = x 1 PONTO DE MXIMO
> if H_critico2 < 0 then print(critico[2],`PONTO DE SELA`)
elif H_critico2 > 0 and fxx_critico2 > 0 then print(critico[2],`PONTO DE MNIMO`)
elif H_critico2 > 0 and fxx_critico2 < 0 then print(critico[2],`PONTO DE MXIMO`)
else print(critico[2],`NADA A CONCLUIR PELO TESTE DA DERIVADA SEGUNDA`)
fi;
, { } , = x 1 = y 4 PONTO DE SELA
> if H_critico3 < 0 then print(critico[3],`PONTO DE SELA`)
elif H_critico3 > 0 and fxx_critico3 > 0 then print(critico[3],`PONTO DE MNIMO`)
elif H_critico3 > 0 and fxx_critico3 < 0 then print(critico[3],`PONTO DE MXIMO`)
else print(critico[3],`NADA A CONCLUIR PELO TESTE DA DERIVADA SEGUNDA`)
fi;
, { } , = y 3 = x 2 PONTO DE SELA
> if H_critico4 < 0 then print(critico[4],`PONTO DE SELA`)
elif H_critico4 > 0 and fxx_critico4 > 0 then print(critico[4],`PONTO DE MNIMO`)
elif H_critico4 > 0 and fxx_critico4 < 0 then print(critico[4],`PONTO DE MXIMO`)
else print(critico[4],`NADA A CONCLUIR PELO TESTE DA DERIVADA SEGUNDA`)
fi;
, { } , = x 2 = y 4 PONTO DE MNIMO
> # ------------------------ FIM DO PROGRAMA -----------------------------------#
> # VOLTE A PRIMEIRA LINHA DO PROGRAMA E SUBSTITUA A FUNO POR UMA OUTRA! #
> # NO MENU PRINCIPAL CLQUE EM <Edit> SELECIONE A OPO <Execute> E <Worksheet> #
> # OBSERVE A CLASSIFICAO DOS PONTOS CRTICOS ENCONTRADOS. #
> # ------------------------ FIM DO PROGRAMA -----------------------------------#
101
EQUAES DIFERENCIAIS ORDINRIAS (EDO) VIA MAPLE
O comando bsico do Maple para resolver equaes diferenciais ordinrias o "dsolve".
A sintaxe do dsolve : dsolve("oque", "como");
O "oque" refere-se a EDO (ou sistema de edo's) junto com condies iniciais. O "como" especifica
qual rotina do Maple vai ser utilizada.
til dar nomes a todas as equaes e condies iniciais quando usamos o dsolve.
Consulte o help para saber sobre EDP. Tecle ???pdsolve;
Exemplos:
Para aprender a usar o help: entre com o comando with(DEtools);
> eq:=diff(y(x),x)=x*y(x);
:= eq =
c
c
x
( ) y x x ( ) y x
> inic:=y(2)=1;
:= inic = ( ) y 2 1
Agora, eq o nome da edo que queremos resolver e init o nome das condies iniciais.
importante usar y(x) -- isto indica que tomamos y como uma varivel dependente e x como
varivel independente.
Para resolver sem a condio inicial, isto determinar a soluo geral, usamos `dsolve`
> dsolve(eq,y(x));
= ( ) y x _C1 e
( ) / 1 2 x
2
Note que _C1 a constante arbitraria produzida pelo Maple.
Para resolver o Problema de Valor Inicial (PVI) devemos agrupar a EDO junto com a condio
inicial entre chaves.
> dsolve({eq,inic},y(x));
= ( ) y x
e
( ) / 1 2 x
2
e
2
s vezes Maple apresenta uma resposta implcita, assim comum pedir que o Maple explicite a
resposta em funo da varivel dependente. Exemplo:
> dsolve(diff(y(x),x)=y(x)^2, y(x));
= ( ) y x
1
x _C1
102
Usamos o comando explicit como opo em dsolve:
> dsolve(diff(y(x),x)=y(x)^2, y(x),explicit);
= ( ) y x
1
x _C1
> dsolve(diff(y(x),x)=y(x)^2, y(x), explicit);
Assim melhor!!! (SER QUE AINDA EXISTE ESTA NECISSIDADE DA VERSO 4?)
- USO MAIS AVANADO DE DSOLVE:
Existem 4 maneiras de usar o dsolve para situaes alm das edos de primeira ordem e pvi simples.
1. Equaes de ordem superior
2. Sistemas de EDO's
3. Solues numericas
4. Usando sries de potncias para obter solues de edo's
1. Equaes de ordem superior : edo's de ordem 2 ou superior podem ser resolvidas usando o
dsolve. As derivadas de ordem superior so escritas como no exemplo.
> diff(f(x),x$3);
Uma EDO de ordem 2:
> eqn2:=diff(y(x),x$2)+3*diff(y(x),x)+2*y(x)=exp(x);
A soluo geral :
> dsolve(eqn2,y(x));
Para este problema vamos especificar condies de y em x=1:
> inits:=y(1)=2, D(y)(1)=4;
> dsolve({eqn2,inits},y(x));
2. Sistemas de EDO's: Vamos ver um exemplo.
> eqns:=diff(y(x),x)+diff(z(x),x)=x, diff(y(x),x)-2*diff(z(x),x)=x^2;
> inits:= y(0)=1, z(0)=2;
> dsolve({eqns,inits},{y(x),z(x)});
> restart:# vamos zerar a memoria do maple
3. Solues Numricas: Em geral impossivel obter explicitamente a soluao de uma EDO, neste
caso usamos um mtodo numrico para aproximar a soluo. O Maple faz isto, basta usar a
opcao numeric em dsolve, como no exemplo:
> eqn:=diff(y(x),x)+exp(y(x))*x^3=2*sin(x); init:=y(0)=2;
> F:=dsolve({eqn,init},y(x),numeric);
O valor de F em x=2
103
> F(2);
Em geral util plotar numericamente a soluo obtida de uma EDO. Para fazer isto usamos o
comando odeplot ao resultado (F neste caso) de dsolve(....,numeric). Para usar odeplot
precisamos de "chamar" o plots.
> with(plots,odeplot);
Para plotar a solucao usamos a sintaxe.
> odeplot(F,[x,y(x)],-2..2);
4. Usando series de potncias. Exemplo: resolver y'+x*y=0, y(0)=1 por series .
> dsolve({diff(y(x),x)+x*y(x)=0, y(0)=1},y(x), series);
Se voc quer mais termos, pea mais.
> Order:=14: dsolve({diff(y(x),x)+x*y(x)=0, y(0)=1},y(x), series);
Um pouco de EDP
> restart:
> ?pdsolve; #ver o help
> with(PDEtools);
> PDE := x^2*diff(f(x,y),y)-y^2*diff(f(x,y),x) = 0;
> sol:=pdsolve(PDE);
> pdetest(sol,PDE);### vamos testar??
> eqp:=diff(f(x,y),y)+3*diff(f(x,y),x)+2*f(x,y)=1;
A soluo geral :
> sol2:=pdsolve(eqp,f(x,y));
> pdetest(sol2,eqp);
104
TRANSFORMADA DE LAPLACE VIA MAPLE
Clculo Diferencial e Integral: um KIT de sobrevivncia
This woksheet is in Portuguese language.
Prof. Doherty Andrade - UEM
Nota: Nesta woksheet est todo o material visto em aula sobre transformada de Laplace.
1.1. TEOREMAS
- Teorema (Existncia da Transformada de Laplace)
Se ) (t f de ordem exponencial, ento sua transformada de Laplace ) ( ) ( s F t Lf = dada por:
}
=
0
) (
) ( ) ( dt e t f s F
st
A integral definindo ) (s F existe nos pontos . s t <
- Teorema (Linearidade da Transformada de Laplace )
Sejam ) (t f e ) (t g
tendo transformada de Laplace dadas por ) (s F e ) (s G , respectivamente. Se a e b
so constantes, ento:
). ( ) ( )) ( ) ( (( s G b s aF t g b t f a L + = +
- Teorema (Unicidade da Transformada de Laplace)
Sejam ) (t f e ) (t g
tendo Transformada de Laplace dadas por ) (s F e ) (s G , respectivamente. Se
) ( ) ( s G s F = ento:
). ( ) ( t g t f =
1.2. USANDO O MAPLE NA TRANSFORMADA DE LAPLACE
Para trabalhar com a Transformada de Laplace no Maple, voc precisa carregar os procedimentos
Laplace transform.
Faa isto com o commando (seguido de dois pontos ou ponto e virgule):
> with(inttrans):
> with(inttrans);
addtable fourier fouriercos fouriersin hankel hilbert invfourier invhilbert , , , , , , , , [
invlaplace invmellin laplace mellin savetable , , , , ]
105
Exemplos:
1) Determine a transformada de Laplace da funo degrau unitrio:
>
< s
=
c t se
c t se
t f
, 0
0 , 1
) (
> c:='c': f:='f': F:='F': g:='g': s:='s': t:='t': T:='T':
f0 := t -> 1:
g := t -> subs(T=t, int(f0(T)*exp(-s*T),T)):
F := t -> subs(T=t, int(f0(T)*exp(-s*T),T=0..c)):
`For 0 <= t <= c, f(t) ` = f0(t);
Int(f(t)*exp(-s*t),t) = g(t);
`F(s) = `, Int(f(t)*exp(-s*t),t=0..c) = F(s);
`F(s) ` = simplify(F(s));
= For 0 <= t <= c, f(t) 1
= d
(
]
(
(
( ) f t e
( ) s t
t
e
( ) s t
s
, F(s) = = d
(
]
(
(
0
c
( ) f t e
( ) s t
t
e
( ) s c
1
s
= F(s)
e
( ) s c
1
s
Veja o grfico de f.
> f:=x -> piecewise(x>0,1); #tomei c=0 aqui
:= f x ( ) piecewise , < 0 x 1
> with(plots):
> plot(f(x),x=-2..4,y=0..2);
106
2) Determine a transformada de Laplace de . ) (
) ( t a
e t f =
> a:='a': f:='f': F:='F': g:='g': s:='s': t:='t': T:='T':
f0 := t -> exp(a*t):
`f(t) ` = f0(t);
g := proc(t,S)
simplify(subs(T=t,int(f0(T)*exp(-S*T),T)))
end:
Int(f(t)*exp(-s*t),t) = g(t,s);
`F(s) ` = subs(T=t, int(f0(T)*exp(-s*T),T=0..infinity));
`F(s) ` = simplify(g(infinity,s) - g(0,s));
F := s -> - subs(S=s, g(0,S)):
`F(s) ` = F(s);
= f(t) e
( ) a t
= d
(
]
(
(
( ) f t e
( ) s t
t
e
( ) t ( ) a s
a s
= F(s) lim
t
e
( ) a t s t
1
a s
= F(s)
e
( ) ( ) a s
1
a s
= F(s)
1
a s
> `f(t) ` = exp(a*t);
`F(s) ` = laplace(exp(a*t), t, s);
= f(t) e
( ) a t
= F(s)
1
+ a s
107
3) Determine a transformada de Laplace de ) ( sinh ) ( t a t f = .
Como
2
) ( sinh ) (
) ( ) ( t a t a
e e
t a t f
= = , usamos que:
= ( ) L
1
e
( ) a t 1
s a
e = ( ) L
2
e
( ) a t 1
+ s a
.
> L:='L':
`f(t) ` = sinh(a*t);
`f(t) ` = (exp(a*t)-exp(-a*t))/2;
L1 :=laplace( exp(a*t), t, s):
L2 :=laplace(exp(-a*t), t, s):
L(exp(a*t)) = L1;
L(exp(-a*t)) = L2; ` `;
`F(s) ` = (L(exp(a*t)) - L(exp(-a*t)))/2;
`F(s) ` = (L1 - L2)/2;
`F(s) ` = simplify((L1 - L2)/2);
= f(t) ( ) sinh a t
= f(t)
1
2
e
( ) a t 1
2
e
( ) a t
= ( ) L e
( ) a t 1
+ a s
= ( ) L e
( ) a t 1
+ s a
= F(s)
1
2
( ) L e
( ) a t 1
2
( ) L e
( ) a t
= F(s)
1
2
1
+ a s
1
2
1
+ s a
= F(s)
a
a
2
s
2
Podemos verificar este resultado usando as rotinas do Maple:
> `f(t) ` = sinh(a*t);
`F(s) ` = laplace(sinh(a*t), t, s);
= f(t) ( ) sinh a t
= F(s)
a
s
2
a
2
108
4) Determine a transformada de Laplace de . ) ( t t f =
> a:='a': f:='f': F:='F': g:='g': s:='s': t:='t': T:='T':
f0 := t -> t:
`f(t) ` = f0(t);
g := proc(t,S)
simplify(subs(T=t,int(f0(T)*exp(-S*T),T)))
end:
Int(f(t)*exp(-s*t),t) = g(t,s);
`F(s) ` = subs(T=t, int(f0(T)*exp(-s*T),T=0..infinity));
`F(s) ` = simplify(g(infinity,s) - g(0,s));
F := s -> - subs(S=s, g(0,S)):
`F(s) ` = F(s);
= f(t) t
= d
(
]
(
(
( ) f t e
( ) s t
t
e
( ) s t
( ) + s t 1
s
2
Definite integration: Can't determine if the integral is convergent.
Need to know the sign of --> s
Will now try indefinite integration and then take limits.
= F(s) lim
t
+ s t e
( ) s t
e
( ) s t
1
s
2
= F(s)
+ s e
( ) s
e
( ) s
1
s
2
= F(s)
1
s
2
Podemos verificar este resultado usando as rotinas do pacote Transformada de Laplace:
> `f(t) ` = t;
`F(s) ` = laplace(t, t, s);
= f(t) t
= F(s)
1
s
2
109
5) Determine a transformada de Laplace de ). ( cos ) ( t b t f =
> a:='a': f:='f': F:='F': g:='g': s:='s': t:='t': T:='T':
f0 := t -> cos(b*t):
`f(t) ` = f0(t);
g := proc(t,S)
simplify(subs(T=t,int(f0(T)*exp(-S*T),T)))
end:
Int(f(t)*exp(-s*t),t) = g(t,s);
`F(s) ` = subs(T=t, int(f0(T)*exp(-s*T),T=0..infinity));
`F(s) ` = simplify(g(infinity,s) - g(0,s));
F := s -> - subs(S=s, g(0,S)):
`F(s) ` = F(s);
= f(t) ( ) cos b t
= d
(
]
(
(
( ) f t e
( ) s t
t
e
( ) s t
( ) + s ( ) cos b t b ( ) sin b t
+ s
2
b
2
= F(s) lim
t
+ + s e
( ) s t
( ) cos b t b e
( ) s t
( ) sin b t s
+ s
2
b
2
= F(s)
+ + s e
( ) s
( ) cos b b e
( ) s
( ) sin b s
+ s
2
b
2
= F(s)
s
+ s
2
b
2
Verfique este resultado usando as rotinas do Maple:
> `f(t) ` = cos(b*t);
`F(s) ` = laplace(cos(b*t), t, s);
= f(t) ( ) cos b t
= F(s)
s
+ s
2
b
2
110
6) Determine a transformada inversa de .
9
6 3
) (
2
+
+
=
s
s
s F
> f:='f': F:='F': s:='s': t:='t':
F0 := s -> (3*s + 6)/(s^2 + 9):
`F(s) ` = F0(s);
`F(s) ` = expand(F0(s));
= F(s)
+ 3 s 6
+ s
2
9
= F(s) + 3
s
+ s
2
9
6
+ s
2
9
A transformada ) (s F uma combinao linear.
> F1 := s/(s^2 + 9):
F2 := 3/(s^2 + 9):
F[1](s) = F1;
F[2](s) = F2;
`F(s) = `, 3*F[1](s) + 2*F[2](s) = 3*F1 + 2*F2;
= ( ) F
1
s
s
+ s
2
9
= ( ) F
2
s 3
1
+ s
2
9
, F(s) = = + 3 ( ) F
1
s 2 ( ) F
2
s + 3
s
+ s
2
9
6
+ s
2
9
A inversa de ) (
1
s F ) 3 ( cos t e a inversa de ) (
2
s F ). 3 ( t sen
> f1 := invlaplace(F1, s, t):
f2 := invlaplace(F2, s, t):
f[1](t) , ` = L^-1 (F1(s)) ` = f1;
f[2](t) , ` = L^-1 (F2(s)) ` = f2;
, ( ) f
1
t = = L^-1 (F1(s)) ( ) cos 3 t
, ( ) f
2
t = = L^-1 (F2(s)) ( ) sin 3 t
Portanto
( ) f t
= + 3 ( ) f
1
t 2 ( ) f
2
t =
+ 3 ( ) cos 3 t 2 ( ) sin 3 t
.
> `f(t) = `, 3*f[1](t) + 2*f[2](t) = 3*f1 + 2*f2;
, f(t) = = + 3 ( ) f
1
t 2 ( ) f
2
t + 3 ( ) cos 3 t 2 ( ) sin 3 t
Podemos verificar isto usando os procedimentos do Maple:
> `F(s) ` = (3*s + 6)/(s^2 + 9);
`f(t) ` = invlaplace((3*s + 6)/(s^2 + 9), s, t);
= F(s)
+ 3 s 6
+ s
2
9
= f(t) + 3 ( ) cos 3 t 2 ( ) sin 3 t
111
ED0 - TRANSFORMADA DE LAPLACE
O Maple tem um comando para calcular a transformada de Laplace e a sua inversa. Eles
so fceis de usar, embora seus resultados precisem ser manipulados.
A forma dos comandos :
laplace(funcao,var1,var2) ou invlaplace(funcao,var2,var1)
onde funcao a funo a ser transformada, var1 o nome da varivel no espao real que
est sendo transformada e var2 o nome da variavel no espao da transformada de
Laplace. Note que as variveis trocam de lugar em invlaplace.
Exemplo:
> restart:
> with(inttrans):
> f:=laplace(sin(2*t),t,s);
:= f
2
+ s
2
4
> invlaplace(f,s,t);
( ) sin 2 t
Lembra da funo de Heaviside (degrau)? Ela tem a transformada de Laplace bem
conhecida:
> plot(Heaviside(x-1),x=0..5);
> laplace(Heaviside(x-1),x,s);
e
( ) s
s
Maple pode trabalhar operacionalmente com funes desconhecidas:
> laplace(diff(y(x),x),x,s);
s ( ) laplace , , ( ) y x x s ( ) y 0
Isto util para resolver EDO's. O comando "isolate" til e deve ser lida da biblioteca:
> eqn:=diff(y(x),x)-3*y(x)=exp(2*x);
:= eqn =
|
\
|
.
|
|
c
c
x
( ) y x 3 ( ) y x e
( ) 2 x
112
> laplace(eqn,x,s);
= s ( ) laplace , , ( ) y x x s ( ) y 0 3 ( ) laplace , , ( ) y x x s
1
s 2
> solve(laplace(eqn,x,s),laplace(y(x),x,s));
+ ( ) y 0 s 2 ( ) y 0 1
+ s
2
5 s 6
> invlaplace(",s,x);
+ + e
( ) 2 x
e
( ) 3 x
( ) y 0 e
( ) 3 x
Agora podermos substituir a condiao inicial se temos uma.
> subs(y(0)=15, ");
+ e
( ) 2 x
16 e
( ) 3 x
Podemos tambem trabalhar com sistemas de EDO's:
> restart;
> with(inttrans):
> eqn1:=diff(x1(t),t$2)+10*x1(t)-4*x2(t)=0;
:= eqn1 = +
|
\
|
.
|
|
|
c
c
2
t
2
( ) x1 t 10 ( ) x1 t 4 ( ) x2 t 0
> eqn2:=diff(x2(t),t$2)-4*x1(t)+4*x2(t)=0;
:= eqn2 = +
|
\
|
.
|
|
|
c
c
2
t
2
( ) x2 t 4 ( ) x1 t 4 ( ) x2 t 0
> E1:=laplace(eqn1,t,s);
E1 s ( ) s ( ) laplace , , ( ) x1 t t s ( ) x1 0 ( ) ( ) D x1 0 10 ( ) laplace , , ( ) x1 t t s + :=
4 ( ) laplace , , ( ) x2 t t s 0 =
> E2:=laplace(eqn2,t,s);
E2 s ( ) s ( ) laplace , , ( ) x2 t t s ( ) x2 0 ( ) ( ) D x2 0 4 ( ) laplace , , ( ) x1 t t s :=
4 ( ) laplace , , ( ) x2 t t s + 0 =
> solve({E1,E2},{laplace(x1(t),t,s),laplace(x2(t),t,s)});
( ) laplace , , ( ) x1 t t s = {
+ + + + + s
3
( ) x1 0 s
2
( ) ( ) D x1 0 4 s ( ) x2 0 4 ( ) ( ) D x2 0 4 s ( ) x1 0 4 ( ) ( ) D x1 0
+ + s
4
14 s
2
24
,
( ) laplace , , ( ) x2 t t s =
+ + + + + s
3
( ) x2 0 s
2
( ) ( ) D x2 0 4 s ( ) x1 0 4 ( ) ( ) D x1 0 10 s ( ) x2 0 10 ( ) ( ) D x2 0
+ + s
4
14 s
2
24
}
113
> invlaplace(",s,t);
( ) x2 t
2
5
( ) x1 0 ( ) cos 2 t
4
5
( ) x2 0 ( ) cos 2 t
1
5
2 ( ) ( ) D x1 0 ( ) sin 2 t + + = {
2
5
2 ( ) ( ) D x2 0 ( ) sin 2 t
1
5
( ) x2 0 ( ) cos 2 3 t
2
5
( ) x1 0 ( ) cos 2 3 t + +
1
30
3 ( ) ( ) D x2 0 ( ) sin 2 3 t
1
15
3 ( ) ( ) D x1 0 ( ) sin 2 3 t + ( ) x1 t = ,
2
5
( ) x2 0 ( ) cos 2 t
1
5
( ) x1 0 ( ) cos 2 t
1
5
2 ( ) ( ) D x2 0 ( ) sin 2 t + +
1
10
2 ( ) ( ) D x1 0 ( ) sin 2 t
2
5
( ) x2 0 ( ) cos 2 3 t
4
5
( ) x1 0 ( ) cos 2 3 t + +
1
15
3 ( ) ( ) D x2 0 ( ) sin 2 3 t
2
15
3 ( ) ( ) D x1 0 ( ) sin 2 3 t + }
Isto muito legal! A resposta hard, porque ns no entramos com dados
iniciais.Vamos fazer isto agora:
> subs(x1(0)=0,D(x1)(0)=1,x2(0)=0,D(x2)(0)=-1,");
= ( ) x2 t
1
5
2 ( ) sin 2 t
1
10
3 ( ) sin 2 3 t , {
= ( ) x1 t +
1
10
2 ( ) sin 2 t
1
5
3 ( ) sin 2 3 t }
>
E esta a soluo.
114
UM EXEMPLO COM UM PROGRAMA DE COMPUTAO ALGBRICA
Na figura abaixo temos um exemplo de utilizao do Maple 7, lanado em meados de 2001. Nela
podemos ver o calculo de uma integral, o gigantesco valor exato do fatorial de 50, a fatorao de um
polinmio de grau 11 e uma derivada oitava da funo tg (x + y). Cada um desses trabalhosos clculos
no leva mais do que 1 segundo para ser concludo em um computador que no seja muito
ultrapassado.
COMPUTAO ALGBRICA NO BRASIL
No Brasil, a Computao Algbrica vem sendo utilizada desde o final da dcada de 80. Por volta de
1988 a Sociedade Brasileira de Matemtica distribuiu uma nota aos seus associados comentando sobre
a importncia em se utilizar esse tipo de recurso computacional.
No Centro Brasileiro de Pesquisas Fsicas, no Rio de Janeiro, no perodo de 24 de julho a 11 de agosto
de 1989 foi realizada a I Escola Brasileira de Computao Algbrica. Seu objetivo era a formao de
pessoal nessa rea. Para isso, foram convidados 8 professores de universidades da Europa e dos
Estados Unidos para ministrarem palestras e minicursos.
H quase dez anos que universidades como a UNICAMP vem mantendo regularmente disciplinas
especficas de Computao Algbrica.
115
COMPUTAO ALGBRICA NA UFPB
Desde 1988 que se usa algum programa de Computao Algbrica na UFPB. O primeiro a chegar por
l foi o REDUCE. Inicialmente disponvel no antigo computador IBM central, depois distribudo em
verses para computadores pessoais. Era utilizado por professores do Departamento de Matemtica e
do Departamento de Fsica.
Em 1991 o DERIVE foi bastante divulgado na UFPB. Era um programa minsculo, ocupava apenas
uns 200 Kbytes mas construa grficos e resolvia muitos problemas de Clculo e lgebra com grande
eficincia. Hoje, ele est incorporado s modernas calculadoras da Texas Instruments.
Com a reformulao curricular que est ocorrendo em vrios cursos, espera-se que a Computao
Algbrica se faa presente em vrias disciplinas, seguindo uma tendncia mundial. Decididamente,
um recurso que veio para ficar.
COMPUTAO ALGBRICA NA INTERNET
Existem dezenas de pginas na Internet sobre Computao Algbrica. Vamos citar aqui apenas a
www.SymbolicNet.org. Trata-se do Symbolic Mathematical Computation Information Center que
excelente e tem conexes para cerca de 30 diferentes sistemas.
- Lenimar Nunes de Andrade - UFPB CCEN Departamento de Matemtica
- Professor Adjunto do Departamento de Matemtica - UFPB
- e-mail: lenimar@mat.ufpb.br
- http://mat.ufpb.br/lenimar/maple.htm
116
USANDO O MAPLE COMO UMA LINGUAGEM DE PROGRAMAO
- A declarao condicional
Em muitas situaes precisamos decidir:
- se um determinado comando vai ser executado ou no;
- escolher um entre vrios comandos para ser executado.
Para isso, o Maple possui a declarao condicional if
- O comando if
A forma mais simplificada de usar o comando if :
if condio then comando end if; onde condio uma expresso lgica que deve ser avaliada em
verdadeira ou falsa (true ou false) e o comando (ou grupo de comandos) escrito depois da palavra then
e antes de end if ser executado somente se a condio for verdadeira.
Uma forma mais completa da declarao condicional if :
if condicao then comando1 else comando2 end if;
A forma mais completa do if a mostrada a seguir, onde pode aparecer uma condio1 e uma ou
vrias outras condies condio2, condio3, . . . , condioN.
if condio1 then comando1
elif condio2 then comando2
elif condio3 then comando3
. . .
else comandoN
end if;
Se condio1 for verdadeira, ento executado o comando1 e o if encerra. Seno, verificada a
condio2 e, se ela for verdadeira, executado o comando2 e o if encerra. E assim todas as condies
vo sendo testadas at chegar em uma condio verdadeira. Se todas as condies testadas forem falsas
ento ser executado o comando que estiver depois do else, se esse comando tiver sido definido.
Notas:
- A expresso lgica do if pode ser composta de vrias condies ligadas por operadores lgicos
como and, or ou not.
- O que determina se os comandos dentro do if vo ser mostrados na sua execuo ou no a
utilizao de um ponto e vrgula ou dois pontos depois do end if.
- Podemos ter if dentro de outro if.
Exemplos:
1) No if mostrado a seguir, temos y := x se x > 0 e y := -x se x < 0.
> x := -5:
> if x >= 0 then y := x else y := -x end if;
:= y 5
117
2) O if a seguir testa se um inteiro n dado divisvel por 2, 3, 5 ou 7. Se for, mostrada uma
mensagem especfica e o quociente Q da diviso. A funo frac(x) calcula a parte fracionria de x.
> n:= 35: # inteiro dado
>
> if frac(n/2) = 0 then
> print(` divisvel por 2`); Q := n/2;
> elif frac(n/3) = 0 then
> print(` divisvel por 3`); Q := n/3;
> elif frac(n/5) = 0 then
> print(` divisvel por 5`); Q := n/5;
> elif frac(n/7) = 0 then
> print(` divisvel por 7`); Q := n/7;
> else
> print(`No divisvel por 2, nem por 3, nem por 5 e nem por 7`)
> end if;
divisvel por 5
:= Q 7
Observao: Note que a estrutura condicional acima detecta apenas que n divisvel por 5. O fato
dele tambm ser divisvel por 7 foi ignorado.
Exemplo: Uso comum do FOR, IF e WHILE
1) Listar todos os n inteiros primos que satisfaam n < 2000:
> for i from 1
> while i < 2000 do
> if isprime(i) then print(i) end if
> end do;
2
3
5
1997
1999
2) Listar todos os n inteiros primos que satisfaam 17s n < 2000:
> for i from 17 by 2
> while i < 2000 do
> if isprime(i) then print(i) end if
> end do;
17
19
1999
118
Uma listagem de uma pequena parte deles est mostrada a seguir. Para uma listagem completa
consulte a documentao on line digitando ?type.
TIPO BSICO BREVE DESCRIO: EXEMPLO
integer Inteiro; 0
posint Inteiro positivo; 3
negint Inteiro negativo; -3
odd Inteiro mpar; 5
even Inteiro par; 4
float Nmero real (ponto flutuante); 3:14159
complex a+b* I, onde a e b so do tipo realcons; 5+4*I
fraction Frao p=q com p e q inteiros; 2=3
rational Frao ou inteiro; 5
numeric Numrico (inteiro, frao ou real); 4:5=3
positive Numrico positivo; 1:2345
negative Numrico negativo; 11
algebraic Algbrico; sqrt(2)* I
polynom Polinmio; x2+5*x+3
list Lista; [v;w; 1; 2; 3]
listlist Lista de listas; [[1; 2]; [a; b]]
set Conjunto; f1; 0; x; yg
series Srie; series(sin(x); x = 0; 4)
anything Qualquer tipo, exceto seqncia
symbol Smbolo; alpha
+ Soma; a + b
* Produto; x* y
Potncia; 2x
< Desigualdade; x < 0
= Igualdade; y = 4
name Nome de varivel; x
function Funo; f(x)
procedure Procedimento; f
Matrix Matriz; Matrix([[1; 2]; [3; 4]])
string Caracteres entre aspas; teste
indexed Varivel indexada; a[n]
Para mostrar o tipo de uma varivel, constante ou expresso X podemos usar o comando whattype(X).
FAZER O PROGRAMA DO MDULO USANDO O PROCEDIMENTO PROC
119
Executar a seguinte animao tridimensional:
> with(plots):
Anima3D := proc(eq1::algebraic, eq2::algebraic,
eq3::algebraic)
local k;
for k from 0 to 17 do
graf[k] := tubeplot([eq1, eq2, eq3], t=0..20,
radius=1, shading = zhue,
orientation=[20*k, 70]):
end do;
display(seq(graf[k], k=0..17), insequence=true):
end proc:
Warning, `graf` is implicitly declared local to procedure `Anima3D`
> Anima3D(5*cos(t), 5*sin(t), t);
> Anima3D(5*t, t, t+2);
120
is - checa uma propriedade
Seqncia de Chamada: is(x,prop)
Parmetros:
x - uma varivel, um nome ou uma expresso
prop - uma propriedade
Descrio:
- O comando is manda o Maple checar se uma propriedade true, false ou fail para x. Quando a
resposta fail, isso quer dizer que o Maple no pode determinar se ela verdadeira ou falsa.
Quando a resposta true, quer dizer que todos os valores possveis de x satisfazem a propriedade.
Quando a resposta false, quer dizer que pelo menos um valor de x no satisfaz a propriedade.
- is pode ter como argumentos vrios pares ou relaes. Neste caso, ele retorna true se todas so
verdadeiras ao mesmo tempo. Por exemplo, para checar se x est no intervalo (0,1), podemos
escrever is(0<x,x<1).
property names e.g. continuous
nomess e.g. integer, real
conjuntos e.g. RealRange( a, b ), RealRange( -infinity, b ),
RealRange( a, infinity )
Exemplos:
> x:=2;
is(1-x^2, positive);
:= x 2
false
Is entende intervalos:
> is(5,RealRange(5,infinity));
true
> is(5,RealRange(Open(5),infinity));
false
121
COORDENADA POLARES USANDO O MAPLE
A frmula para o clculo de rea de uma figura plana descrita em coordenadas polares ) ( f r =
dada por:
d dr r A
R
R
}}
=
onde R a regio para o clculo da rea.
A frmula para o clculo de rea utilizando o software Maple com integrao dupla dada por:
> int(int(r,r=funo(theta1)..funo(theta2)),theta=theta1..theta2);
Vejamos a seguir alguns exemplos:
1) Determine por integrao dupla a rea da regio limitada por uma ptala da roscea sen r 2 = .
Soluo:
Para resolvermos este exemplo, necessitamos utilizar o comando polarplot. Para aplicar este
comando necessitamos primeiramente carregar o pacote with(plots) dando o seguinte comando:
> with(plots):
Inicialmente, contrumos o grfico da curva sen r 2 = utilizando o comando polarplot:
> polarplot(sin(2*theta),theta=0..2*Pi,color=blue);
Analisando o grfico anterior vimos que ele apresenta quarto ptalas simtricas no intervalo 0 a 2 .
Agora, contruiremos o mesmo grfico no intervalo de 0 a 2 / para calcular a integral desejada. Veja
o commando a seguir:
> polarplot(sin(2*theta),theta=0..Pi/2,color=blue);
122
Aplicando o commando int, utilizando o conceito de integral dupla, determinamos a area da regio
solicitada. Observe o comando a seguir:
> Int(Int(r,r=0..sin(2*theta)),theta=0..Pi/2)=int(int(r,r=0..sin(2*theta)),theta=0..Pi/2);
= d
(
]
(
0
/ 1 2 t
d
(
]
(
0
( ) sin 2 u
r r u
1
8
t
Assim, conclumos que a area da regio desejada t/8 unidades de area (u. a.)