Escolar Documentos
Profissional Documentos
Cultura Documentos
Maple Curso Uesc PDF
Maple Curso Uesc PDF
UESC
Universidade Estadual de Santa Cruz
Departamento de Cincias Exatas e Tecnolgicas
Andr Nagamine
andren@uesc.br
maro de 2001
SUMRIO
I. Introduo _______________________________________________________ 3
1. Sintaxe e Comandos Bsicos ________________________________________ 5
1.1 Sintaxe ______________________________________________________ 5
1.2. Operaes Bsicas ____________________________________________ 7
1.3. Representao Decimal ________________________________________ 8
1.4. Aritmtica ___________________________________________________ 9
1.5. Operaes com nmero complexos ______________________________ 11
1.6. Atribuindo letras e nomes _____________________________________ 12
1.7. Operaes Simblicas_________________________________________ 13
1.8. Somatrios__________________________________________________ 14
2. Sequncia, Listas, Conjuntos e Array______________________________ 15
2.1. Sequncia___________________________________________________ 15
2.2. Lista _______________________________________________________ 16
2.3. Conjunto ___________________________________________________ 18
2.4. Operaes com Conjuntos e Listas ______________________________ 18
2.5. Array ______________________________________________________ 19
3. Encontrando Solues (sistemas e expresses), Funes e Polinmios _____ 22
3.1. Resoluo de Equaes e Sistemas ______________________________ 22
3.2. Funes de uma varivel ______________________________________ 24
3.2.1 Funes reconhecidas (usuais) _______________________________ 26
3.2.2 Funes definidas por partes ________________________________ 28
3.3. Operaes com Polinmios ____________________________________ 30
4. Grficos de Funes 2D e 3D _______________________________________ 33
1.1. Grficos em duas dimenses ___________________________________ 33
1.1.1 Grficos de funes _______________________________________ 33
1.1.2 Grficos de curvas no plano _________________________________ 35
1.1.3 Grficos em Coordenadas Polares ____________________________ 36
1.1.4 Mltiplos Grficos em 2D __________________________________ 36
1.1.5 Animao de Grficos em Duas Dimenses ____________________ 38
1.2. Grficos em trs dimenses ____________________________________ 39
1.2.1 Grficos de funes _______________________________________ 39
1.2.2 Grficos de superfcies no espao ____________________________ 40
1.2.3 Mltiplos Grficos em 3D __________________________________ 41
2. Tpicos de Clculo _______________________________________________ 42
2.1. Limites _____________________________________________________ 42
2.1.1 Limites de funes de uma varivel ___________________________ 42
2
2.1.2 Limites laterais ___________________________________________ 43
2.1.3 Limites de funes de mais de uma varivel ____________________ 43
2.2. Derivadas___________________________________________________ 44
2.2.1 Derivadas de funes de uma varivel _________________________ 44
2.2.2 Derivadas de ordem superior ________________________________ 45
2.2.3 Derivadas de funes de mais de uma varivel __________________ 46
2.3. Integrais____________________________________________________ 47
2.3.1 Integrais Mltiplas ________________________________________ 48
3. Tpicos de Programao __________________________________________ 50
3.1. Fundamentos________________________________________________ 50
3.2. Estruturas de Programao____________________________________ 51
3.2.1 O Comando for _________________________________________ 52
3.2.2 O Comando if __________________________________________ 53
3.2.3 O Comando while _______________________________________ 54
3.3. Controle de Parmetros _______________________________________ 55
3.4. Outros Exemplos ____________________________________________ 55
3.4.1 Procedimentos Recursivos __________________________________ 55
3.4.2 Procedimento com Listas ___________________________________ 57
3.4.3 O Mtodo de Iterao de Newton_____________________________ 58
7. Bibliografia _____________________________________________________ 59
I. Introduo
O presente texto foi elaborado no sentido de nortear o andamento do curso intitulado
Curso de Introduo ao Software Maple, ministrado no perodo de 18/04/2001 a
07/052001, o qual parte integrante das atividades desenvolvidas pelo Grupo de
Pesquisa em Ensino e Aprendizagem da Matemtica em Ambiente Computacional
GPEMAC que vem atuando na rea de matemtica de DCET desde janeiro de 2000.
O Maple um sistema de computao algbrica desenvolvido por Waterloo Maple Inc.
(Ontrio, Canad). A expresso sistema de computao algbrica, deve-se ao fato de
que o Maple permite aos seus usurios fazer clculos no somente com nmeros, mas
tambm com smbolos, frmulas, expresses, equaes e assim por diante. Pode-se usar
essa capacidade simblica para obter solues analticas exatas para muitos problemas
matemticos, por exemplo, diferenciao, integrao, sistemas de equaes, expanso
de funes em sries, problemas em lgebra Linear, etc. Sistemas de computao
algbrica, em particular o Maple, so poderosas ferramentas para matemticos, fsicos,
3
qumicos, engenheiros, enfim para todos aqueles que necessitam de respostas rpidas e
precisas para determinados problemas matemticos.
O curso tem como objetivo fornecer ao participante um apanhado geral das
potencialidades de Maple em relao a diversos tpicos da matemtica. No se tem, no
desenvolvimento das atividades, a pretenso de detalhar e aprofundar os temas
propostos, mesmo porque isso seria improvvel dada a carga horria destinada ao curso
e tambm dada a extenso do software. Pretende-se, sim, fornecer ao participante os
caminhos possveis para que ele prprio possa escolher no tratamento e resoluo de
seus problemas matemticos. O curso dividido em dois mdulos, no primeiro sero
abordados os seguintes tpicos: sintaxe e comandos bsicos, seqncia , listas,
conjuntos, arrays, sistemas e expresses, funes e polinmios. No segundo mdulo
sero abordados os seguintes tpicos: grficos 2d e 3d, tpicos de clculo e tpicos de
programao.
4
1. Sintaxe e Comandos Bsicos
1.1 Sintaxe
Ao abrir o Maple nos apresentada uma folha de trabalho(Worksheet ou prompt), no
qual podemos acionar funes do aplicativo, produzir textos, hipertextos, clculos, obter
grficos e animaes. A interface grfica do Maple no oferece dificuldades para os
usurios. Na parte de cima da folha vemos trs barras de menu, e na parte de baixo uma
barra contendo informaes sobre o estado atual do sistema.
ou ainda atravs dos menus File e Edit, selecionando os comandos new, open, save,
print, cut, copy e paste, respectivamente. Cada um desses comandos tambm possuem
uma combinao de teclas de atalho que tambm podem ser utilizadas.
Nesta primeira parte, atravs de exemplos, discutiremos algumas regras de sintaxe que
so absolutamente indispensveis na elaborao de um clculo matemtico com o
Maple. Toda instruo de cunho matemtico no Maple deve iniciase com um prompt
assinalado pelo smbolo > logo aps o [, em frente ao qual podemos escrever um
comando a ser executado, e necessariamente deve termina com o sinal ( ; ) ou ( : ). O :
deve ser usado apenas quando desejamos que um determinado comando seja apenas
guardado na memria do Maple e no exibido em tela. Uma regio tipo input pode ser
modificada para uma regio tipo texto, ou viceversa, mediante o uso da tecla F5, ou
usando o cone do menu.
5
Vejamos o que acontece quando esquecemos o sinal de ponto e vrgula ( ; ) ao final de
qualquer comando matemtico.
>2*3
>
Warning, incomplete statement or missing semicolon
O sistema reclama em azul dizendo que a instruo 2*3 est incompleta ou que falta um
ponto e vrgula. Neste caso devemos voltar e corrigir o problema.
>2*3;
6
ordem de precedncia
! ^ou** / * +
10
> {2+28*3}/2;
Error, use intersect for sets
O Maple trabalha com um sistema multilinha. Vrios comandos podem ser colocados
em uma mesma linha, ou um comando em vrias linhas. Exemplos:
>1+2; 2+3; 3+4;
3
5
7
6
Se terminarmos uma instruo com : (dois pontos), o maple a executa e a guarda na
memria, mas no mostra o resultado no tela. Por exemplo:
>1+2:
>%+3; #somando 3 ao resultado anterior
6
Para acionar o sistema de ajuda, help online, basta digitar no prompt o sinal ?
seguido da expresso da qual se deseja informao. Por exemplo, digitando
>?limit
e acionando a tecla ENTER, apresentada na tela um folha com informaes sobre o
comando limit, sua sintaxe, exemplos e comandos correlatos. O sistema de ajuda
pode ser acessado tambm atravs do menu. No item help do menu bsico se encontra
vrias maneiras de buscar ajuda no Maple.
>5*3+8;
7
23
>3^2*3;
27
>(8*2+4)/(10*325);
4
Obs.: Os resultados acima esto de acordo com a ordem de precedncia discutida
anteriormente.
1.3. Representao Decimal
Quando se realiza operaes numricas, a menos que os tipos numricos sejam float
(nmeros em representao decimal) o Maple retorna sempre o resultado exato na forma
simblica, por exemplo:
> 1/2 + 5; 30/9; Pi; exp(2); ln(2);
11/2
10/3
e2
ln(2)
Em alguns casos para se obter o nmero na forma decimal basta acrescentar um ponto
aps o nmero. Isso faz com que o Maple leia o nmero em aritmtica de ponto
flutuante.
> 1/2 + 5.; 30./9; ln(2.);
5.500000000
3.333333333
.6931471806
Obs.: o ltimo nmero acima o mesmo que 0,6931471806. O Maple usa ponto no
lugar da vrgula e no mostra o nmero que est a esquerda ou a direita do ponto caso
este seja apenas o zero. Nos exemplos acima 5. o mesmo que 5,0, 30. o mesmo que
30,0 e 2. o mesmo que 2,0.
Uma forma mais geral usar o comando evalf (avaliar com ponto flutuante) para se
obter uma representao decimal de um nmero. Normalmente, o sistema utiliza dez
algarismos significativos.
>evalf(176/47);
3.744680851
Tambm podemos modificar o nmero de dgitos para quanto quisermos. Por exemplo:
>evalf(Pi);
8
3.141592654
Obs.: O smbolo # utilizado acima significa comentrio. Ele utilizado quando se quer
fazer algum comentrio a respeito do comando. Tudo o que vem depois desse smbolo
ignorado pelo Maple.
O nmero de dgitos utilizado na representao float , por default, 10. Este valor est
alocado na varivel global Digits. Podemos modificar o valor dessa varivel. Por
exemplo:
>Digits := 3
Digits:=3
>evalf(Pi); calculando o valor de com 3 dgitos (incluindo o dgito inteiro)
3.14
Para restabelecer o valor original da varivel global Digits implementamos o
comando,
>Digits:=10;
Digits:=10
1/3
>evalf(%);
.3333333333
1.4. Aritmtica
O comando sqrt (abreviao de square root) calcula a raiz quadrada.
> sqrt(25);
5
Se quisermos no Maple calcular o fatorial de um nmero, basta colocarmos depois do
nmero o smbolo !. Por exemplo:
> 20!;
2432902008176640000
Agora um outro comando pode contar quantos dgitos tem o resultado acima, estamos
falando do comando length. Como por exemplo:
>length(%);
19
9
O Maple tem muitos comandos que podem trabalhar com nmeros inteiros, citaremos
alguns importantes.
>ifactor(60);
(2)2 (3) (5)
De outro modo o Maple pode determinar o mximo divisor comum entre dois ou mais
nmeros, para isso usamos o comando igcd. Por exemplo:
>igcd(123,45);
3
O comando iquo calcula o quociente da diviso entre dois nmeros inteiros, como por
exemplo:
>iquo(25,3);
8
Tambm no Maple podese calcular o resto da diviso entre dois nmeros inteiros,
basta usarmos o comando irem .
>irem(25,3);
1
Na matemtica, mas especificamente na lgebra vemos que para achar o resto da diviso
entre dois nmeros podemos aplicar o conceito de mod. No Maple tal conceito continua
existindo, podendo assim tambm acharmos o resto da diviso entre dois nmeros de
outra maneiro, usando o comando mod. Por exemplo:
>25 mod 3;
1
Obs.: O comando mod no exemplo acima tambm pode ser interpretado da seguinte
forma: 25 em ZZ3 igual a 1 (faa as contas e tente outros exemplos).
>isprime(3345674);
false
>isprime(18002676583);
true
>abs(5);
10
5
>convert(sqrt(28),float);
5.291502622
26/3
.7142857143
11110111
Os comando cos, sin, tan nos d o valor da funo cosseno, seno e tangente
respectivamente em um determinado ponto. Por exemplo;
>sin(Pi/6); nos dar o valor exato da funo seno no ponto Pi/6
>tan(Pi/4); nos dar o valor exato da funo tangente no ponto Pi/4
>exp(1);
e
>ln(1);
0
>ln(exp(5));
5
11
No Maple podemos trabalhar tambm com nmeros complexos. O smbolo I
representa matematicamente para o Maple o nmero 1 , podendo assim usarmos os
conceitos de operaes de nmeros complexos no Maple. Por exemplo:
>(2+5*I)+(1I);
3+4I
>(1+I)/(32*I);
(1/13) + (5/13)I
>4*I+(5+3*I);
5+7I
>(43*I)(89*I);
4 + 6 I
Nos trabalhos mais complexos importante podermos representar por letras ou nomes
expresses complicadas. No Maple esta representao feita atravs do smbolo ( := ).
A regra simples: A := B significa que o lado direito (B) a definio do lado esquerdo
(A).
>num := 4568/235;
4568/235
>var :=x;
var:=x
>term :=x*y;
term:=xy
>A1 :=x*sqrt(4);
A1:=2x
Uma vez que voc atribuiu um nome ou uma letra a uma certa expresso voc pode
uslo como se fosse a prpria expresso.
12
>A1^2;
4x2
>2*var+var^2+var^3;
2x+ x2 + x3
>2*num+num;
13704/235
Atribuir letras ou nomes a expresses algo muito til quando voc precisa utilizar uma
determinada expresso diversas vezes.
y3 + x3
O comando expand tem primariamente a funo de efetuar o produto em uma soma,
como foi visto no caso acima.
>A3:=expand(A2*(y+1));
A3:= x3y + x3 y4 y3
Expand tambm pode ser usado para se expandir outras expresses,
>expand(cos(a+b));
cos(a)cos(b) sin(a)sin(b)
>expand(exp(a+ln(b)));
ea b
13
x3 y + x3 y 4 y3
A4:=
y +1
>simplify(A4);
y 3 + x3
>A5:=cos(x)^5+sin(x)^4+2*cos(x)^22*sin(x)^2cos(2*x);
>A7:= x^5x^47*x^3+x^2+6*x;
A7:=x5 x4 7x3 + x2 + 6x
>factor(A7);
x(x 1)(x 3)(x + 2)(x + 1)
Em um quociente o Maple o comando factor automaticamente simplifica os fatores
comuns no numerador e denominador.
>factor((x^21)/(x+1));
(x 1)
1.8. Somatrios
No Maple podemos usar o conceito de somatrio, para isso usamos o comando Sum ou
sum. Os somatrios podem ser colocados de forma genrica, ou seja, a variao do
ndice no necessariamente precisa ser numrica. Vejamos alguns exemplos abaixo:
>Sum(i, i=1..5);
5
i
i =1
O comando Sum quando escrito com letra maiscula, apenas representa a soma no
smbolo de somatrio, agora se este estiver escrito com a letra minscula ele nos dar o
valor da soma, por exemplo.
>sum(i, i=1..5);
15
14
5
1
i
i =1
2
Se usarmos o comando value, este tambm nos dar o valor da soma como acontece
com o comando sum.Por exemplo:
>value(%);
137/60
Vejamos agora um exemplo onde a variao do ndice no numrica.
>sum(i,i=1..n);
1 1 1
(n + 1)2 n
2 2 2
Note que esta ltima frmula bem conhecida, pois a soma de n primeiros nmeros
inteiros.
Obs.: tudo o que foi dito acima para o somatrio tambm vlido para o produtrio,
cujo comando no Maple product.
2.1. Sequncia
No Maple uma seqncia uma estrutura de dados bsica. Esta um simples grupo de
expresses do Maple separadas por vrgulas.
>s:= 1, 2, 3, 4;
s:= 1, 2, 3, 4
>x, y, z, w;
x, y, z, w
b:= 1, 3, 5, 7
>a.b;
a1,a3,a5,a7
Podese tambm fazer mltiplas atribuies utilizando a notao de sequncia. Por
exemplo
>f, g, h:= 3, 6, 1;
f, g, h:= 3, 6, 1
>f;
3
>h;
1
15
No Maple ao se trabalhar com sequncias, caso os temos de uma sequncia sejam eles
prprios sequncias, este automaticamente transforma tudo em uma nica sequncia.
>s:= 1, 2, 3, 4;
s:= 1, 2, 3, 4
>b:= 1, 3, 5, 7;
b:= 1, 3, 5, 7
>c:= x, y, z, w;
c:= x, y, z, w
>s, b, c;
1, 2, 3, 4, 1, 3, 5, 7, x, y, z, w
O comando seq pode ser usado para construir sequncias da seguinte forma:
2.2. Lista
Uma lista uma sequncia delimitada por colchetes, ou seja, algo do tipo:
[sequncia]
Exemplo:
>data_list := [1, 2, 3, 4, 5];
datalist:=[1, 2, 3, 4, 5]
>polynomials := [x^2+3, x^2+3*x1, 2*x];
polynomials:= [ x 2 + 3 , x 2 + 3 x 1 , 2 x ]
Caso deseje substituir algum elemento de uma lista basta usar o comando subs.
>L := [a, b, c, d, e];
L:= [a, b, c, d, e]
16
>subs(b=2, L);
[a, 2, c, d, e]
>lista:= [sin(x), ln(x), x^2];
lista := [sin(x), ln(x), x2]
>subs(x=Pi, lista);
[sin(), ln(),2]
Obs.: Cabe observar que em uma lista ou em uma sequncia a ordem em que os
elementos so dispostos relevante, alm disso os elementos podem se repetir.
17
2.3. Conjunto
>set1 union set2; nos d a unio do conjunto set1 com o conjunto set2
{a, b, e, d, c}
O Maple no preserva a ordem dos elementos nem repetio dos mesmos. Isto ,
conjuntos para o Maple tem as mesmas propriedades que estes possuem na Matemtica..
Dessa forma os trs conjuntos abaixo so idnticos.
Veremos aqui algumas operaes que so feitas pelo Maple a respeito de conjuntos e
listas.
>numeros :={0, Pi/3, Pi/2, Pi};
numeros:={ , 0, /3, /2}
18
conj1 := [Kate, Tom, Steve]
>member(Tom, conj1); esse comando member diz se o elemento indicado
membro ou no da lista.
true
Tambm o Maple possibilita localizar qual o elemento da lista, basta usar a notao [n]
onde n identifica a posio do elemento na lista. Por exemplo:
>conj1 := [Kate, Tom, Steve];
conj1:= [Kate, Tom, Steve]
> conj1[2];
Tom
O Maple entende conjuntos e listas que no tem nenhum elementos. Por exemplo:
>empty_set :={};
empyt_set :={}
>empty_list :=[];
empty_list :=[]
No Maple podese criar um novo conjunto, usando por exemplo, o comando union.
Por exemplo:
>velho := {2, 3, 4};
velho := {2, 3, 4}
>novo := velho union {2,5};
novo := {2, 3, 4, 5}
>conj3:= velho minus {2, 5}; esse comando minus nos d todos os
elementos que pertence ao conjunto velho e no pertence ao conjunto {2, 5}, .
conj3:= {3,4}
2.5. Array
Array uma estrutura de dados que encontra muitas aplicaes, por exemplo em
lgebra Linear. uma maneira conveniente de definir vetores e matrizes usando listas.
Array uma extenso de uma lista. Uma lista como vimos acima um grupo de itens
onde se pode associar a cada item um nmero inteiro positivo. A estrutura de dados
array uma generalizao dessa idia. Cada elemento estar associado a um ndice,
mais no necessariamente restritos a uma dimenso. Alm disso, esses ndices podero
ser zero, ou nmeros inteiros negativos. Vejamos alguns exemplos:
>array1:=array(1..3);
array1 := array(1 .. 3,[])
19
Ao realizar essa operao o Maple cria uma lista (como se fosse um vetor) de nome
array1, de trs coordenadas (devido a variao 1..3) cujos valores ainda no esto
definidos,
>array1[1];
array11
isso significa que o primeiro elemento do array1 ainda no est definido. Podemos
proceder da seguinte forma para definir os elementos de array1:
>print(array1);
[1, 2, 3]
>array1:=array(1..3,[1,2,3]);
array1 := [1, 2, 3]
Como foi dito acima a estrutura de dados array no necessariamente est restrita a uma
dimenso apenas. Podemos usar array para construir por exemplo matrizes. Vamos
utilizar o ltimo procedimento acima.
>array2:=array(1..3,1..3,[[1,2,3],[4,5,6],[7,8,9]]);
1 2 3
array2 := 4 5 6
7 8 9
note que os parmetros 1..3, 1..3 significam que o array2 ter dois ndices cada qual
variando de 1 at 3, da o motivo do resultado ser uma matriz 3 3. Os colchetes
representam as entradas da matriz, portanto devese tomar um certo cuidado na hora de
definilos. Podese usar esse procedimento para construir outros tipos de matrizes no
necessariamente numricas.
>array3:=array(1..2,1..3,[[feijo,arroz,carne],[1.4,1.0,6.
3]]);
feijo arroz carne
array3:=
1.4 1.0 6.3
para selecionar algum elemento da matriz, basta usar a notao matriz[i, j].
>array3[1,2]; array3[2,2];
arroz
1.0
20
Suponha que quisssemos colocar em sequncia os elementos da primeira linha, ento
podemos proceder da seguinte forma:
>seq(array3[1,i],i=1..3);
feijo, arroz, carne
da mesma forma os elementos da segunda linha,
>seq(array3[2,i],i=1..3);
1.4, 1.0, 6.3
Podese construir arrays mais gerais que no sejam matrizes, por exemplo:
>array4:=array(1..2,1..2,1..2,[[[1,2],[3,4]],[[5,6],[7,8]]
]);
array4 := array(1 .. 2, 1 .. 2, 1 .. 2,[
(1, 1, 1) = 1
(1, 1, 2) = 2
(1, 2, 1) = 3
(1, 2, 2) = 4
(2, 1, 1) = 5
(2, 1, 2) = 6
(2, 2, 1) = 7
(2, 2, 2) = 8
])
>array4[1,2,1]; array4[2,2,1];
3
7
>array5:=array(1..2,1..2,[[1,2],[3,4]]);
array6:=array(1..2,1..2,[[5,6],[7,8]]);
1 2
array5:=
3 4
5 6
array6:=
7 8
>evalm(array5&*array6); evalm(array5array6);
19 22
43 50
4 4
4 4
Obs.: para efetuar a multiplicao de matrizes devemos utilizar o caracter & antes de
*, alm disso o comando evalm faz com que o clculo seja efetuado. Para outros tipos
de operaes com matrizes devemos colocar o seguinte comando:
>with(linalg):
21
tal comando ser discutido posteriormente.
>det(array5);
2
>inverse(array6);
4 3
7 5
2 2
>evalm(array6&*%);
1 0
0 1
>charpoly(array5,x);
x2 5x 2
o comando acima calcula o polinmio caracterstico da matriz array5.
>eigenvalues(array5);
5 1 5 1
+ 33 , 33
2 2 2 2
o comando acima calcula os autovalores da matriz array5.
>equa1 := x^3+3*x^24=0;
equa1 := x 3 + 3 x 2 4 = 0 ;
>solve(equa1);
1,2,2
>equa2 := 2*x+y=0;
equa2 := 2x+y=0;
>solve(equa2, x);
(1/2)y
>solve(equa2, y);
2x
22
O comando solve resolve tambm equaes com razes complexas. A letra ( I )
representa a unidade imaginria dos nmeros complexos.
>solve(x^2+1,x);
I,I
x6 2x2 + 2x
>solve(equa3,x);
0, RootOf(_Z52_Z+2)
A expresso RootOf na resposta acima uma forma simblica de o Maple dizer que as
outras solues da equao equa3 so as razes da equao z 5 2 z + 2 .
>fsolve({equa3},x);
{x = 0}, {x = 1.364430112}
Obs.: a utilizao das chaves em torno de equa3 acima faz com que as solues sejam
expressas em termos de conjuntos.
Por questes prticas, a funo fsolve no mostra automaticamente as razes
complexas. preciso adicionar a opo complex .
>fsolve({equa3},x,complex);
{x = 0}, { x = 1.364430112}, { x = .19296060491.268917574I}, { x =
.1929606049+1.268917574I}, { x = 8751756609.3519221356I}, { x =
8751756609+.3519221356I}
23
63 125 77
sol:={x= , z= , y= }
13 39 13
>evalf(sol,13);
>eqn1:= x+2*y+3*z+4*t+5*u=41:
>eqn2 := 5*x+5*y+4*z+3*t+2*u=20:
>eqn3 := 3*y+4*z8*t+2*u=125:
>eqn4 := x+y+z+t+u=9:
>eqn5 := 8*x+4*z+3*t+2*u=11:
59 70 70 635 28 527
s2:={z=7t( )u( ), y=12t+( )u+ , x=7t( )u }
13 13 13 13 13 13
24
>g:=t>2+t^2+3*t^3+6*t^4;
g:= t2+t2+3t3+6t4
Aps a entrada das expresses das funes, elas ficam memorizadas e podem ser
chamadas a qualquer instante, bastando digitar o nome da funo e o ponto ou a varivel
que se quer calcular a funo.
Chame novamente a expresso da funo f(x), e tambm o valor de g(a) e g(2.76).
Convm observar que o comando abaixo s ser executado a contento se os comandos
acima tiverem sido executados previamente.
>f(x);
x (x2)sin(x)
>g(a);
2+a2+3a3+6a4
>g(2.76);
420.8583066
Se o leitor entrar com uma nova funo com um nome j utilizado, a primeira atribuio
do nome ser apagada da memria e s ficar disponvel a nova definio da funo.
Por exemplo, se entrarmos agora com uma nova definio para o nome "g" a anterior
ser apagada. O leitor pode verificar:
>g:=h>3*h^3;
g:=h3h3
>g(1);
3
>g(2.76);
63.073728
>g(x);
3x3
Deste modo o leitor pode definir qualquer operao aritmtica envolvendo funes j
definidas.
Para calcular a composta de f com g , isto , (f{g)(x) podese digitar exatamente a
forma utilizada tradicionalmente na matemtica:
> f(g(x));
25
12x
Exemplo:
>g:=x>x^2;
g:= x x2
>f:=x>2*x;
f:= x 2x
>g(f(x));
4x2
Agora se quisermos definir uma nova funo como sendo a composta de f com g, ento
podemos utilizar o smbolo @ que faz o papel da bolinha na composta de duas
funes.
>h:=x>(f@g)(x);
h=f@g
>h(x);
12x
O Maple, nesta verso, trabalha preferencialmente com logaritmos naturais, tanto faz
digitarmos log ou ln. Caso seja preciso o clculo em outra base, por exemplo , podese
usar o comando log[b](x) . Exemplo:
>log[3](27);
ln(27)/ln(3)
O leitor deve perceber que o Maple transforma outras bases no logartmo natural, para
ver o valor da expresso devese pedir o comando evalf na expresso anterior. O
smbolo % compreendido pelo Maple como a ltima expresso efetuada.
> evalf(%);
26
27
3.2.2 Funes definidas por partes
Em muitas situaes necessrio definirse uma funo de uma varivel com vrias
expresses algbricas diferentes, ou seja, uma funo definidas por vrias sentenas.
Neste caso, para definirse a funo utilizase o comando piecewise como nos
exemplos abaixo.
x se x < 0
Defina a funo p( x) = .
x se x 0
A sintaxe do comando piecewise a seguinte:
piecewise(cond1,f1,cond2,f2,...,condn,fn) ou ainda
piecewise(cond1,f1,cond2,f2,...,condn1,fn1,fn)
A primeira opo utilizada quando se deseja obter cada uma das expresses
exatamente em seus respectivos domnios,
>p:=x> piecewise(x<0,x,x>=0,x);
p:= x piecewise(x < 0, x, x >= 0, x)
>p(x);
x x < 0
x 0 x
A segunda descrever apenas uma componente e atribuir outra expresso ao
complementar do domnio dado:
>p:=x>piecewise(x<0,x,x);
p:= x piecewise(x < 0, x, x)
>p(x);
x x < 0
x otherwise
Se, para construir uma nova funo, for necessrio trs definies, podese utilizar do
artifcio de definir as expresses nas componentes infinitas e deixar a definio da
componente limitada como restante. Por exemplo, para entrar com a definio de
2 x x < 0
h( x) = sen( x) 0 x 2 , podemos proceder da seguinte forma
1 x > 2
> h:=x> piecewise(x<0,2*x,x>Pi/2,1,sin(x));
p:= x piecewise(x < 0, 2x, x >/2, 1, sin(x))
>h(x);
2 x x < 0
1< x
1 2
sin ( x) otherwise
Uma outra forma de montar funes com trs ou mais variaes de domnio fazer a
descrio dos segmentos limitados do domnio utilizando duas desigualdades simples
unidas com o comando and , se por exemplo for necessrio entrar com a funo,
28
2 x x<0
sen( x) 0 x < 2
g ( x) =
1 2
x<3
x + 5 x>3
devese digitar as variaes de x em [0, 2 ) e [ 2 , 3) como interseco de duas
desigualdades. O procedimento descrito no exemplo:
>g:=x>piecewise(x<0,2*x,0<=x and x<Pi/2,sin(x),Pi/2<=x and
x<3,1,3<x,x+5);
g:= x piecewise(x<0, 2x, 0 x and x < 12 , sin(x), 12 x and x < 3, 1, 3 < x,
x+5)
>g(x);
2 x x<0
sin ( x) x 0 and x 12 < 0
1 x 0 and x-3 < 0
1 2
x + 5 3< x
Existe um comando que fica associado ao comando piecewise que o convert. Ele
pode ser utilizado quando se deseja transformar a expresso de uma funo onde
aparecem mdulos, por exemplo, numa expresso piecewise .
Considere o seguinte problema: seja f ( x) =| 1 | x || a funo envolvendo mdulo,
reescrevaa como uma funo definida por sentenas. Procedemos da seguinte forma:
>f:=x>abs(1abs(x));
f:= x 1 x
>convert(f(x),piecewise);
1 x x 1
1 + x x0
1 x x 1
x 1 1< x
29
O comando simplify tambm pode ser utilizado quando se deseja efetuar operaes
entre funes que so definidas por vrias sentenas. Por exemplo, suponhamos que
quisssemos multiplicar a funo w(x) com a ltima funo g(x) definida acima.
>g(x)*w(x);
2 x x<0
sin ( x) x 0 and x 12 < 0 x x 2 4 < 0
1 x 0 and x-3 < 0 otherwise
x
2
1 2
x + 5 3< x
o Maple apenas deixa indicada de forma simblica a multiplicao. Agora para ver o
resultado da multiplicao usamos o simplify:
>simplify(g(x)*w(x));
2 x 3 x 2
2
2 x x0
sin ( x) x x 2
1
x x<2
2
x x<3
0 x=3
3 2
x + 5 x 3< x
30
>p1/p2;
7 x 4 3x 3 + 7 x 2 3x
5 x 5 + 3x 3 + x 2 2 x + 1
Normalizando (simplificando) a expresso racional acima:
>normal(%);
(7 x 3) x
5x 3 2 x + 1
O comando normal acima pode ser utilizado quando se deseja simplificar expresses
racionais envolvendo polinmios no numerador e denominador. O comando faz com
que o Maple fatore o numerador e o denominador simplificando os fatores comuns.
Portanto, determinadas expresses racionais permanecero inalteradas mediante esse
comando.
>normal((x^31)/(x^2+1));
x3 1
x2 +1
Um outro tipo de simplificao, particularmente til na resoluo de integrais, a
transformao de uma funo racional em fraes parciais.
>(x^5+1)/(x^4x^2);
x5 + 1
x4 x2
>convert(%,parfrac,x);
1 1
x+ 2
x 1 x
Vejamos agora outros comandos especficos no tratamento com polinmios. Vamos
considerar polinmios da forma a n x n + + a 2 x 2 + a1 x + a 0 . Ao entrar com um
polinmio no Maple, este fornece exatamente o polinmio como voc o digitou, ou seja,
os termos no so ordenados pelo Maple em ordem ascendente ou descendente em
relao ao grau.
>x^2+x^5+2*x^4+1+x;
x2 + x5 + 2x4 +1 + x
Para arrumar os termos em ordem decrescente podemos usar o comando sort
>sort(%);
x5 + 2x4 + x2 + x + 1
Dado um polinmio qualquer, o coeficiente dominante desse polinmio o coeficiente
do termo de mais alto grau. O Maple reconhece esse coeficiente, bem como todos os
outros
>p3:=17*x^6+11*x^420*x^3+13*x^23*x+20;
17 x6 + 11 x4 20 x3 + 13 x2 3 x + 20
>lcoeff(p3);
17
>coeffs(p3,x,potencias), potencias;
20, 3, 11, 20, 13, 17
1, x, x4, x3, x2, x6
31
Se quisermos saber o grau do polinmio p3,
>degree(p3);
6
Vejamos outros comandos no tratamento com polinmios,
>poly1:= x+x^2x^3+1x^4;
poly1:=x + x2 x3 + 1 x4
>poly2:= x*y+z*x*y+y*x^2z*y*x^2+x+z*x;
poly2:= xy + zxy + yx2 zyx2 + x + zx
>collect(poly2, x);
(y zy) x2 + (y + zy + 1 + z) x
>collect(poly2, z);
(xy yx2 + x) z + xy + yx2 + x
Existem vrias formas de se interpretar o polinmio poly2 acima. Por exemplo,
podemos interpretlo como um polinmio na varivel x, onde todas as outras letras so
consideradas constantes. Para proceder dessa forma utilizamos o comando collect
como no primeiro exemplo. Podemos fazer o mesmo em relao a z, como no segundo
exemplo.
O comando divide abaixo nos diz se a diviso dos polinmios considerados exata.
No caso afirmativo o Maple retorna a palavra true (verdadeiro) e caso contrrio retorna
false (falso).
>divide(x^3y3, xy);
true
>divide(x^3x, x5);
false
Dado um polinmio qualquer s vezes nos interessa saber o valor desse polinmio para
um determinado valor de x. Os exemplos abaixo ilustram como isso pode ser feito.
>poly3:= x^2+3*x4;
poly3:= x2 + 3x 4;
>eval(poly3, x=2);
6
>poly4:= 3*zz^2+2*z3*z+1;
poly4:= 3z z2 + 2z 3z + 1
>eval(poly4,z=sqrt(2));
2 2 1
32
>g:= x^2+x+1;
g:= x2+x+1
>q:=quo(f,g,x);
q:= x1
>r:=rem(f,g,x);
r:= 2+x
Para confirmar, fazemos gq + r e verificamos se o resultado igual a f.
>expand(g*q+r);
x3+x+1
ou ainda
>testeq(f=g*q+r);
true
o Maple retorna true indicando que a igualdade verdadeira.
Para finalizar, uma outra operao que pode ser realizada no Maple o mximo divisor
comum (greatest common divisor gcd). Dados dois polinmios f e g, um polinmio d
se diz mximo divisor comum de f e g se
i) d| f e d|g;
ii) se d 1 tal que d1 | f e d1 | g d1 | d
O clculo do mdc de dois polinmios pode ser efetuado de forma anloga ao processo
utilizado com nmeros inteiros, atravs do mtodo das divises sucessivas. O Maple
realiza esses clculos automaticamente atravs do comando gcd.
>f:= x^5+2*x^35*x^2+3;
f:= x 5 + 2 x 3 5 x 2 + 3
>g:= x^3+5x^2x+3;
g:= x3+5x2x+3
>gcd(f,g);
1
4. Grficos de Funes 2D e 3D
33
Os parmetros f e h no comando plot so obrigatrios, enquanto que os parmetros v
e ops so opcionais. Vejamos alguns exemplos:
>plot(sin(x),x=-2*Pi..2*Pi);
>plot(x^2,x=-5..5);
>f:= x->7*sin(x)+sin(7*x);
>plot(f(x),x=0..8);
Tambm, dando um clique sobre o grfico (com o boto esquerdo) aparecer uma
moldura em torno do grfico (a qual voc poder mudar o tamanho da forma que
desejar), alm disso na barra de ferramentas aparecero os cones
34
os quais tambm ocasionam mudanas no grfico.
Exemplos:
>plot(1/(1-x),x=-3..5,y=-5..5);
>plot(piecewise(x<-1,1,x<0,0,x<1,-1,x<2,1,3),x=-5..5);
(tente a opo discont=true)
>plot(1/(1-x),x=-3..5,y=-5..5,axes=framed,discont=true,
color=green, ytickmarks=7, title= `testando,testando`);
>plot(6*x^3+2*x^2-2*x+1,x=-2..2,y=-2..2);
Note que, neste ltimo exemplo, ao visualizarmos o grfico num fator de zoom maior as
partes mais curvas do grfico ficam distorcidas. Para corrigirmos esse problema
utilizamos a opo numpoint para aumentar o nmero interno de pontos que o Maple
utiliza para traar o grfico,
>plot(6*x^3+2*x^2-2*x+1,x=-2..2,y=-2..2,numpoints=500);
35
>plot([cos(t)^3,sin(t)^3,t=-Pi..Pi], color=blue, axes=
framed, title=`curva parametrizada`);
Coordenadas cartesianas a forma usual utilizada pelo Maple para especificar um ponto
no plano. Existem outras maneiras, dentre elas, o uso de coordenadas polares, (r , ) .
P(r, )
r
O Polo Eixo Polar
Em coordenadas polares, r a distncia de O at P, enquanto que o ngulo entre o
segmento OP e o eixo polar. Uma equao polar uma equao em r e . Uma
soluo de uma equao polar uma par ordenado (a, b) que conduz a igualdade
quando se substitui r por a e por b. O grfico de uma equao polar o conjunto de
todos os pontos que correspondem s solues.
Exemplos:
r = 1 ; r = 4 sen() ; r = ; r = 2 cos(3) ;
O comando que usaremos o polarplot cuja entrada bsica tem a seguinte sintaxe:
polarplot(expr( ), =a..b, ops);
onde,
expr( ) uma expresso qualquer envolvendo a varivel (no Maple a
varivel pode ser obtida digitando-se theta);
= a..b variao de ( usual neste caso indicar a variao em radianos);
ops opes grficas (ver item 1.1.1).
Exemplos:
>polarplot(1,theta=0..2*Pi);
>polarplot (theta,theta=0..20*Pi, scaling=constrained,
axes=framed);
>polarplot(4*(1-sin(theta)),theta=0..2*Pi);
>polarplot(8*sin(5*theta),theta=0..2*Pi);
>polarplot(-16*sin(2*theta),theta=0..2*Pi);
36
possvel no Maple traar diversos grficos de funes de uma s vez, ou seja, em uma
nica tela. Para isso, basta usar o comando plot colocando, no espao reservado para a
funo, uma lista de funes, ou seja,
plot([f1, f2,...,fn],h,v,ops)
Exemplos:
>plot([x,x^2,x^3,x^4,x^5],x=-10..10,y=-10..10);
Para podermos identificar qual funo corresponde ao seu grfico, podemos utilizar as
opes de cores, ordenadas de acordo com a ordem que as funes esto na lista dentro
do comando plot,
>plot([x,x^2,x^3,x^4,x^5],x=-10..10,y=-10..10, color=
[black, red,blue,yellow,green]);
>plot([x,2*x,3*x,4*x,5*x], x=-5..5,y=-5..5);
>plot([sqrt(x),- sqrt(x), sqrt(-x),- sqrt(-x)],x=-5..5); (na
visualizao do grfico parece estar faltando um pedao, tente arrumar!!).
>plot([x^2,[t^2,t^3,t=-5..5]],x=-5..5,y=-5..5);
>plot([x,-x,[sin(x),cos(x),x=0..2*Pi]],x=-2..2,y=-2..2);
>plot([[sin(x),3*cos(x),x=0..2*Pi],
[3*sin(x),cos(x),x=0..2*Pi], [sin(x)-cos(x),3*cos(x),
x=0..2*Pi], [3*sin(x), cos(x)+sin(x),x=0..2*Pi]],x=-4..4);
>g1:=plot(x^2,x=-5..5,y=-5..5):
>g2:=plot([sin(x),3*cos(x),x=0..2*Pi],x=-5..5,y=-5..5):
>g3:=polarplot(t,t=0..4*Pi,numpoints=200):
>plots[display]([g1,g2,g3]);
37
4.1.5 Animao de Grficos em Duas Dimenses
Exemplo:
>plots[animate](sin(t*x),x=-7..7,t=1..5);
Clique na figura (aparecer uma moldura em torno do grfico) e note o aparecimento
dos botes na barra de ferramentas. Para iniciar a
animao clique no boto . Os outros botes servem para visualizar a animao
quadro a quadro, mudar a orientao da animao, aumentar ou diminuir a velocidade e
colocar a animao no modo de parada automtica ou no modo contnuo.
Quando voc faz uma animao no Maple ele usualmente cria 16 molduras de grficos
(frames) e os coloca em seqncia dando a impresso de filme. Podemos aumentar a
quantidade de frames a fim de aumentar a preciso da animao. Basta colocar logo
aps a variao de t a opo frames=n, onde n indica a quantidade de frames que
sero visualizados.
Exemplos:
Nos dois ltimos exemplos colocamos a opo coords=polar para que a animao
seja feita em coordenadas polares.
38
4.2. Grficos em trs dimenses
4.2.1 Grficos de funes
Antes de ver as opes grficas de funes em trs dimenses, vamos recordar a noo
de funo de duas variveis a valores reais.
z
( x, y, f ( x, y ))
S : z = f ( x, y )
(a, b, f (a, b))
y
D
( a, b )
( x, y )
x
> plot3d(9-x^2-y^2,x=-10..10,y=-10..10);
39
Clicando sobre o grfico e segurando o boto do mouse pressionado voc poder
rotacion-lo de vrias formas possibilitando uma melhor anlise e visualizao do
grfico. Alm disso, ao clicar sobre o grfico note o aparecimento dos seguintes botes
>plot3d(5-x^2-y^2,x=-4..4,y=-4..4);
>plot3d(5-x^2-y^2,x=-4..4,y=-4..4, axes=framed,
labels=[x,y,temperatura], title= Grfico 1, view=[-4..4,-
4..4,0..6]);
>plot3d(4*(sin(x/2)+sin(y/4))+3*sin(x/2), x=0..20,y=0..70);
>plot3d(4*(sin(x/2)+sin(y/4))+3*sin(x/2),
x=0..20,y=0..70,axes=boxed, grid=[50,50],
gridstyle=triangular, linestyle=7);
>plot(x^2-y^2,x=-3..3,y=-3..3, title=A sela de cavalo);
Procedendo de forma anloga ao que foi feito no pargrafo 1.1.2 podemos definir a
noo de superfcies no espao, as quais generalizam quelas obtidas por meio da
equao z = f ( x, y ) , ou seja, podemos obter a noo de superfcie parametrizada.
Para traarmos o grfico de uma superfcie na forma paramtrica atravs do Maple,
utilizamos a seguinte sintaxe:
40
plot3d([f(t,u),g(t,u),h(t,u)],t=a..b, u=c..d, ops)
onde,
f, g, h so expresses que dependem dos parmetros t e u;
t=a..b intervalo de variao de t;
u=c..d intervalo de variao de u;
ops opes grficas citadas acima.
Exemplos:
> plot3d([x^3,y*x,5*y-x],x=-2..2,y=-2..2);
>plot3d([sin(u),cos(u)*sin(t),sin(t)], t=-Pi..Pi,u=-
Pi..Pi);
>plot3d([t*sin(t)*cos(u),t*cos(t)*cos(u),t*sin(u)],t=0..2*P
i, u=0..Pi);
>plot3d([t*sin(t)*cos(u),t*cos(t)*cos(u),t*sin(u)],t=0..2*P
i, u=0..Pi,grid=[50,40], view=[-5 ..5,-6..6,1..3]);
No caso tridimensional tambm possvel traar vrios grficos de uma s vez. S que
neste caso usamos chaves ao invs de colchetes para a lista das expresses.
Exemplos:
>plot3d({x^2+(y^2),x+y},x=-5..5,y=-5..5);
>plot3d({x^2+1/(y^2),cos(x+y)},x=-5..5,y=-5..5,view=[-
5..5,-5..5,-5..20],grid=[50,50]); (note neste exemplo a necessidade da
opo view=[-5..5,-5..5,-5..20]).
41
>c1:=[t*cos(2*Pi*t),t*sin(2*Pi*t),2+t]:
>c2:=[ 2+t, t*cos(2*Pi*t), t*sin(2*Pi*t)]:
>c3:=[ t*cos(2*Pi*t), 2+t, t*sin(2*Pi*t)]:
>spacecurve({c1,c2,c3},x=-8..12,y=-10..12,axes=boxed,
numpoints=400);
Obs.: atribumos os nomes c1, c2 e c3 cada uma das curvas presentes no grfico
apenas por convenincia, ou ento, para possibilitar melhor visualizao e evitar erros
na digitao da expresses.
Uma outra forma de se obter vrios grficos de uma vez utilizar o comando
display. Da mesma forma este tambm um comando que consta no package plots,
no entanto, uma vez que j o carregamos para usar o comando spacecurve no
precisamos faze-lo novamente, pois o mesmo fica na memria do computador at que a
seo do Maple em que se est trabalhando seja finalizada. Em seguida nomeamos cada
um dos grficos que queremos obter e executamos o comando display. Vejamos todo
esse procedimento no exemplo,
>g1:= plot3d(x^2-y^2,x=-5..5,y=-5..5):
>g2:=plot3d([sin(x),cos(x),y],x=0..2*Pi,y=-20..20):
>display([g1,g2]);
5. Tpicos de Clculo
5.1. Limites
5.1.1 Limites de funes de uma varivel
42
Quando executamos o comando acima o Maple automaticamente retorna o resultado (se
o clculo possvel). Se o comando limit for colocado em letra maiscula, ou seja,
Limit ento o Maple retornar a expresso simblica de limites utilizada usualmente
sem calcul-la.
Exemplos:
>Limit(x+1,x=1);
>limit(x+1,x=1);
>Limit((x^2-1)/(x-1),x=1);
>limit((x^2-1)/(x-1),x=1);
>limit((x^2+x)/(x+3),x=2);
>Limit((x^3-5*x^2+8*x+4)/(x^4-5*x-6),x=2); limit((x^3-
5*x^2+8*x+4)/(x^4-5*x-6),x=2);
Note que neste ltimo exemplo a resposta foi undefined significando que neste caso o
limite no existe (pode-se visualizar isso graficamente).
>f:= x -> (x^(1/3)-2^(1/3))/(x-2);
>Limit(f(x),x=2); limit(f(x),x=2);
>g:= x -> (x^(1/n)-a^(1/n))/(x-a);
>Limit(g(x),x=a); limit(g(x),x=a);
Nesse ltimo exemplo, pode-se perceber que em determinados casos o Maple tambm
calcula o limite mesmo se a funo contiver certos parmetros indefinidos.
43
Ao se tratar de funes de duas variveis ou mais, podemos definir de forma anloga ao
caso de uma varivel a noo de limites. No caso de funes de duas variveis, por
exemplo, consideraremos o limite de f ( x, y ) quando ( x, y ) tende a um determinado
ponto (a, b) o que corresponde a dizer que x a e y b . A sintaxe para se calcular
limites deste tipo no caso geral dada por,
limit(f(x1, x2,...,xn), {x1=a1,x2=a2,...,xn=an})
onde,
f(x1, x2,...,xn) funo de n variveis;
{x1=a1,x2=a2,...,xn=an} conjunto contendo os valores para o qual cada varivel
se aproxima.
5.2. Derivadas
5.2.1 Derivadas de funes de uma varivel
Quando estamos lidando com funes de uma varivel podemos calcular suas derivadas
atravs do Maple. A sintaxe bsica para o clculo da derivada de uma funo f a
seguinte:
diff(f(x),x)
onde,
f(x) funo ou expresso que se deseja obter a derivada;
x varivel em relao a qual se deseja obter a derivada.
De forma anloga ao que ocorre com o comando de limite se colocarmos o
comando diff iniciando com letra maiscula teremos a derivada na forma simblica, ou
seja, o clculo no efetuado.
Exemplos:
>Diff(x^5-2*x^3+3*x,x); diff(x^5-2*x^3+3*x,x);
>Diff(1/x+1/x^2+1/x^3+1/x^4,x);
diff(1/x+1/x^2+1/x^3+1/x^4,x);
>Diff(x^(sin(3*x)),x); diff((x^(sin(3*x)),x);
>Diff((1+1/x)^x,x); diff((1+1/x)^x,x);
>Diff(tan(x)-cot(x),x); diff(tan(x)-cot(x),x);
>Diff(exp(x^2)+ln(1/x)+sqrt(2*x-x^2),x);
diff(exp(x^2)+ln(1/x)+sqrt(2*x-x^2),x);
>Diff((a+cos(x+b)-ln(a*x))^2,x); diff((a+cos(x+b)-
ln(a*x))^2,x);
44
Neste ltimo exemplo, podemos perceber a necessidade de se indicar a varivel de
derivao, pois nesse caso a e b so considerados como constantes, e ento o clculo
efetuado perfeitamente pelo Maple.
Seja f uma funo derivvel em um certo conjunto I IR, ento podemos definir uma
nova funo f : I IR dada por x f (x) , denominada funo derivada, ou
simplesmente derivada de f. Com isso, a derivada de f denominada derivada de 2
ordem de f e indicada por f ou f ( 2) . De modo anlogo, define-se as derivadas de
ordem superior a 2 de f.
No Maple se quisermos calcular as derivadas f , f , , f (n ) , podemos utilizar a
seguinte sintaxe:
diff(f(x),x,x,...,x)
n vezes
ou ainda
diff(f(x),x$n)
onde $n significa que a varivel x dever ser repetida n vezes.
Exemplos:
>Diff(3*x^3,x,x); diff(3*x^3,x,x);
>diff(1/x,x$4);
>diff(sin(x),x,x,x);
>diff(cos(x),x$3);
>diff(sqrt(x),x$4);
interessante observar que dependendo da funo, a n-sima derivada pode ser obtida
de forma dedutiva. Essa deduo pode ser feita com o auxlio do prprio Maple,
vejamos alguns exemplos:
suponha que queiramos calcular f (n ) onde f ( x) = 1x . Para deduzirmos a frmula
podemos colocar algumas derivadas em seqncia para que possamos deduzir a lei de
formao,para isso podemos utilizar um comando j visto, a saber o seq:
> seq(diff(1/x,x$i),i=1..5);
1 1 1 1 1
2 , 2 3 , 6 4 , 24 5 , 120 6
x x x x x
visualizando desta forma, ou seja, as derivadas todas em seqncia no difcil ver que:
1
f ( n ) = (1) n n! n+1
x
(n )
suponha que queiramos calcular f onde f ( x) = x . Para deduzirmos a frmula
podemos colocar algumas derivadas em sequncia juntamente com a ordem
correspondente, de forma anloga ao caso anterior utilizando o comando seq:
>seq([diff(sqrt(x),x$i),n=i],i=1..10);
45
[1 1
2 x
]
, n = 1 , 14
1
x
3
2
, n = 2, 83
x
1
5
2
15
, n = 3, 16
x
1
7
2
, n = 4, 105
32
1
x
9
2
, n = 5,
945 1 10395 1
64 x112 , n = 6, 128 x132 , n = 7
visualizando dessa forma no difcil deduzir a lei de formao geral da derivada n-
sima de f ( x) = x :
n 1
(2i 1) 1
( n) n 1 i =1
f = (1) 2 n 1
2n x 2
Outra situao onde se pode usar os recursos do Maple j vistos em relao aos
grficos, ou seja, podemos traar os grficos de uma funo e suas derivadas
simultaneamente. Por exemplo,
>f:= x-> 1/20*x^5+x^3-2*x^2-3*x+4;
f e suas derivadas (at ordem 5) podem ser colocadas em seqncia:
>f(x),seq(diff(f(x),x$i),i=1..5);
em seguida podemos traar os grficos:
>plot([f(x),seq(diff(f(x),x$i),i=1..5)], x=-10..10,y=-
20..20, color=[red, blue, black, green, yellow,
pink],numpoints=100);
as opes de cores no comando plot acima so colocadas para se identificar qual o
grfico que corresponde a cada funo e a opo numpoints, para aumentar a resoluo.
Seja f uma funo de duas ou mais variveis, podemos ento calcular as derivadas
parciais de f em relao s suas variveis. A sintaxe para o clculo das derivadas
parciais de f semelhante ao usado para funes de uma varivel:
diff(f(x1, x2,..., xn), var)
onde,
f(x1, x2,..., xn) funo ou expresso em n variveis;
var varivel(is) para (as) qual(is) se deseja calcular a(s) derivada(s) parcial(is).
Exemplo:
>f:= (x,y) -> (x^2+y^2)/(x+y);
>diff(f(x,y),x); (derivada parcial de f com relao a x)
>diff(f(x,y),y); (derivada parcial de f com relao a y)
>diff(f(x,y),x,y); (derivada parcial de f primeiro com relao a x e depois
com relao a y)
>diff(f(x,y),y,x); (derivada parcial de f primeiro com relao a y e depois
com relao a x)
46
>Diff(ln(sqrt((t+v)/(t-v))),t,t,v,v);
diff(ln(sqrt((t+v)/(t-v))),t,t,v,v);
5.3. Integrais
Dada uma funo f de uma de uma varivel podemos utilizar o Maple para o clculo da
integral de f. Os comandos para o clculo da integral indefinida e definida so dados
respectivamente por:
int(f(x),x) e int(f(x),x=a..b)
onde,
f(x) funo ou expresso a ser integrada;
x varivel de integrao;
x=a..b limites de integrao(no caso de integrais definidas).
Nos comando acima, se o Maple encontra uma soluo para a integral ele
automaticamente retorna a soluo. Caso no seja possvel encontrar a soluo o Maple
retorna a prpria expresso digitada na forma simblica. Alis, para se obter a integral
na forma simblica usual da matemtica basta colocar os comandos com a letra inicial
em maiscula(tanto no caso de integral definida quanto indefinida).
Exemplos:
>Int(x^n,x)= int(x^n,x);
>Int(exp(n*x),x)=int(exp(n*x),x);
>Int(1/x,x)=int(1/x,x);
>Int(sqrt(a^2+u^2),u)= int(sqrt(a^2+u^2),u);
>Int(x^2/((a+b*x)^2),x)= int(x^2/((a+b*x)^2),x);
>Int(u^6*cos(u),u)= int(u^6*cos(u),u);
Sabe-se que a rea sob o grfico de uma funo f contnua em um intervalo [a, b]
b
definida como a | f ( x) | dx , podemos combinar o clculo da integral com o respectivo
esboo do grfico da funo integrada no intervalo [a, b] (mais a ttulo de visualizao).
Vejamos alguns exemplos:
rea da regio
sob o grfico de f
47
>Int(1/2+1/2*cos(2*x),x=0..Pi/2)=
int(1/2+1/2*cos(2*x),x=0..Pi/2);
>plot(1/2+1/2*cos(2*x),x=0..Pi/2);
>Int(1/3*exp(3*x)+sin(3*x),x=-1..0)=
int(1/3*exp(3*x)+sin(3*x),x=-1..0);
> plot(1/3*exp(3*x)+sin(3*x),x=-1..0);
Obs.: o preenchimento na cor cinza nos grficos acima, no foi gerado pelo Maple, no
entanto a regio perfeitamente deduzida quando traamos o grfico no Maple.
Como foi dito acima quando o Maple no encontra a forma exata da soluo de uma
integral ele retorna a prpria integral.
>Int(1/x,x=-1..1)= int(1/x,x=-1..1);
>Int(x^ln(x),x):=int(x^ln(x),x);
>Int(Int(x*cos(y)-y*cos(x),y),x)= int(int(x*cos(y)-
y*cos(x),y),x);
>Int(Int(12*x*y^2-8*x^3,x=0..2),y=-1..1)= int(int(12*x*y^2-
8*x^3,x=0..2),y=-1..1);
>Int(Int(Int(ln(x*y*z),x),y),z)=
int(int(int(ln(x*y*z),x),y),z);
No caso da integral mltipla definida, as regies de integrao podem ser mais gerais ou
seja, no necessariamente precisam ser intervalos numricos. Por exemplo:
>Int(Int(x^3+4*y,y=x^2..2*x),x=0..2)=
int(int(x^3+4*y,y=x^2..2*x),x=0..2);
48
>Int(Int(2*y*cos(x),x=Pi/6..y^2),y=1..3)=
int(int(2*y*cos(x),x=Pi/6..y^2),y=1..3);
>Int(Int(x^2+4*y^2,y=x^2..-x^2+8),x=0..2)=
int(int(x^2+4*y^2,y=x^2..-x^2+8),x=0..2);
49
6. Tpicos de Programao
6.1. Fundamentos
O Maple possui uma poderosa capacidade de programao matemtica. Um
procedimento (ou programa) no Maple essencialmente um conjunto de comandos (do
prprio Maple ou comandos usuais de programao) organizados em uma certa
estrutura lgica que so executados pelo Maple, dependendo das necessidades do
usurio. Os procedimentos implementados no Maple podem fazer uso de todos os
comandos internos (incluindo os dos packages), ou seja, voc pode construir seus
procedimentos utilizando todas as estruturas e funes do Maple.
Todo procedimento no Maple tem basicamente a seguinte configurao:
nome:= proc(...)
local x1, x2,...,xn;
global x1, x2,...,xn;
.....................
.....................
end;
ou seja, todo procedimento deve iniciar com o comando proc(...) e finalizar com o
comando end; (ou :). As reticncias nos parnteses representam as entradas de dados
os quais denominaremos de parmetros (no necessariamente precisam ser
especificados, ou seja, os parnteses podem ficar em branco). Para que se possa utilizar
um procedimento conveniente dar-lhe um nome, e isso feito utilizando a maneira
usual de atribuio de nomes no Maple.
Vejamos um exemplo,
>metade:= proc(x);
>evalf(x/2);
>end;
Esse Procedimento pega um valor de x e calcula o valor aproximado desse nmero
dividido por 2. Para executar esse procedimento basta utiliz-lo como um comando
qualquer do Maple,
>metade(1/2);
>metade (10);
>metade(sqrt(3));
Outro exemplo:
>val_e:=proc()
>a:=exp(1);
>evalf(a);
>end;
O procedimentos val_e d uma aproximao, em decimais, do nmero e,
>val_e();
Note que nesse procedimento nenhuma entrada de dados necessria.
Obs.: Dentro de um procedimento, comandos isolados devem terminar com ponto e
vrgula.
50
Quando definimos o procedimento val_e acima, note que o Maple exibe um aviso
Warning, `a` is implicitly declared local. Esse aviso refere-se ao fato de
termos usado uma varivel dentro do procedimento (no caso a varivel a). H dois tipos
de variveis que podem ser definidas no Maple, varivel local e varivel global.
Basicamente, variveis locais so aquelas que voc define dentro de um procedimento e
cujo valor usado pelo Maple apenas dentro deste procedimento, enquanto que
variveis globais so aquelas que so atribudas dentro de um procedimento e que
passam a ter esse valor atribudo mesmo fora do procedimento. Logo no incio de um
procedimento podemos definir quais variveis so locais e/ou quais so globais, basta
colocar na linha seguinte ao comando proc a opo local nome das variveis
locais e/ou global nome das variveis globais, conforme o modelo geral de um
procedimento visto acima. Quando no fazemos essa especificao o Maple decide
internamente o tipo das variveis e exibe um aviso (como ocorreu no procedimento
val_e acima).
Vejamos um exemplo, que ilustra a diferena entre os tipos de variveis:
>b:=2;
>val_e:=proc()
>local b;
>b:=exp(1);
>evalf(b);
>end;
Note que dentro do procedimento b foi definido como varivel local e lhe foi atribudo o
valor exp(1), no entanto ao usarmos novamente o valor b fora do procedimento este
permanece com o mesmo valor
>val_e();
>b;
Vejamos agora a diferena se fizermos,
>b:=2;
>val_e:=proc()
>global b;
>b:=exp(1);
>evalf(b);
>end;
Note que dentro do procedimento b foi definido como varivel global e lhe foi atribudo
o valor exp(1), com isso, ao usarmos novamente o valor b fora do procedimento este
j est com valor alterado
>val_e();
>b;
51
procedimento. Tais estruturas so fundamentais em qualquer linguagem de programao
e permitem uma infinidade de possibilidades em termos de programas que podem ser
implementados. Discutiremos a seguir algumas dessas estruturas de programao.
Na estrutura deste comando algumas das clusulas em vermelho so opcionais. Se, por
exemplo, omitirmos o from ou o by eles sero automaticamente considerados como 1
pelo Maple. Necessariamente todo loop deve terminar com a clusula od.
Vejamos alguns exemplos:
Problema: calcular a soma dos 100 primeiros nmeros naturais.
Vejamos como resolver esse problema usando o loop.
>a:=0
>for i from 1 to 100 do
>a:=a+i;
>od;
52
>soma(100);
>soma(20);
6.2.2 O Comando if
A sintaxe geral para essa estrutura de programao no Maple, conhecida como
condicional, a seguinte:
if p then q else m fi;
onde,
p expresso condicional;
q e m seqncia de comandos.
O comando acima deve necessariamente terminar com a clusula fi. A expresso
condicional p qualquer expresso que admita o valor verdadeiro ou falso conhecida
como expresso booleana, que contenha operadores de relao (tais como <, <=, >=, =,
<>), operaes lgicas (and, not, or) e valores (true, false).
Vejamos um problema que pode ser resolvido atravs de um procedimento utilizando o
comando acima.
Problema: implementar um procedimento que calcule o valor absoluto de um nmero
real.
>modulo:=proc(x)
> if x>=0 then
> x;
> else
> -x;
> fi;
>end;
>modulo(-3);
>modulo(-3/2);
53
Podemos encurtar o procedimento f acima utilizando uma abreviao dos comandos
else e if, quando esses aparecem seguidamente, a saber o comando elif. Isso til
pois elimina a necessidade de se finalizar cada um dos comandos if com o fi.
Vejamos:
>f2:=proc(x)
> if x<=0 then 0
> elif x<=1 then x
> elif x<=2 then 2-x
> else 0
> fi;
>end;
O Maple l a condio e enquanto ela for verdadeira ele executa os comandos. Vejamos
um exemplo.
Problema: fazer um procedimento que divida sucessivamente um nmero inteiro n por
2 (deixando resto zero) e exiba quantas divises foram possveis.
Para fazer esse procedimento usaremos os comandos iquo(a,b) e irem(a,b) que
calculam o quociente e o resto, respectivamente, na diviso de a por b.
>ndiv2:=proc(n)
>local q, i;
>q:=n; i:=0
>if irem(q,2)<>0 then i else
> while irem(q,2)=0 do
> q:=iquo(q,2);
> i:=i+1;
> od;
>fi;
>end;
54
6.3. Controle de Parmetros
Como j foi mencionado os procedimentos exemplificados at agora so todos
numricos, com isso se ou usurio colocar uma letra ou smbolo na hora de executar o
procedimento obter um erro ou um resultado incorreto. Por exemplo:
>ndiv2:=proc(x);
0
o que no a resposta correta pois o valor de x no conhecido.
Uma forma de contornar esse tipo de problema e avisar ao usurio o tipo correto de
entrada que o procedimento aceita, definir logo no incio com que parmetro o
procedimento trabalhar. Para isso, dentro do comando proc colocamos a opo ::
... logo aps o parmetro, onde no lugar das reticncias deve-se colocar a opo
desejada. Para uma lista dos tipos disponveis digite ?type; no prompt do Maple.
Por exemplo, poderamos reescrever o procedimento ndiv2 da seguinte forma:
>ndiv2:=proc(n::integer)
>local q, i;
>q:=n; i:=0
>if irem(q,2)<>0 then i else
> while irem(q,2)=0 do
> q:=iquo(q,2);
> i:=i+1;
> od;
>fi;
>end;
55
Note que para o calculo de f 4 precisamos dos valores de f1 e f 2 , os quais so obtidos
tambm de modo recursivo conhecendo-se os valores de f1 e f 0 . Objetivaremos
construir um procedimento que calcule f n para todo natural n 2 .
>Fibonacci:=proc(n::nonnegint)
> if n<2 then n
> else
> Fibonacci(n-1)+Fibonacci(n-2)
> fi;
>end;
>Fibonacci(15), Fibonacci(16);
Obs.: A forma com que o procedimento Fibonacci foi construdo, ilustra o fato de que
podemos utilizar dentro de um procedimento o prprio procedimento que
estamos construindo.
Note que, quando o valor de n grande o tempo de clculo aumenta muito.
Vejamos o porqu isso ocorre. Por exemplo, tomamos n = 4 . Internamente o
procedimento far os seguintes clculos:
Fibonacci(4)
Fibonacci(3) Fibonacci(2)
Fibonacci(1) Fibonacci(0)
56
6.4.2 Procedimento com Listas
Os procedimentos vistos at agora trabalham apenas com nmeros ou frmulas, no
entanto, s vezes aparecem situaes na qual temos que trabalhar com uma estrutura de
dados, como listas por exemplo. Nesse caso, para o desenvolvimento de procedimentos
que tm como entrada certas estruturas de dados, so necessrios os principais
comandos que se referem seqncias, listas e conjuntos. Como exemplo,
consideremos o seguinte problema: escrever um procedimento no qual dados os
nmeros x1 , x 2 ,, x n , (n > 0) calcule sua mdia aritmtica simples, dada por:
1 n
= xi
n i =1
Antes de escrevermos o procedimento vejamos os principais elementos que sero
necessrios. Primeiramente os nmeros x1 , x 2 ,, x n podem ser colocados em uma lista,
por exemplo, se quisermos calcular a mdia aritmtica de 1.3, 1, 2, 2.5, 5.4, podemos
colocar esses dados em uma lista, X := [1.3,1, 2, 2.5, 5.4] . A partir da para efetuar o
clculo precisaremos:
do nmero de elementos da lista, o qual pode se obtido atravs do comando
nops(X)
a soma dos elementos, que no caso de listas pode ser efetuada pelo comando
add(i,i=X).
Para a construo do procedimentos temos que sistematizar esses elementos.
>media:=proc(x::list)
>local n, i, soma;
>n:= nops(x);
>soma:=add(i,i=x);
>soma/n;
>end;
>media([1.3,1,2,2.5,5.4]);
Neste procedimento um erro pode ocorrer caso venhamos a colocar uma lista vazia,
media([]). Para tornar um procedimento mais expressivo no tratamento de erros
podemos utilizar o comando ERROR para especificar exatamente qual o tipo de erro
que ocorreu. Vejamos:
>media2:=proc(x::list)
>local i,n,soma;
>n:=nops(x)
>if n=0 then
>ERROR(a lista no possui nenhum elemento);
>soma:=add(i,i=x);
>soma/n;
>end;
Note que essa mesma tcnica de exibir erros tambm pode ser usada para substituirmos
a mensagem de erro que exibida pelo Maple caso x no seja uma lista, por uma
mensagem nossa. Dessa forma no precisaramos colocar a opo ::list no comando
proc.
>media2:=proc(x)
57
>if not type(x,list) then
>ERROR(a entrada deve ser uma lista);
>local i,n,soma;
>n:=nops(x)
>if n=0 then
>ERROR(a lista no possui nenhum elemento);
>soma:=add(i,i=x);
>soma/n;
>end;
58
Note que um erro ocorre, pois dentro do procedimento o f lido pelo Maple como uma
constante e no uma funo. Podemos arrumar o procedimento para evitar esse tipo de
erro.
>Newton2:=proc(f::{procedure,algebraic},y,n)
>local x0,interac;
>x0:=y;
>if type(f,procedure) then
> interac:=(x->x)-eval(f)/D(eval(f));
> else
> interac:=unapply(x-f/diff(f,x),x);
>fi;
> to n do
> print(x0);
> x0:=evalf(interac(x0)) od;
> end:
Finalizamos ento essa seo colocando que os aspectos acima so iniciais e bsicos,
aspectos mais gerais e tcnicos podem ser consultados nas bibliografias que tratam do
assunto. Por outro lado, a exposio acima suficiente para muitos propsitos e a
aplicao ou no destes conceitos depender das necessidades de cada um.
7. Bibliografia
59