85
O O O O O O (2.1.1) (2.1.1) Aplicações de Maple em Cálculo e Álgebra Linear Fernando Deeke Sasse [email protected] Departamento de Matemática, UDESC - Joinville 1 Introdução O Maple foi criado nos anos 80 pelos matemáticos Keith Geddes e Gaston Gonnet, na Universidade Waterloo e é considerado uma plataforma de computação algébrica genérica com sólida base matemática. Computação algébrica é o mesmo que computação simbólica, ou seja, computação envolvendo a manipulação de símbolos. A computação numérica também pode ser realizada pelo Maple, embora de forma mais lenta do que programas tradicionais, como Fortran e C. A integração numérica/simbólica e a excelência da sua linguagem de programação, fazem com que o Maple sirva muito bem como uma ferramenta de criação de protótipos de programas. Há vários anos o Maple vem sendo desenvolvido em várias partes do mundo, graças ao fato dele ser construído sobre sua própria linguagem, não compilada. Somente um pequeno núcleo básico é compilado, por razões de velocidade. 2 Gráficos Esta seção foi baseada em parte nas worksheets de Peter Stone , School of Life and Physical Sciences, RMIT. 2.1 plot,implicitplot,with(plots),display,seq O comando do Maple plot pode ser utilizado para traçar gráficos. Sua versatilidade reside no fato de que ele pode lidar com várias formas de parâmetros de entrada. Os seguintes comandos fazem o gráfico da função y = x 4 K4 x 3 C3 de x = K 2 a x = 2. O intervalos que a variável x pode assumir é especificada na forma mostrada, utilizando dois pontos .. e constitui uma estrutura de dados do Maple denominada range. Inicialmente definimos a expressão: restart: y:=x^4-4*x^3+3; y := x 4 K4 x 3 C3 plot(y,x=-2..2);

Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

  • Upload
    nanah42

  • View
    93

  • Download
    22

Embed Size (px)

DESCRIPTION

Gráficos, funções, solução de equações algébricas, simplificação de expressões, limites, somatórios, produtórios, diferenciação, integração, expansão em séries, cálculo vetorial, matrizes, etc.

Citation preview

Page 1: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

OOOO OOOO

(2.1.1)(2.1.1)

AAAApppplllliiiiccccaaaaççççõõõõeeeessss ddddeeee MMMMaaaapppplllleeee eeeemmmm CCCCáááállllccccuuuulllloooo eeee ÁÁÁÁllllggggeeeebbbbrrrraaaa LLLLiiiinnnneeeeaaaarrrr

Fernando Deeke Sasse [email protected]

Departamento de Matemática, UDESC - Joinville

1 Introdução O Maple foi criado nos anos 80 pelos matemáticos Keith Geddes e Gaston Gonnet, na Universidade Waterloo e é considerado uma plataforma de computação algébrica genérica com sólida base matemática. Computação algébrica é o mesmo que computação simbólica, ou seja, computação envolvendo a manipulação de símbolos. A computação numérica também pode ser realizada pelo Maple, embora de forma mais lenta do que programas tradicionais, como Fortran e C. A integração numérica/simbólica e a excelência da sua linguagem de programação, fazem com que o Maple sirva muito bem como uma ferramenta de criação de protótipos de programas. Há vários anos o Maple vem sendo desenvolvido em várias partes do mundo, graças ao fato dele ser construído sobre sua própria linguagem, não compilada. Somente um pequeno núcleo básico é compilado, por razões de velocidade.

2 Gráficos Esta seção foi baseada em parte nas worksheets de Peter Stone, School of Life and Physical Sciences, RMIT.

2.1 plot,implicitplot,with(plots),display,seq

O comando do Maple plot pode ser utilizado para traçar gráficos. Sua versatilidade reside no fato de que ele pode lidar com várias formas de parâmetros de entrada. Os seguintes comandos fazem o gráfico da função y = x

4K4 x3

C3 de x = K2 a x = 2. O intervalos que a variável x pode assumir é especificada na forma mostrada, utilizando dois pontos .. e constitui uma estrutura de dados do Maple denominada range. Inicialmente definimos a expressão:

restart:

y:=x^4-4*x^3+3;

y := x4K4 x3

C3

plot(y,x=-2..2);

Page 2: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

xK2 K1 0 1 2

K10

10

20

30

40

50

Para rotular também o eixo vertical com um y, digitamos:

plot(y,x=-2..2,'y');

x

K2 K1 0 1 2

y

K10

10

20

30

40

50

Podemos restringir ou estender o gráfico na direção vertical digitando o intervalo de valores para y :

plot(y,x=-2..2,'y'=-10..10);

Page 3: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

xK2 K1 0 1 2

y

K10

K5

5

10

Podemos escolher a cor do gráfico adicionando uma opção do tipo color=??.ou colour=??.

plot(y,x=-2..2,'y',colour=magenta);

xK2 K1 0 1 2

y

K10

10

20

30

40

50

As escolhas para a opção colour são: aquamarine, black, blue, coral, cyan, brown, gold, green, grey, khaki, magenta, maroon, navy, orange, pink, plum, red, sienna, tan, turquoise,

Page 4: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

violet, wheat, white, yellow.

Podemos escolher a cor definindo-a em termos de componentes de vermelho, verde e azul (RGB).

plot(y,x=-4..4,color=COLOR(RGB,.7,0,0.8));

xK4 K3 K2 K1 0 1 2 3 4

100

200

300

400

500

Podemos dar nome à cor:

purpura := COLOR(RGB,.7,0,1);

plot(x^2,x=-4..4,color=purpura);

purpura := COLOR RGB, 0.7, 0, 1

x

K4 K3 K2 K1 0 1 2 3 4

2

4

6

8

10

12

14

16

Alternativamente é possível usar uma macro.

Page 5: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

(2.1.2)(2.1.2)

macro(darkgreen=COLOR(RGB,0,0.6,0));

plot(x^2,x=-4..4,color=darkgreen);

darkgreen

x

K4 K3 K2 K1 0 1 2 3 4

2

4

6

8

10

12

14

16

Gráficos simultâneos podem ser construídos definindo uma lista de expressões, cujos gráficos queremos traçar:

[x^2,x+1];

x2, xC1

plot([x^2,x+1],x=-2..2,'y');

xK2 K1 0 1 2

y

K1

1

2

3

4

Podemos escolher as cores dos gráficos definindo a respectiva lista de cores: .

plot([x^2,x+1],x=-2..2,'y',color=[blue,green]);

Page 6: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

xK2 K1 0 1 2

y

K1

1

2

3

4

Note que usamos aspas simples para retardar a avaliação de y, que já tem um valor atribuído. O seguinte exemplo mostra um tipo de erro devido ao fato da variável já ter um valor atribuído:

x := 5;

plot(2*x-x^2,x=-1..3);

x := 5

Error, (in plot) unexpected option: 5 = -1 .. 3

Este problema pode ser resolvido removendo a atribuição de x:

x := 'x':

plot(2*x-x^2,x=-1..3);

xK1 0 1 2 3

K3

K2

K1

1

Podemos atribuir nomes aos gráficos, para depois exibi-los. Antes disso devemos carregar a bibliteca plots:

with(plots):

g1:=plot(sin(x)^2,x=-Pi..Pi,color=blue):

g2:=plot(sin(x^2),x=-Pi..Pi):

Page 7: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

OOOO OOOO

display([g2,g1]);

x

K3 K2 K1 1 2 3

K0.8

K0.6

K0.4

K0.2

0.2

0.4

0.6

0.8

1

Os gráficos são desenhados com a espessura de um pixel, a menos que uma espessura maior que 1seja especificada com a opção "thickness" .

plot(2*x-x^2,x=-1..3,thickness=2);

x

K1 0 1 2 3

K3

K2

K1

1

Para plotar funções parametrizadas o procedimento é o seguinte:

plot([t*cos(2*Pi*t), t*sin(2*Pi*t), t=0..4], scaling=

constrained, axes=box);

Page 8: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

K3 K2 K1 0 1 2 3 4

K3

K2

K1

0

1

2

3

Gráficos de funções definidas implicitamente podem ser traçados com o comandoimplicitplot:

implicitplot(sin(x*y)+y=2,x=-6..6,y=0..4);

x1 1.5 2 2.5 3 3.5

x4K4 x3C3

0

1

2

3

4

implicitplot(sin(x*y)+y=2,x=-6..6,y=0..4,numpoints=10000);

Page 9: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

(2.1.3)(2.1.3)OOOO OOOO

x1 1.5 2 2.5 3 3.5

x4K4 x3C3

0

1

2

3

4

As coordenadas de um ponto podem ser representadas em Maple por meio de uma lista com dois números. Por exemplo, o ponto (1,2) é escrito como [1,2].

Definimos a seguir a lista de pontos dados por K2, 2 , K1, K2 , 1, 2 , 2, 3 .

mypoints := [[-2,2],[-1,-2],[1,2],[2,3]];

mypoints := K2, 2 , K1, K2 , 1, 2 , 2, 3

Podemos plotar estes pontos em gráfico usando plot.

plot(mypoints,style=point);

Page 10: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

K2 K1 0 1 2

K2

K1

1

2

3

As escolhas das cores são as mesmas que foram definidas para plotar gráficos. Os símbolos podem ser escolhidos como box, cross, circle, point, e diamond.Você pode também digiter estes tipos de pontos em maiúsculas, BOX,CROSS,CIRCLE,POINT,DIAMOND, mas não misture maiúsculas e minúsculas.

plot(mypoints,style=point,colour=blue,symbol=circle);

K2 K1 0 1 2

K2

K1

1

2

3

Mais informações sobre as opções para o procedimento plot podem ser obtidas na página helpassociada. .

Page 11: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

• •

• •

OOOO OOOO

OOOO OOOO

(2.1.6)(2.1.6)

OOOO OOOO

• •

OOOO OOOO

OOOO OOOO

(2.1.5)(2.1.5)

(2.1.4)(2.1.4)

Os três modos de acesso à página de ajuda para as opções de plot são

Clique no hyperlink: plot[options].

Selecione a palavra plot[options] com o mouse e escolha Help on "plot[options]" que deve aparecer na segunda linha do menu help.

Digite ?plot[options] em uma linha de comando e execute.

?plot[options]

A sequência de números 1, 4, 9, 16, 25, . . . , 100 de todos os quadrados dos números de 1 a 10 podem ser construídos usando o procedimento seq.

seq(i^2,i=1..10);

1, 4, 9, 16, 25, 36, 49, 64, 81, 100

Esta sequência pode ser transformada em uma lista colocando colchêtes em torno do comando

[seq(i^2,i=1..10)];

1, 4, 9, 16, 25, 36, 49, 64, 81, 100

O seguintes comandos plotam os pontos 0, 1 , 1, 3 , 2, 5 , 3, 7 , 4, 9 , 5, 11 , 6, 13 . Estes pontos tem a forma k, 2 kC1 onde os parâmetro k toma valores todos os valores inteiros de t 0 a 6 inclusive, de modo que podemos usar seq. A opção view pode ser utilizada para especificar o intervalo vertical a ser empregado no plot.

point_list := [seq([k,2*k+1],k=0..6)];

point_list := 0, 1 , 1, 3 , 2, 5 , 3, 7 , 4, 9 , 5, 11 , 6, 13

plot(point_list,style=point,symbol=box,color=brown,view=0.

.13);

Page 12: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(2.2.1)(2.2.1)OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

0 1 2 3 4 5 60

2

4

6

8

10

12

2.2 pointplot,pointplot3d

Outro modo de fazer gráfico com pontos é através do comando pointplot:

restart:

with(plots):

pointlist:=[[1,2],[2,6],[4,4],[3,2]];

pointlist := 1, 2 , 2, 6 , 4, 4 , 3, 2

A opção connect=true pode ser utilizada para conectar os pontos por segmentos ou curvas:

pointplot(pointlist,color=blue,connect=true);

1 2 3 42

3

4

5

6

Também podemos fazer gráficos de pontos em três dimensões:

Page 13: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

points:= [ seq([cos(Pi*T/40),sin(Pi*T/40),T/40],T=0..40) ]:

pointplot3d(points,axes=boxed,connect=true);

0.0

0.5

1.0-1

0

0.0 1

0.5

1.0

2.3 plot3d,implicitplot3d

Maple pode também plotar gráficos em 3D. A superfície pode ser girada com o mouse.

restart:

plot3d(x^2+y^2,x=-2..2,y=-2..2,axes=boxed);

-2-1

y

01

2-2-1

x

01

2

0

2

4

6

8

Page 14: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

(2.3.3)(2.3.3)

(2.3.1)(2.3.1)

(2.3.6)(2.3.6)

OOOO OOOO

OOOO OOOO

(2.3.5)(2.3.5)

OOOO OOOO

(2.3.4)(2.3.4)

OOOO OOOO

OOOO OOOO

(2.3.2)(2.3.2)

Quando temos uma função definida implicitamente, podemos utilizar o comamdo implictplot3D:

implicitplot3d(sin(x*y)+y*z^2-z,x=-1..1,y=-1..1,z=-1..1,

axes=boxed);

implicitplot3d sin x y Cy z2Kz, x = K1 ..1, y = K1 ..1, z = K1 ..1, axes = boxed

implicitplot3d(x^3+y^3+z^3+1=(x+y+z+1)^3, x=-2..2, y=-2..2,

z=-2..2, grid=[10,10,10],axes=frame);

implicitplot3d x3Cy

3Cz

3C1 = xCyCzC1 3, x = K2 ..2, y = K2 ..2, z = K2 ..2, grid

= 10, 10, 10 , axes = frame

No seguinte exemplo utilizamos coordenadas esféricas:

implicitplot3d(r=(3)^x*sin(y), r=0.1..5, x=-1..2*Pi, y=0..

Pi, coords=spherical);

implicitplot3d r = 3x sin y , r = 0.1 ..5, x = K1 ..2 π, y = 0 ..π, coords = spherical

Agora utilizamos coordenadas cilíndricas:

implicitplot3d(r^2+z^2=1, r=0..1, theta=-Pi..Pi, z=-1..1,

coords=cylindrical,axes=frame);

implicitplot3d r2Cz

2 = 1, r = 0 ..1, θ = Kπ ..π, z = K1 ..1, coords = cylindrical, axes

= frame

No seguinte exemplo tivemos que aumentar o número mínimo total de pontos utilizado para gerar gráfico para a obtenção de um resultado satisfatório (default 625 = 25^2):

implicitplot3d([y=sin(x*z+6), y=cos(-x*z)], x=-Pi..Pi, y=-

Pi..Pi, z=-1..1,color=[blue,red],axes=frame, numpoints=

2000);

implicitplot3d y = sin x zC6 , y = cos x z , x = Kπ ..π, y = Kπ ..π, z = K1 ..1, color

= blue, red , axes = frame, numpoints = 2000

No próximo exemplo usamos a opção scaling=constrained que faz com que as escalas dos diferentes eixos sejam as mesmas.

implicitplot3d([(x+2)^3+(y+2)^2+(z+2)^2=9, (x-2)^2+(y-2)^2+

(z-2)^2=15], x=-5..7, y=-8..8, z=-8..7, color=[blue,green],

scaling=constrained, axes=boxed);

implicitplot3d xC2 3C yC2 2

C zC2 2 = 9, xK2 2C yK2 2

C zK2 2

= 15 , x = K5 ..7, y = K8 ..8, z = K8 ..7, color = blue, green , scaling = constrained,

axes = boxed

Para ver a diferença, modifique esta opção para scaling=unconstrained (default).

2.3 polygonplot,polygonplot3d,with(plottools),animate

O procedimento polygonplot, que logo abaixo é utilizado para plotar o triângulo (cheio) com

Page 15: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

OOOO OOOO

(2.4.1)(2.4.1)OOOO OOOO

(2.4.2)(2.4.2)

vértices em 0, 0 , 0, 1 , 1, 1 and 1, 0 :

with(plots);

animate, animate3d, animatecurve, arrow, changecoords, complexplot, complexplot3d,

conformal, conformal3d, contourplot, contourplot3d, coordplot, coordplot3d,

densityplot, display, dualaxisplot, fieldplot, fieldplot3d, gradplot, gradplot3d,

graphplot3d, implicitplot, implicitplot3d, inequal, interactive, interactiveparams,

intersectplot, listcontplot, listcontplot3d, listdensityplot, listplot, listplot3d,

loglogplot, logplot, matrixplot, multiple, odeplot, pareto, plotcompare, pointplot,

pointplot3d, polarplot, polygonplot, polygonplot3d, polyhedra_supported,

polyhedraplot, rootlocus, semilogplot, setcolors, setoptions, setoptions3d,

spacecurve, sparsematrixplot, surfdata, textplot, textplot3d, tubeplot

triangle := [[0,0],[0,1],[.5,1]]:

polygonplot(triangle,axes=none,color=orange);

ngon := n -> [seq([cos(2*Pi*i/n), sin(2*Pi*i/n)], i = 1..n)

];

ngon := n/ seq cos2 π i

n, sin

2 π in

, i = 1 ..n

display([polygonplot(ngon(5)), textplot([0,0,`Octagon`])],

color=magenta);

Page 16: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OctagonK0.8K0.6K0.4 0.2 0.4 0.6 0.8 1

K0.8

K0.6

K0.4

K0.2

0.2

0.4

0.6

0.8

O pacote plots também contém o procedimento polygonplot3d que pode ser usado da seguinte forma pra traçar um cubo:

plots[polygonplot3d]([[[0,0,0],[1,0,0],[1,1,0],[0,1,0]],

[[0,0,1],[1,0,1],[1,1,1],[0,1,1]],

[[0,0,0],[0,1,0],[0,1,1],[0,0,1]],

[[1,0,0],[1,1,0],[1,1,1],[1,0,1]],

[[0,0,0],[1,0,0],[1,0,1],[0,0,1]],

[[0,1,0],[1,1,0],[1,1,1],[0,1,1]]],

lightmodel=light4,scaling=constrained,style=patchnogrid);

Page 17: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

(2.4.3)(2.4.3)

OOOO OOOO

Alguns objetos geométricos em 3D, assim como as operações de reflexão, rotação e translação destes objetos são encontrados no pacote plottools. Note que este pacote deve ser carregado junto plots.

with(plottools);

arc, arrow, circle, cone, cuboid, curve, cutin, cutout, cylinder, disk, dodecahedron,

ellipse, ellipticArc, hemisphere, hexahedron, homothety, hyperbola, icosahedron,

line, octahedron, parallelepiped, pieslice, point, polygon, project, rectangle, reflect,

rotate, scale, semitorus, sphere, stellate, tetrahedron, torus, transform, translate, vrml

C1 := cone([0,0,0], 1/2, 2):

display( C1,axes=frame );

-0.5

0.0

0.5

-0.5

0.0

0.50.0

0.5

1.0

1.5

2.0

Note que a manipulação do gráfico admite dois graus de liberdade de rotação. No caso acima, nãoconseguimos fazer o vértice do cone apontar na direção horizontal. No entanto, ao aplicar uma

rotação de π

2 com relação a um dos eixos do plano ortogonal ao eixo de simetria do cone temos

C2:=rotate(C1,Pi/2,0,0):

display(C2,axes=frame,scaling=unconstrained);

Page 18: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

0.0

0.5

1.0

1.5

2.0

-0.5

-0.25

0.0

0.25

0.5-0.5

-0.25

0.0

0.25

0.5

Mesmo com dois graus de liberdade somente podemos agora fazer o vértice apontar em qualquer uma das três direções espaciais . Por quê ? Façamos um objeto composto:

sorvete := cone([0,0,-2],0.7,2,color=tan),

sphere([0,0,0.1],0.68,color=wheat):

plots[display](sorvete, scaling=constrained);

Page 19: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO f := dodecahedron([0,0,0],0.8), torus([1,1,1], 0.5, 1.4):

plots[display](f,orientation=[45,0],scaling=constrained);

Tente colocar o dodecaedro no centro do toro.

2.4 animate

Page 20: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

Gráficos podem ser animados.

animate( 3*exp(-0.2*t-x^2)*sin(Pi*(x+t)),x=-5..5,t=0..20,

view=[-3..3,-3..3],axes=normal, frames=50,numpoints=500);

x

K3 K2 K1 0 1 2 3

K3

K2

K1

1

2

3

Este comando pode ser utilizado também em 3D:

animate( plot3d, [sin(t)*(x^2+y^2), x=-2..2, y=-2..2], t=0.

.2*Pi,axes=boxed );

Page 21: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

-2

-1y

0

1

2

-2

-1

0x

1

2-8

-3

2

7

t = 0.

;

2.5 Exercícios

1. Plote a curva y = x4K4 x3

Kx2C5 xK1 para mostrar as principais características do gráfico.

Em particular, certifique-se que todas as intersecções e pontos de retorno apareçam no figura. A equação x4

K4 x3Kx

2C5 xK1 = 0 possui alguma solução inteira? Explique.

2. (a) Plote o gráfico de y = x sin 60 x no intervalo de x = 0 a x = 3 π usando a opção "numpoints" , se necessário, para obter um bom resultado.

(b) Plote as curvas y = x sin 60 x , y = x e y = K x simultaneamente para mostrar como a

curva y = x sin 60 x está "presa" entre as curvas y = x e y = K x .

3. Plote the gráficos dados pelas equações abaixo. Em cada caso escolha um intervalo conveniente que mostre as principais características do gráfico. I(a) y = x

2K5 xK3

(b) y = x3Kx

(c) y2 = x (d) x2

Ky2 = 2

Para o gráfico em (d), mostre também as assíntotas y = x e y = Kx .

Page 22: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(3.1.2)(3.1.2)OOOO OOOO

(3.1.1)(3.1.1)

OOOO OOOO

4. Plote as funções y = x2K5 xC6 e y =

1

xK2 2 juntas. Experimente diferentes intervalos

para y de modo que ambos gráficos sejam mostrados de forma satisfatória.

5. Faça o mesmo com f x = sec x C4 no intervalo 0, 2 π .

6. Estime graficamente onde as funções definidas por f x = 20Kx e h x = 1.012x se interceptam. 7. Faça gráficos comparativos das funções y = x

n , para diferentes valores de n. Faça uma animação.

8. Faça o gráfico simultâneo das superfícies definidas por sin x y Ccos z C2 = 0 e xC2 yKx = 3.

9. Faça o gráfico das seguintes funções parametrizadas:

(a) r t =t2K1

t2C1

,2 t

t2C1

, para t pertencendo a KN ..N .

(b) r t =4 t3

9K

14 t2

9C

t

9C1, K

4 t3

9K

t2

9C

14 t9

, para t pertencendo a (0,1)

10. Desenhe um pentágono inscrito numa circunferência.

11. Desenho um toro que possa ser interativamente orientado em qualquer direção espacial.

12. Plote o Folium, que é definido como o gráfico em coordenadas polares de seguinte função

radial: cos θ 4 sin θ2K1 . Utilize a opção coords=polar (veja exemplos no menu help)

para traçar o gráfico em coordenadas polares.

3 Expressões e Funções

3.1 Seta, eval Ao usar Maple é importante distinguir cuidadosamente expressões e funções. Por exemplo,

x2K4 xC3 and x C2 são funções na variável x.

Elas são introduzidas como já fizemos antes, atribuindo nomes se necessário:

x^2-4*x+3;h:=sqrt(x)+2;

x2K4 xC3

h := x C2

Em matemática utilizamos tais expressões para definir funções, como f x = x2K4 xC3 e

g x = x C2.Em Maple as funções f e g devem ser entendidas agora de uma forma bastante precisa, comonomes de ações ou procedimentos associados com valores computados destas expressões para um dado número de entrada x. No Maple funções são facilmente definidas utilizado a seta. Por exemplo,

f := x -> x^2-4*x+3;

f := x/x2K4 xC3

Page 23: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(3.1.3)(3.1.3)

(3.1.4)(3.1.4)OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

(3.1.6)(3.1.6)

OOOO OOOO

(3.1.5)(3.1.5)

Uma vez que tal comando foi executado a função f pode ser utilizada durante a seção como qualquer outra função definida previamente. Assim,

f(1/2);

54

f(3);

0

Entradas simbólicas também podem ser utilizadas.

f(s);

s2K4 sC3

f(s+1);

sC1 2K4 sK1

A função pode plotada:

plot(f(x),x=0..4);

x1 2 3 4

K1

0

1

2

3

ou

plot(f,0..4);

Page 24: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(3.1.7)(3.1.7)

OOOO OOOO

OOOO OOOO

1 2 3 4

K1

0

1

2

3

Outras funções podem ser definidas em termo de f:

g := x -> f(x-1);

h := x -> f(x-2);

g := x/f xK1

h := x/f xK2

plot([f(x),g(x),h(x)],x=0..6,y=-1..3,color=[red,aquamarine,

gold],thickness=2);

x

1 2 3 4 5 6

y

K1

0

1

2

3

Uma vez que a função foi definida, o Maple lembrará desta função durante toda a seção. É possível sobrescrever a definição de uma função com uma nova definição.

Por exemplo, se queremos mudar a definição da função f x =x

x2C1

, devemos digitar e

executar o comando:

Page 25: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

(3.1.9)(3.1.9)

(3.1.12)(3.1.12)

OOOO OOOO

OOOO OOOO

OOOO OOOO

(3.1.11)(3.1.11)

(3.1.8)(3.1.8)

OOOO OOOO

(3.1.14)(3.1.14)

OOOO OOOO

(3.1.10)(3.1.10)

OOOO OOOO

(3.1.13)(3.1.13)

f := x -> x/(x^2+1);

f := x/x

x2C1

A presente (nova) definição da função f pode ser confirmada da seguinte forma:

f(x);

x

x2C1

ou, utilizando o comando de avaliação,

eval(f);

x/x

x2C1

Digitando simplesmente f; em uma linha de comando não é suficiente:

f;

f

Note: Note que com a nova definição de f, g e h també, mudam:

g(x);

xK1

xK1 2C1

h(x);

xK2

xK2 2C1

No entanto, a aplicação de eval a g confirma as definições de g in termos de f, mas não diz nada sobre f:

eval(g);

x/f xK1

plot([f(x),g(x),h(x)],x=-5..7,color=[red,aquamarine,gold],

thickness=2);

Page 26: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(3.2.1)(3.2.1)

(3.2.3)(3.2.3)

OOOO OOOO

OOOO OOOO

(3.2.5)(3.2.5)

(3.2.2)(3.2.2)

OOOO OOOO

OOOO OOOO

(3.2.4)(3.2.4)

OOOO OOOO

(3.1.15)(3.1.15)

OOOO OOOO

OOOO OOOO

xK4 K2 0 2 4 6

K0.4

K0.2

0.2

0.4

Para limpar a atribuição de f sem redefini-lo fazemos

f := 'f';

f := f

Um certo número de funções, digamos, f, g, h, podem ter suas atribuições limpadas simultaneamente:

unassign('f','g','h');

Para economizar memória é sempre bom limpar as atribuições de funções e variáveis, ao iniciar um novo problema. Alternativamente podemos sempre usarrestart; para limpar tudo da memória.

3.2 unapply, mapUma expressão como

F:= x^2-4*x+3;

F := x2K4 xC3

pode ser transformada em uma função com o comando unapply:

f:=unapply(F,x);

f := x/x2K4 xC3

Podemos calcular o valor da função em x = 3, por exemplo, de dois modos.

f(3);

0

eval(F,x=3);

0

O comando subs pode ser também usado para avaliar a expressão num dado ponto:

subs(x=3,F);

0

Page 27: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

(3.2.6)(3.2.6)

OOOO OOOO

(3.2.7)(3.2.7)

OOOO OOOO

(3.3.1)(3.3.1)

OOOO OOOO

OOOO OOOO

OOOO OOOO

O procedimento de Maple map é um exemplo de procedimento que funciona somente com funções e não expressões.

g := x -> x^2;

map(g,[1,2,3,4,5,6]);

g := x/x2

1, 4, 9, 16, 25, 36

O comando evalf avalia um número em dígitos flutuantes até uma precisão especificada. Vamos então construir a função:

evalf15 := x -> evalf(x,15);

evalf15(Pi);

evalf15 := x/evalf x, 15

3.14159265358979

3.3 procOutro modo de definir funções é através de procedimentos:

h:=proc(a,b)

if a<0 then print(erro) else

plot(sqrt(x)+1,x=a..b)

end if;

end;

h := proc a, b

if a ! 0 then print erro else plot sqrt x C1, x = a ..b end if

end proc

h(0,1);

Page 28: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(3.3.5)(3.3.5)

(3.3.4)(3.3.4)

OOOO OOOO

OOOO OOOO

(3.3.7)(3.3.7)

OOOO OOOO

(3.3.6)(3.3.6)

OOOO OOOO

OOOO OOOO

OOOO OOOO

(3.3.3)(3.3.3)

(3.3.2)(3.3.2)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

x0 0.2 0.4 0.6 0.8 1

1

1.2

1.4

1.6

1.8

2

h(b);

Error, (in h) cannot determine if this expression is true or false: b <

0

Podemos também definir funções de várias variáveis:

g:=(x,y)->x*y^2+x-y^2;

g := x, y /x y2CxKy

2

ou

F:=proc(x,y)

x*sin(y)+x^2

end;

F := proc x, y x * sin y Cx^2 end proc

F(1,2);

sin 2 C1

Ff:=proc(x,y)

evalf(x*sin(y)+x^2)

end;

Ff := proc x, y evalf x * sin y Cx^2 end proc

Ff(Pi,Pi);

9.869604404

seq(map(Ff, [1,2,3], 1+i),i=1..3);

1.909297427, 5.818594854, 11.72789228 , 1.141120008, 4.282240016,

9.423360024 , 0.2431975047, 2.486395009, 6.729592514

Page 29: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

(4.1.6)(4.1.6)

OOOO OOOO

(4.1.1)(4.1.1)

OOOO OOOO

(4.1.5)(4.1.5)

OOOO OOOO

OOOO OOOO

(4.1.2)(4.1.2)

(4.1.3)(4.1.3)

OOOO OOOO

OOOO OOOO

(4.1.7)(4.1.7)

(4.1.4)(4.1.4)

OOOO OOOO

3.4 Exercícios 2

1 (a) Construa a função f x =x

3C3 x2

K1

x4C4

usando a notação seta.

(b) Determine f K1 , f 0 e f 1 .(c) Faça o gráfico de f sobre o intervalo de x = K4 a x = 4.

(d) Use o procedimento eval para avaliar a expressão x

3C3 x2

K1

x4C4

para x = K1, x = 0 e x = 1.

2 Construa uma função cuja entrada é uma lista qualquer e cuja saída é uma lista que avalia o senode cada elemento da lista de entrada.

4. Solução de Equações Algébricas

4.1 solve, fsolve

restart:

Vamos agora considerar equações algébricas do tipo

eq1:=a*x^2+b*x+c=0;

eq1 := a x2Cb xCc = 0

Podemos resolver esta equação para x:

sol:=solve(eq1,x);

sol :=12

KbC b

2K4 a c

a, K

12

bC b

2K4 a c

a

sol[1];

12

KbC b

2K4 a c

a

sol[2];

K12

bC b

2K4 a c

a

Consideremos algumas equações mais específicas, dando valores às constantes a, b e c :

eq2:=subs(a=1,b=3,c=-4/5,eq1);

eq2 := x2C3 xK

45

= 0

sol:=solve(eq2,x);

sol := K32

C1

10 305 , K

32

K1

10 305

Em pontos flutuantes,

evalf(sol);

0.246424920, K3.246424920

Page 30: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

OOOO OOOO

(4.1.14)(4.1.14)

(4.1.15)(4.1.15)

(4.1.9)(4.1.9)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

(4.1.11)(4.1.11)

OOOO OOOO

OOOO OOOO

(4.1.8)(4.1.8)

OOOO OOOO

(4.1.17)(4.1.17)

OOOO OOOO

(4.1.10)(4.1.10)

(4.1.12)(4.1.12)

(4.1.13)(4.1.13)

(4.1.16)(4.1.16)

Poderíamos ter escrito desde o início,

evalf(solve(eq2,x));

0.246424920, K3.246424920

ou

fsolve(eq2,x);

K3.246424920, 0.2464249197

printlevel:=1;

printlevel := 1

Estas duas formas não sempre equivalentes, no entanto. Consideremos, por exemplo,

eq3:=x^3-x^2+1;

eq3 := x3Kx

2C1

evalf(solve(eq3));

K0.7548776667, 0.8774388331K0.7448617670 I, 0.8774388331C0.7448617670 I

fsolve(eq3);

K0.7548776662

Para que o comando fsolve possa encontrar também raízes complexas o argumento complex deve ser dado:

fsolve(eq3=0,x,complex);

K0.7548776662, 0.8774388331K0.7448617666 I, 0.8774388331C0.7448617666 I

Vejamos outro exemplo com uma equação não polinomial:

eq4:=sin(x)+x^(1/2)-3/2;

eq4 := sin x C x K32

evalf(solve(eq4,x));

0.7141134004

fsolve(eq4);

3.530173727

Para esclarecer este dilema façamos um gráfico:

plot(eq4,x=0..14);

Page 31: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(4.1.18)(4.1.18)

(4.1.20)(4.1.20)OOOO OOOO

(4.1.19)(4.1.19)OOOO OOOO

OOOO OOOO

x

2 4 6 8 10 12 14

K1

0

1

2

3

Portanto, ambos comandos dão resultados corretos mas incompletos. O conhecimento do gráfico nos dá uma indicação da localização das raízes e fsolve pode ser utilizado para determinar os seus valores exatos:

r1:=fsolve(eq4,x,0..2);

r1 := 0.7141134004

r2:=fsolve(eq4,x,2..4);

r2 := 3.530173727

r3:=fsolve(eq4,x,4..6);

r3 := 5.338242169

4.2 Exercícios 3Resolva as equações abaixo e ilustre graficamente

1 sin x Csin 2 x KxC12

= 0,

2 x3Kex = 0,

4 3 x5K3 x4

K7 x3C4 x2

KxC3=0.

5. Simplificando ExpressõesO problema de simplificação de expressões é um problema clássico de computação algébrica, e também é um dos mais difíceis. Embora heuristicamente seja fácil ter uma noção sobre o que é a forma mais simples de uma expressão, quando se trata de traduzir este procedimento em termos de algoritmos, formidáveis dificuldades de programação aparecem. Em Maple há certos comandos destinados a simplificação de expressões. Como veremos nas Seções seguintes, cabe ao usuário decidir qual comando de simplificação utilizar em cada momento.

Comando factor

Page 32: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(5.1.11)(5.1.11)

(5.1.4)(5.1.4)

OOOO OOOO

(5.1.1)(5.1.1)

OOOO OOOO

(5.1.6)(5.1.6)

OOOO OOOO

(5.1.2)(5.1.2)

OOOO OOOO

(5.1.5)(5.1.5)

(5.1.7)(5.1.7)

(5.1.9)(5.1.9)

OOOO OOOO

OOOO OOOO

(5.1.10)(5.1.10)

OOOO OOOO

(5.1.3)(5.1.3)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

(5.1.8)(5.1.8)

Vamos supor que temos a seguinte expressão algébrica:

restart:

q:=(x^2-x-2);

q := x2KxK2

O comando factor, como o nome sugere, fatoriza esta expressão:

factor(q);

xC1 xK2

Do mesmo modo, se

p:=(x^2-1);

p := x2K1

temos

factor(p);

xK1 xC1

Portanto, numa expressão tal como

f:=p/q;

f :=x

2K1

x2KxK2

O comando factor produz uma simplificação:

factor(f);

xK1xK2

Consideremos agora a expressão

ex1:=(x^2-2*x+1)^2+(y^2+2*y+1)^2;

ex1 := x2K2 xC1

2C y

2C2 yC1

2

Aplicando o comando factor obtemos

factor(ex1);

x4K4 x3

C6 x2K4 xC2Cy

4C4 y3

C6 y2C4 y

o que não simplificou o problema. Notemos agora o seguinte:

op(1,ex1);

x2K2 xC1

2

op(2,ex1);

y2C2 yC1

2

Ou seja, o comando op extrai os operandos da expressão. Portanto, podemos fatorar ex1 eficientemente fazendo

factor(op(1,ex1))+factor(op(2,ex1));

xK1 4C yC1 4

Page 33: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(5.2.1)(5.2.1)

OOOO OOOO

OOOO OOOO

OOOO OOOO

(5.2.4)(5.2.4)

OOOO OOOO

OOOO OOOO

OOOO OOOO

(5.1.13)(5.1.13)

(5.2.7)(5.2.7)

(5.2.2)(5.2.2)

OOOO OOOO

OOOO OOOO

(5.1.12)(5.1.12)

OOOO OOOO

OOOO OOOO

(5.2.6)(5.2.6)

(5.2.3)(5.2.3)

(5.2.5)(5.2.5)

(5.1.14)(5.1.14)

OOOO OOOO

Se tivéssemos uma expressão muito longa este método seria trabalhoso. Um modo mais eficiente para resolver este problema é utilizando o comando map :

map(factor,ex1);

xK1 4C yC1 4

O comando factor aplicado à expressão definida por

g:=(x^30-1)/(x-1);

g :=x

30K1

xK1

produz consequências desastrosas:

factor(g);

xC1 x2CxC1 x

2KxC1 x

4Cx

3Cx

2CxC1 x

4Kx

3Cx

2KxC1 x

8

Kx7Cx

5Kx

4Cx

3KxC1 x

8Cx

7Kx

5Kx

4Kx

3CxC1

Resolveremos este problema através do comando normal.

Comando normalO comando normal é similar ao comando factor. A diferença é que normal, ao encontrar uma razão entre duas expressões, limita-se a procurar fatores comuns entre numerador e denominador. Por exemplo,

q;

x2KxK2

normal(q);

x2KxK2

p;

x2K1

normal(p);

x2K1

Entretanto,p/q;

x2K1

x2KxK2

normal(p/q);

xK1xK2

produzindo neste caso o mesmo resultado que factor. No entanto, a diferença reaparece se no casomais geral

g;

x30K1

xK1

normal(g);

Page 34: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(5.3.5)(5.3.5)

OOOO OOOO

(5.3.1)(5.3.1)OOOO OOOO

OOOO OOOO

(5.2.10)(5.2.10)

OOOO OOOO

(5.3.6)(5.3.6)

(5.2.11)(5.2.11)

OOOO OOOO

(5.3.4)(5.3.4)

(5.3.7)(5.3.7)

OOOO OOOO

OOOO OOOO

(5.2.9)(5.2.9)

OOOO OOOO

(5.3.2)(5.3.2)

(5.2.8)(5.2.8)

OOOO OOOO

OOOO OOOO

(5.3.3)(5.3.3)

1Cx29Cx

28Cx

27Cx

26Cx

25Cx

24Cx

23Cx

22Cx

21Cx

20Cx

19Cx

18Cx

17Cx

16

Cx15Cx

14Cx

13Cx

12Cx

11Cx

10Cx

9Cx

8Cx

7Cx

2CxCx

4Cx

3Cx

6Cx

5

Ou seja, normal procurou no numerador o fator comum ao denominador e expandiu o fator restante. Em quais casos há vantagem de se usar normal em lugar de factor ? Consideremos o seguinte exemplo:

h:=1/(1-x^20)+1/(1-x^10);

h :=1

1Kx20 C

1

1Kx10

factor(h);

K x10C2 xK1 xC1 x

4Cx

3Cx

2CxC1 x

4Kx

3Cx

2KxC1 x

2

C1 x8Kx

6Cx

4Kx

2C1

normal(h);

Kx

10C2

K1Cx10 x

10C1

Como podemos ver, factor obteve o mínimo múltiplo comum entre os denominadores e fatorizou cada expressão em termos de fatores irredutíveis. O comando normal fez o mesmo, mas não tentou fatorizar os termos no denominador, gerando uma expressão mais simples.

Comando expandQuando uma expressão é gerada em Maple, por meio de uma entrada do usuário, ou por meio de um cálculo, esta expressão é mantida na sua forma original, até que o usurio determine o contrário. Ou seja, expressões algébricas são mantidas na forma em que foram fornecidas. Por exemplo, uma expressão fatorada é mantida nesta forma até que sua expansão seja ordenada:

f1:=(x-a)^6;

f1 := xKa6

expand(f1);

x6K6 x5 aC15 x4 a2

K20 x3 a3C15 x2 a4

K6 x a5Ca

6

factor(%);

aKx6

O comando factor pode ser usado também para expandir funções trigonométricas, logarítmicas exponenciais, especiais, etc.:

f2:=cos(omega*t+delta);

f2 := cos ω tCδ

expand(f2);

cos ω t cos δ Ksin ω t sin δ

f3:=ln(x^2*y);

f3 := ln x2 y

expand(f3);

ln x2 y

Page 35: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

(5.3.11)(5.3.11)

OOOO OOOO

(5.3.10)(5.3.10)

(5.3.15)(5.3.15)

OOOO OOOO

OOOO OOOO

OOOO OOOO

(5.3.18)(5.3.18)

OOOO OOOO

(5.3.13)(5.3.13)

(5.3.14)(5.3.14)

OOOO OOOO

(5.3.8)(5.3.8)

(5.3.9)(5.3.9)

(5.3.16)(5.3.16)

(5.3.17)(5.3.17)

(5.3.12)(5.3.12)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

Psi(4*x);

Ψ 4 x

expand(%);

2 ln 2 C14

Ψ x C14

Ψ xC14

C14

Ψ xC12

C14

Ψ xC34

onde Ψ x é a função digamma. Em determinados casos desejamos expandir somente parte de uma expressão. Vamos supor que

f4:=(sin(alpha+beta)+x)^2;

f4 := sin αCβ Cx2

expand(f4);

sin α2 cos β

2C2 sin α cos β cos α sin β C2 sin α cos β x

Ccos α2 sin β

2C2 cos α sin β xCx

2

Caso não queiramos expandir a função sin, procedemos da seguinte forma:

expand(f4,sin);

sin αCβ2C2 sin αCβ xCx

2

Vejamos outro exemplo:

f5:=sin(omega*(t-t0)+delta);

f5 := sin ω tK t0 Cδ

expand(f5);

sin ω t cos ω t0 cos δ Csin ω t sin ω t0 sin δ Kcos ω t sin ω t0 cos δ

Ccos ω t cos ω t0 sin δ

expand(f5,t-t0);

sin ω tKt0 cos δ Ccos ω tK t0 sin δ

Consideremos agora a atuação de expand sobre funções racionais:

f6:=(x-y)^2/(x+y)^3;

f6 :=xKy

2

xCy3

expand(f6);

x2

xCy3 K

2 x y

xCy3 C

y2

xCy3

Ou seja, o denominador não foi expandido. Para fazer isso devemos proceder da seguinte forma:

normal(f6,expanded);

x2K2 x yCy

2

x3C3 x2 yC3 x y2

Cy3

Page 36: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(5.4.7)(5.4.7)

OOOO OOOO

OOOO OOOO

OOOO OOOO

(5.4.8)(5.4.8)

OOOO OOOO

(5.4.6)(5.4.6)

(5.4.12)(5.4.12)

OOOO OOOO

OOOO OOOO

(5.4.5)(5.4.5)

OOOO OOOO

(5.4.10)(5.4.10)

OOOO OOOO

(5.4.4)(5.4.4)

(5.4.2)(5.4.2)

OOOO OOOO

(5.4.13)(5.4.13)

(5.4.11)(5.4.11)

(5.4.1)(5.4.1)

(5.4.9)(5.4.9)

(5.4.3)(5.4.3)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

Comando combineA operação realizada por expand é baseada num algoritmo simples. Por outro lado, a operação inversa de fatorizaçãoé um processo complexo baseado em um longo e complexo procedimento envolvendo técnicas sofisticadas de álgebra. Portanto, embora seja fácil obter a expansão de qualquer função, a fatorização requer maior cuidado e interação do usuário com o sistema. Por exemplo,

g1:=sin(alpha+beta)+cos(omega+delta);

g1 := sin αCβ Ccos ωCδ

expand(g1);

sin α cos β Ccos α sin β Ccos ω cos δ Ksin ω sin δ

factor(%);

sin α cos β Ccos α sin β Ccos ω cos δ Ksin ω sin δ

Ou seja, factor não foi capaz fazer com que pudéssemos recuperar a expressão original. Para isso é necessário especificar o tipo de fatorização que desejamos. O comando combine é útil neste caso:

combine(%,trig);

sin αCβ Ccos ωCδ

Vejamos outros exemplos:

g2:=(x+a)^n*(x+a)^s;

g2 := xCan xCa

s

combine(g2,power);

xCanC s

g3:=exp(2*x)*exp(b);

g3 := e2 x eb

combine(g3,exp);

e2 xCb

g4:=exp(sin(alpha)*cos(beta))*exp(cos(alpha)*sin(beta));

g4 := esin α cos β ecos α sin β

combine(g4,exp);

esin α cos β Ccos α sin β

combine(%,trig);

esin αCβ

Podemos executar a simplificação acima, de uma só vez, da seguinte forma:combine(g4,[trig,exp]);

esin αCβ

Simplificações envolvendo ln necessitam o parâmetro adicional "simbolic". Por exemplo,g5:=3*ln(x)+2*ln(y);

g5 := 3 ln x C2 ln y

Page 37: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

(5.5.6)(5.5.6)

(5.5.9)(5.5.9)

OOOO OOOO

(5.6.1)(5.6.1)

OOOO OOOO

OOOO OOOO

(5.5.7)(5.5.7)

(5.6.2)(5.6.2)

(5.4.14)(5.4.14)

OOOO OOOO

(5.5.3)(5.5.3)

OOOO OOOO

(5.5.8)(5.5.8)

(5.5.4)(5.5.4)

OOOO OOOO

(5.5.2)(5.5.2)

(5.5.1)(5.5.1)

OOOO OOOO

(5.5.5)(5.5.5)

OOOO OOOO

OOOO OOOO

combine(g5,ln,symbolic);

ln x3 y2

Comando convertEmbora o comando convert seja de utilidade mais geral, ele pode ser utilizado em simplificações, como veremos nos próximos exemplos. Sua sintaxe é convert(expressão, forma)onde onde argumento "forma" pode ser um dos seguintes: trig, tan, ln, exp expln, expsincos, rational, parfrac, radians, degree, GAMMA, factorial, etc. Por exemplo,

m1:=(exp(I*theta)+exp(-I*theta))/2;

m1 :=12

eI θC

12

eKI θ

convert(m1,trig);

cos θ

convert(%,exp);

12

eI θC

12

eKI θ

m2:=arcsinh(x);

m2 := arcsinh x

convert(m2,ln);

ln xC x2C1

convert(n!,GAMMA);

Γ nC1

convert(%,factorial);

n!

expand(%);

n!

convert(binomial(n,k),factorial);

n!k! nKk !

Comando simplifyO comando simplify é um comando geral de simplificação, que busca funções dentro de uma expressão que podem ser simplificadas utilizando propriadades pré-definidas no sistema. Entretanto, podemos usar este comando de forma selecionada, como no exemplo:

n1:=(sin(x)^2+2*cos(x)^2)*exp(y)/exp(y+x);

n1 :=sin x

2C2 cos x

2 ey

exCy

simplify(n1);

eKx cos x2C1

simplify(n1,trig);

Page 38: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

(5.6.9)(5.6.9)

OOOO OOOO

(5.6.12)(5.6.12)

(5.6.6)(5.6.6)

(5.6.3)(5.6.3)

OOOO OOOO

(5.6.5)(5.6.5)

(5.6.4)(5.6.4)

OOOO OOOO

OOOO OOOO

OOOO OOOO

(5.6.8)(5.6.8)

OOOO OOOO

(5.6.11)(5.6.11)

OOOO OOOO

(5.6.7)(5.6.7)

(5.6.10)(5.6.10)

OOOO OOOO

ey cos x2C1

exCy

Ou seja, somente simplifícações trigonométricas foram efetuadas no último comando. Os argumentos em simplify podem ser trig, hypergeom, radical, power, exp, ln, sqrt, Bessel, BesselJ,BesselK, BesselY, Ei, GAMMA, RootOf, LambertW, dilog, polylog, pg, pochhammer e atsign. O comando simplify pode muito útil na simplificação de expressões envolvendo vínculos. Por exemplo, vamos supor que a expressão

n2:=x^2+2*x*y+y^3;

n2 := x2C2 x yCy

3

está sujeita aos vínculosvinculos:={x+y+z=3, x^2+y=1, x-y+z^2=0};

vinculos := x2Cy = 1, xKyCz

2 = 0, xCyCz = 3

simplify(n2,vinculos);

K35 x2C23 xC17 x3

K14

Outra utilidade de simplify é na substituição de produtos em expressões por outras expressões ou múmeros. Por exemplo, suponhamos que

n3:=x^2*y^5*z;

n3 := x2 y5 z

Se queremos examinar o resultado da substituição z = 1 na expressão acima utilizamos o comando subs

subs(z=1,n3);

x2 y5

Entretanto, se quisermos substituir x2 y4 = z sin z na expressão n3, o comando subs é inefetivo:

subs(x^2*y^4=sin(z)*z,n3);

x2 y5 z

Podemos utilizar simplify onde x2 y4 = z sin z é considerado como um vínculo:

simplify(n3,{x^2*y^4=sin(z)*z});

z2 y sin z

Podemos fazer com que o comando simplify assuma as hipóteses feitas utilizando o comando assume. Por exemplo,

p1:=(x^2*y^4)^(1/2);

p1 := x2 y4

simplify(p1,assume=nonneg);

x2 y4

Acima, a opção assume=nonneg fez com que todas as variáveis sejam declaradas temporariamente não-negativas.

6. Cálculo Diferencial e Integral

Page 39: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(6.1.7)(6.1.7)OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

(6.1.5)(6.1.5)

OOOO OOOO

(6.1.1)(6.1.1)

(6.1.4)(6.1.4)

(6.1.2)(6.1.2)

(6.1.8)(6.1.8)

(6.1.6)(6.1.6)

(6.1.3)(6.1.3)

OOOO OOOO

OOOO OOOO

6.1 Limites, Somatórios e Produtórios

O comando que calcula o limite de uma função quando ela tende a algum valor é feito pelo comando limit. Ele é capaz de realizar o cálculo de limites mesmo quando a direta inserção do

valor crítico na função é um resultado indefinido (por exemplo, N

N ). Quando o comando é

executado com a primeira letra maiúscula (Limit), ele assume a forma inerte e nenhum cálculo é feito. Esta forma é muito usada para visualizar a expressão antes que o cálculo seja realmente feito com a auxílio do value.

Limit((sqrt(1+x)-1)/x,x=0);

limx/0

1Cx K1x

value(%);

12

Limit(tan(Pi/4+x)^cot(2*x),x=0)=limit(tan(Pi/4+x)^cot(2*x),

x=0);

limx/0

tan14

πCxcot 2 x

=e

Limit(x!/x^x,x=infinity)=limit(x!/x^x,x=infinity);

limx/N

x!

xx

= 0

O resultado é avaliado simbolicamente sempre que possível, mesmo quando a expressão possui variáveis desconhecidas.

f:=(x^a-x^(-a))/(x-1/x);

f :=x

aKx

Ka

xK1x

limit(f,x=1);

a

O limite também pode ser calculado com funções multivariáveis. Para isso o coordenada em que se quer calcular o limite deve ser especificada da forma {x=x0,y=y0,...}.

limit( (x+y)/x + (x+y)/y , {x=0,y=1} );

undefined

Quando queremos calcular o limite da função 1

x2 quando x/0 o Maple não encontra dificuldade

de dizer que é N, porém para a função 1x

veja o resultado:

Limit(1/x^2,x=0)=limit(1/x^2,x=0);

Page 40: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(6.1.13)(6.1.13)

(6.1.12)(6.1.12)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

(6.1.11)(6.1.11)

(6.1.8)(6.1.8)

(6.1.16)(6.1.16)

(6.1.14)(6.1.14)

(6.1.10)(6.1.10)

(6.1.9)(6.1.9)

OOOO OOOO

(6.1.15)(6.1.15)

OOOO OOOO

limx/0

1

x2

= N

Limit(1/x,x=0)=limit(1/x,x=0);

limx/0

1x

= undefined

O motivo deste resultado é que o Maple reconhece que o limite desta função para este valor depende da direção de aproximação.

Limit(1/x,x=0,left)=limit(1/x,x=0,left);

limx/0K

1x

= KN

Limit(1/x,x=0,right)=limit(1/x,x=0,right);

limx/0C

1x

= N

Para representar somatórios usa-se o comando sum: o primeiro parâmetro representa a função e o segundo contém o intervalo da variável do somatório. Assim como no limite este comando também possui a sua forma inerte.

Sum(1/x^n,n=1..5);

>n = 1

51

xn

value(%);

1x

C1

x2C

1

x3C

1

x4C

1

x5

Se a variável já possui um valor previamente associado então esta variável deve estar entre aspas simples (') e o todo primeiro parâmetro também.

z:=10;

z := 10

Sum(1/z^3,z=1..5)=sum(1/z^3,z=1..5);

Error, (in sum) summation variable previously assigned, second argument

evaluates to 10 = 1 .. 5

Sum('1/z^3','z'=1..5)=sum('1/z^3','z'=1..5);

>z = 1

51

z3 =

256103216000

Quando se desejar fazer um somatório infinito basta especificar no intervalo.

Sum(1/2^n,n=1..infinity)=sum(1/2^n,n=1..infinity);

>n = 1

N

1

2n= 1

Page 41: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

(6.1.20)(6.1.20)

(6.2.1)(6.2.1)

(6.1.21)(6.1.21)

OOOO OOOO

(6.1.23)(6.1.23)

OOOO OOOO

OOOO OOOO

OOOO OOOO

(6.1.19)(6.1.19)

(6.1.18)(6.1.18)OOOO OOOO

(6.1.17)(6.1.17)

(6.2.2)(6.2.2)

(6.1.22)(6.1.22)

OOOO OOOO

OOOO OOOO

OOOO OOOO

Se você quiser construi somatórios de algumas variáveis pode-se colocar um somatório dentro de outro. O exemplo seguinte mostra como o sum é usado para construir uma fórmula que usa elementos de uma matriz como coeficiente.

Sum(Sum(k[i,j]*y^(i+j),i=1..3),j=1..3);

>j = 1

3

>i = 1

3

ki, j yiC j

value(%);

k1, 1 y2Ck2, 1 y

3Ck3, 1 y

4Ck1, 2 y

3Ck2, 2 y

4Ck3, 2 y

5Ck1, 3 y

4Ck2, 3 y

5Ck3, 3 y

6

A mesma sintaxe do sum pode ser usada para o comando product que calcula o produtório especificado no primeiro parâmetro.

Product(x,x=1..5);

?x= 1

5

x

value(%);

120

Product(1+1/x^2,x=1..10)=product(1+1/x^2,x=1..10);

?x= 1

10

1C1

x2 =

2200962205658409472

product( 1+1/x^2 , x=1..infinity );

sinh π

π

evalf(%);

3.676077910

6.2 Diferenciação

Esta seção trata dos comandos relacionados ao cálculo de derivadas. O comando que calcula a derivada é o diff. Funções definidas por equações também podem ser derivads pelo comandoimplicitdiff. O operador relacionado com a derivada é a letra d maiúscula (D). Para o comando de derivada deve-se passar a função e a variável de derivação como argumentos tanto para a forma normal como para a forma inerte.

restart;

Diff(x^3+x^2+x,x);

ddx

x3Cx

2Cx

value(%);

3 x2C2 xC1

Page 42: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(6.2.6)(6.2.6)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

(6.2.3)(6.2.3)

OOOO OOOO

(6.2.11)(6.2.11)

(6.2.9)(6.2.9)

OOOO OOOO

OOOO OOOO

(6.2.4)(6.2.4)

(6.2.7)(6.2.7)

OOOO OOOO

OOOO OOOO

(6.2.8)(6.2.8)

(6.2.10)(6.2.10)

(6.2.5)(6.2.5)

Diff(x^3+x^2+x,x,x)=diff(x^3+x^2+x,x,x);

d2

dx2

x3Cx

2Cx = 6 xC2

Para derivadas de ordem superiores a dois convém utilizar o operador dólar ($) responsável pelas repetições.

Diff(x^3+x^2+x,x$3)=diff(x^3+x^2+x,x$3);

d3

dx3 x

3Cx

2Cx = 6

Obviamente o Maple conhece todas as regras de derivação como regra da cadeia, regra do produtoe da divisão de derivadas.

Diff(sin(cos(x)),x)=diff(sin(cos(x)),x);

ddx

sin cos x = Kcos cos x sin x

Para funções não definidas, o operador D é usado no resultado.

Diff(f(g(x)),x)=diff(f(g(x)),x);

ddx

f g x = D f g x ddx

g x

É possível derivar em função de qualquer variável da epressão.

Diff((x^2+y^3)^4,x,y)=diff((x^2+y^3)^4,x,y);

v2

vy vx x

2Cy

3 4= 72 x

2Cy

3 2 x y2

Para derivadas de funções definidas implitamente poderia ser feito o seguinte procedimento:

diff(x^2+y(x)^2=1,x);

2 xC2 y x ddx

y x = 0

solve(%,diff(y(x),x));

Kx

y x

Porém o comando implicitdiff já resolve diretamente.

implicitdiff(x^2+y^2=1,y,x);

Kx

y

Enquanto o diff é usado para funções, o D é usado para calcular a derivada de operadores.

D(sin);

cos

Page 43: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

(6.2.13)(6.2.13)

OOOO OOOO

(6.2.12)(6.2.12)

OOOO OOOO

OOOO OOOO

(6.2.16)(6.2.16)

(6.2.18)(6.2.18)

OOOO OOOO

(6.2.14)(6.2.14)

(6.2.15)(6.2.15)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

(6.2.17)(6.2.17)

OOOO OOOO

(6.2.19)(6.2.19)

OOOO OOOO

D(sin@cos);

Kcos 2 sin

Quando a função tem vários parâmetros devemos colocar entre colchetes o número correspondente à várivel sobre a qual se deseja derivar.

f:=(x,y)->sin(x)+cos(y)+sin(x*y);

f := x, y /sin x Ccos y Csin y x

D[1](f);

x, y /cos x Ccos y x y

D[2](f);

x, y /Ksin y Ccos y x x

Podemos, ainda, passar novos valores a serem substituídos na expressão do resultado.

D[2](f)(alpha,beta);

Ksin β Ccos β α α

Algumas vezes o formato D é mais desejado, outras o diff se torna mais conveniente. Para mudar de um para outro pode ser usado o comando convert. E o lprint auxilia na visualização da estruturainterna da expressão. Sendo que no Release 5 este comando se torna obsoleto, pois a estrutura interna de uma expressão no format output pode ser obtido no format input posicionando o cursor no próprio resultado e pressionando [Enter].

restart;

diff(f(x,y,z),x,y,z$2);

v4

vz2 vy vx

f x, y, z

convert(%,D);

D1, 2, 3, 3 f x, y, z

lprint(%);

(D[1, 2, 3, 3](f))(x, y, z)

convert(%,diff);

v4

vz2 vy vx

f x, y, z

lprint(%);

diff(diff(diff(diff(f(x, y, z), x), y), z), z)

6.3 Integração

Do ponto de vista matemático, a integração simbólica é mais complexa do que a derivação pois não há um método único que resolva todas as integrais. Existem regras de integração capazes de reduzir expressões em formas de integrais conhecidas ou tabeladas. O Maple possui um extenso acervo de solução algébrica de integrais, mas certamente não resolve todas aquelas existentes na

Page 44: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(6.3.2)(6.3.2)

(6.3.1)(6.3.1)

OOOO OOOO

OOOO OOOO

(6.3.4)(6.3.4)

(6.3.6)(6.3.6)

OOOO OOOO

(6.3.3)(6.3.3)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

(6.3.5)(6.3.5)

matemática. Quando encontrarmos uma dessas é possível encontrar a sua solução numérica.Para fazer uma integração simbólica o comando utilizado é o int sendo que, assim como nos comandos vistos neste capítulo, quando a primeira letra é maiúscula, o comando assume a sua forma inerte.

Int(x^2+x^3,x);

x2Cx

3 dx

value(%);

13

x3C

14

x4

Int(x^2+x^3,x=a..b)=int(x^2+x^3,x=a..b);

a

b

x2Cx

3 dx =13

b3K

13

a3C

14

b4K

14

a4

Para fazer a integral numérica, od limites devem estar definidos

Int(x^2+x^3,x=2..3)=int(x^2+x^3,x=2..3);

2

3

x2Cx

3 dx =27112

O Maple não encontra dificuldade quando o integrando possui uma descontinuidade no intervalo de integração.

f:=cos(x)/sqrt(1-sin(x));

f :=cos x

1Ksin x

plot(f,x=0..2*Pi,discont=true,color=black);

x1 2 3 4 5 6

K1

K0.5

0

0.5

1

Int(f,x=0..2*Pi)=int(f,x=0..2*Pi);

Page 45: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

(6.3.12)(6.3.12)

(6.3.8)(6.3.8)

(6.3.6)(6.3.6)

OOOO OOOO

(6.3.9)(6.3.9)

OOOO OOOO

(6.3.11)(6.3.11)

(6.3.7)(6.3.7)

(6.3.10)(6.3.10)

0

2 πcos x

1Ksin xdx = 0

O Maple reconhece a função degrau (Heaviside) e a função delta de Dirac (Dirac) durante o processo de integração

Int(g(x)*Heaviside(x-2),x=0..5)=int(g(x)*Heaviside(x-2),x=

0..5);

0

5

g x Heaviside xK2 dx =2

5

g x dx

Diff(Heaviside(x),x)=diff(Heaviside(x),x);

ddx

Heaviside x = Dirac x

Int(sin(x)*Dirac(x-Pi/4),x=-infinity..infinity)=int(sin(x)*

Dirac(x-Pi/4),x=-infinity..infinity);

KN

N

sin x Dirac xK14

π dx =12

2

Para representar integrais múltiplas é necessário colocar um comando de integral dentro de outro.

Int(Int(x^2,x=0..2),x=0..3)=int(int(x^2,x=0..2),x=0..3);

0

3

0

2

x2 dx dx = 8

Freqüentemente encontramos integrais que não possuem solução algébrica. Quando o Maple não consegue encontrar uma solução algébrica é retornado a integral na forma inerte. Para encontrar a solução numérca utiliza-se o copmando evalf.

int(sin(1/x^3),x=1..2);

1

2

sin1

x3

dx

evalf(%);

0.3548334332

6.4 Expansão em Séries

O comando que faz a expansão em séries é series. Dependendo da expressão do primeiro parâmetro, este comando pode gerar expansão em Taylor, Laurent ou séries de potência genérica. O segundo parâmetro é o ponto de expansão e o terceiro, a máxima potência da série. Este último é opcional e ser for omitido, o Maple usa o valor da variável global Orderque é inicializado com 6.

Page 46: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(6.4.3)(6.4.3)

OOOO OOOO

(6.4.4)(6.4.4)

OOOO OOOO

OOOO OOOO

(6.4.5)(6.4.5)

OOOO OOOO

OOOO OOOO

OOOO OOOO

(6.4.2)(6.4.2)

(6.4.1)(6.4.1)

series(log(x),x=1);

xK1K12

xK1 2C

13

xK1 3K

14

xK1 4C

15

xK1 5CO xK1 6

series(sin(x),x=0,10);

xK16

x3C

1120

x5K

15040

x7C

1362880

x9CO x

10

O tipo da saída obtido é series que caracterizado por um truncamento (O xK1 6). Por este motivo, os resultados obtidos pelo comando serires não podem ser processados em seguida. Para converter a expansão para um polinômio usa-se o comando convert.

whattype(%);

series

pol:=convert(%%,polynom);

pol := xK16

x3C

1120

x5K

15040

x7C

1362880

x9

O gráfico seguinte mostra a função sin x e a sua expansão em séries até potência 9.

plot([pol,sin(x)],x=0..2*Pi,-1..1,color=black);

x

1 2 3 4 5 6

K1

K0.5

0

0.5

1

O comando mtaylor calcula a expansão em série de Taylor para funções multi-variáveis, pois oseries só efetua o cálculo para apenas uma. As suas sintaxes são iguais, sendo que para a expansãocom muitas variáveis o segundo parâmetro deve ser uma lista de pontos sobre os quais se deseja realizar a expansão. Antes de usar o comando é necessário carregá-lo com readlib.

### WARNING: persistent store makes one-argument readlib

obsolete

readlib(mtaylor);

proc ... end proc

Page 47: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(6.4.6)(6.4.6)

(6.4.7)(6.4.7)

(6.4.11)(6.4.11)

OOOO OOOO

(6.4.10)(6.4.10)

OOOO OOOO

OOOO OOOO

OOOO OOOO

(6.4.12)(6.4.12)

OOOO OOOO

OOOO OOOO

(6.4.13)(6.4.13)

(6.4.9)(6.4.9)

OOOO OOOO

(6.4.8)(6.4.8)

OOOO OOOO

mtaylor(log(x+y),[x=1,y=Pi],3);

ln 1Cπ CxK1

1CπC

yKπ

1CπK

12

xK1 2

1Cπ2K

yKπ xK1

1Cπ2

K12

yKπ

2

1Cπ2

O pacote powseries contém comandos auxiliares para o processamento de séries. Pode ser usado para manipular series que possuem uma regra geral de expansão realizando adições, subtrações, multiplicações, divisões, derivações e inversões destas séries. Devemos carregar o pacote com o comando with.

with(powseries);

compose, evalpow, inverse, multconst, multiply, negative, powadd, powcos, powcreate,

powdiff, powexp, powint, powlog, powpoly, powsin, powsolve, powsqrt, quotient,

reversion, subtract, tpsform

Suponha que queremos calcular a série cuja fórmula geral é:

p(n)=(1+(-1)^(n+1))/2*(-1)^((n-1)/2)/n!;

p n =12

1C K1 nC1 K1

12

nK12

n!

O comando que cria a série é o powcreate que não mostra nenhuma saída mas faz a atribuição a variável p que não pode ter nenhum conteúdo neste momento. O comando tpsform é usado para visualizar a série gerada.

powcreate(%);tpsform(p,x,9);

xK16

x3C

1120

x5K

15040

x7CO x

9

Veja como executar uma operação matemática ou uma inversão com a série criada e compare o resultado obtido com o comando series.

q:=evalpow(p*p):tpsform(q,x,9);

x2K

13

x4C

245

x6K

1315

x8CO x

9

series(sin(x)^2,x,9);

x2K

13

x4C

245

x6K

1315

x8CO x

10

r:=reversion(p):tpsform(r,x,9);

xC16

x3C

340

x5C

5112

x7CO x

9

series(arcsin(x),x,9);

xC16

x3C

340

x5C

5112

x7CO x

9

Page 48: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(6.5.6)(6.5.6)

OOOO OOOO

OOOO OOOO

OOOO OOOO

(6.5.5)(6.5.5)

(6.5.2)(6.5.2)

(6.5.4)(6.5.4)

(6.5.1)(6.5.1)

OOOO OOOO

OOOO OOOO

(6.5.3)(6.5.3)

OOOO OOOO

6.5 O Pacote student: Ferramentas de Cálculo

O pacote student possue ferramentas úteis para o aluno iniciante de cálculo pois demonstram conceitos elementares e fundamentais para o seu apredizado. Ele deve ser carregado com o comando with, que seguido de ponto-e-vírgula imprimie todos os seus comandos.

with(student);

D, Diff, Doubleint, Int, Limit, Lineint, Product, Sum, Tripleint, changevar,

completesquare, distance, equate, integrand, intercept, intparts, leftbox, leftsum,

makeproc, middlebox, middlesum, midpoint, powsubs, rightbox, rightsum,

showtangent, simpson, slope, summand, trapezoid

O exemplo abaixo soluciona uma integral pelo método de substituição de variável que o Maple não consegue resolver sem esta manipulação. Porém outras integrais podem ser resolvidas com este comando para mostrar o procedimento do método.

A:=Int(tan(1/3*arctan(x)),x=0..1);

A :=0

1

tan13

arctan x dx

value(%);

0

1

tan13

arctan x dx

changevar(1/3*arctan(x)=theta,A,theta);

0

112

π

tan θ 3C3 tan 3 θ2

value(%);

118

1

sin5

12 π

2

4 sin5

12 π

2

K3

K60 sin5

12 π

4

C69 sin5

12 π

2

C32 ln 4 sin5

12 π

2

K3 sin5

12 π

4

C48 ln sin5

12 π sin

512

π2

K24 ln 4 sin5

12 π

2

K3 sin5

12 π

2

K64 ln sin5

12 π sin

512

π4

K9

Foi visto anteriormente que uma integral dupla pode ser definida pela inserção em cascata do comando int. No pacote student existem os comandos Doubleint e Tripleint para representar integrais duplas e triplas respectivamente.

inter:=-infinity..infinity;

Page 49: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(6.5.7)(6.5.7)

(6.5.6)(6.5.6)

(6.5.8)(6.5.8)

(6.5.9)(6.5.9)

OOOO OOOO

OOOO OOOO

OOOO OOOO

(6.5.11)(6.5.11)

OOOO OOOO

OOOO OOOO

(6.5.10)(6.5.10)

OOOO OOOO

inter := KN ..N

Doubleint(exp(-x^2-y^2),x=inter,y=inter);

KN

N

KN

N

eKx2Ky2 dx dy

value(%);

π

Para mostrar como uma aproximação numérica de integrais opera podemos utilizar os comandoleftbox, middlebox ou rightbox. Com eles pode-se visualizar os retângulos representando as áreas que serão somadas na aproximação.

leftbox(sqrt(x),x=1..3,8);

x1 1.5 2 2.5 3

0

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

O valor da aproximação é calculado com leftsum, middlesum ou rightsum que pode ser expresso por um somátório e por ponto flutuante. Compare o resultado com a integração numérica do Maple.

leftsum(sqrt(x),x=1..3,8)=evalf(leftsum(sqrt(x),x=1..3,8));

14

>i = 0

7

1C14

i = 2.704829825

1/4*Sum(sqrt(1+1/4*i),i = 0 .. 7) =

2.704829825827190957978159653324903678488;

14

>i = 0

712

4Ci = 2.704829825827190957978159653324903678488

Int(sqrt(x),x=1..3)=int(sqrt(x),x=1..3.0);

1

3

x dx = 2.797434948

Page 50: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(6.6.1)(6.6.1)

(6.6.7)(6.6.7)

(6.6.2)(6.6.2)

(6.6.9)(6.6.9)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

(6.6.5)(6.6.5)

(6.6.6)(6.6.6)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

(6.6.3)(6.6.3)

(6.6.8)(6.6.8)

OOOO OOOO

(6.6.4)(6.6.4)

OOOO OOOO

6.6 Cálculo Vetorial

As operações gradiente, divergente, rotacional e laplaciano estão programadas no Maple como as funções grad, diverge, curl e laplacian. Estes comandos devem ter no mínimo dois argumentos, onde o primeiro é uma função, ou melhor, uma expressão que depende de certas variáveis, e o segundo uma lista de variáveis que representam as coordenadas. O sistema de coordenadasdefault é o sistema cartesiano. Vamos dar uma apelido para a expressão f(x,y,z), e calcular o gradiente, divergente o laplaciano desta função:

restart;with(linalg):

alias(f=f(x,y,z));

f

v:=[x,y,z]; # lista das coordenadas

v := x, y, z

grad(f,v);

v

vx f

v

vy f

v

vz f

diverge(%,v);

v2

vx2

fCv2

vy2

fCv2

vz2

f

laplacian(f,v);

v2

vx2

fCv2

vy2

fCv2

vz2

f

O rotacional deve ser aplicado a uma função vetorial. Assim, vamos dar apelidos para g(x,y,z) e h(x,y,z):

alias(g=g(x,y,z),h=h(x,y,z));

f, g, h

curl([f,g,h],v);

v

vy hK

v

vz g

v

vz fK

v

vx h

v

vx gK

v

vy f

Podemos confirmar que o divergente do rotacional é zero:

diverge(%,v);

0

e, da mesma forma, confirmar que o rotacional do gradiente é o vetor nulo:

curl(grad(f,v), v);

0 0 0

Todas estas operações podem ser feitas em sistemas de coordenadas não-cartesianos. Vamos ver um exemplo de cálculo de gradiente no sistema de coordenadas esféricas:

Page 51: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

(6.6.12)(6.6.12)

OOOO OOOO

OOOO OOOO

(6.7.3)(6.7.3)

OOOO OOOO

OOOO OOOO

(6.7.2)(6.7.2)

(6.7.4)(6.7.4)

(6.7.5)(6.7.5)

OOOO OOOO

(6.6.11)(6.6.11)OOOO OOOO

(6.7.1)(6.7.1)

OOOO OOOO

OOOO OOOO

(6.6.10)(6.6.10)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

f1 := r^2*sin(theta)*cos(phi);

f1 := r2 sin θ cos φ

v:= [r, theta, phi];

v := r, θ, φ

grad(f1, v, coords=spherical);

2 r sin θ cos φ r cos θ cos φ Kr sin φ

Além de coordenadas cartesianas, esféricas e cilíndricas que são as mais utilizadas, o Maple conhece mais de 40 sistemas de coordenadas em 2 e 3 dimensões. Para ter acesso a lista completa destes sistemas, pedimos ajuda da forma ?coords.

6.7 Exercícios1. Explique porque os seguintes comandos chegam a zero em vez de 2 xC2 yC2 z

F:=[x^2,y^2,z^2]:

X:=[x,y,z]:

sum('diff(F[i],X[i])',i=1..3);

2 xC2 yC2 z

for i to 3 do diff(F[i],X[i]); od;

2 x

2 y

2 z

2. Seja f x = x3Csin arctan x Ktan arcsin x .

(a) Encontre a primeira e a segunda derivadas de menores ordens que possuem um valor não nulo em x = 0 e os seus valores correspondentes.

f:= x^3+sin(arctan(x))-tan(arcsin(x));

f := x3C

x

1Cx2

Kx

1Kx2

i:=1;

i := 1

f[0]:=f;

f0 := x3C

x

1Cx2

Kx

1Kx2

g:=0:

while g=0 do

f[i]:=diff(f[i-1],x):

g:=subs(x=0,f[i]):

i:=i+1:

Page 52: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(6.7.7)(6.7.7)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

(6.7.10)(6.7.10)

OOOO OOOO

(6.7.8)(6.7.8)

OOOO OOOO

OOOO OOOO

(6.7.9)(6.7.9)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

(6.7.6)(6.7.6)

OOOO OOOO

od:

'i'=i-1;

i = 7

f[i+1]:=diff(f[i],x):

diff('f(x)',x$i)=f[i-1];

d8

dx8

f x =291060 x6

1Cx2 13/2

K198450 x4

1Cx2 11/2

C44100 x2

1Cx2 9/2

K1575

1Cx2 7/2

K135135 x8

1Cx2 15/2

K291060 x6

1Kx2 13/2

K198450 x4

1Kx2 11/2

K44100 x2

1Kx2 9/2

K1575

1Kx2 7/2

K135135 x8

1Kx2 15/2

i:=9:

g:=0:

while g=0 do

f[i]:=diff(f[i-1],x):

g:=subs(x=0,f[i]):

i:=i+1:

od:

'i'=i-1;

i = 9

(b) Deduza a regra geral para a ordem das derivadas não nulas em x = 0.(c) Plote f x nos intervalo x=-10..10 e x = K0.001 ..0.001.

3. Com o auxílio do Maple resolva as seguintes integrais:

(a) 1

x

15Kx

13

dx

(b) x ln 2 xC 1Cx2 dx

A:=int(x*ln(2*x+sqrt(1+x^2)),x);

A := x ln 2 xC 1Cx2 dx

u:=op(1,A)/x;

u := ln 2 xC 1Cx2

Page 53: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

(6.7.16)(6.7.16)

(6.7.15)(6.7.15)

OOOO OOOO

(6.7.14)(6.7.14)

OOOO OOOO

OOOO OOOO

(6.7.13)(6.7.13)

(6.7.11)(6.7.11)

OOOO OOOO

(6.7.12)(6.7.12)

diff(u,x);

2Cx

1Cx2

2 xC 1Cx2

v:=x^2/2;

v :=12

x2

A2:=u*v-int(v*diff(u,x),x);

A2 :=12

ln 2 xC 1Cx2 x2

K14

x2K

112

ln 3 x2K1 C

13

arcsinh x

C1

12 arctanh

34

83

K23

3 xC13

3 3

9 xC13

32

K6 3 xC13

3 C12

K1

12 arctanh

34

83

C23

3 xK13

3 3

9 xK13

32

C6 3 xK13

3 C12

Outro procedimento utilizando o pacote student:

with(student);

D, Diff, Doubleint, Int, Limit, Lineint, Product, Sum, Tripleint, changevar,

completesquare, distance, equate, integrand, intercept, intparts, leftbox, leftsum,

makeproc, middlebox, middlesum, midpoint, powsubs, rightbox, rightsum,

showtangent, simpson, slope, summand, trapezoid

intparts(Int(x*ln(2*x+sqrt(1+x^2)),x),ln(2*x+sqrt(1+x^2)));

12

ln 2 xC 1Cx2 x2

K12

x2 2C

x

1Cx2

2 xC 1Cx2

dx

value(%);

12

ln 2 xC 1Cx2 x2

K14

x2K

112

ln 3 x2K1 C

13

arcsinh x

C1

12 arctanh

34

83

K23

3 xC13

3 3

9 xC13

32

K6 3 xC13

3 C12

Page 54: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

(6.7.20)(6.7.20)

(6.7.19)(6.7.19)

OOOO OOOO

(6.7.21)(6.7.21)

OOOO OOOO

OOOO OOOO

OOOO OOOO

(6.7.17)(6.7.17)

(6.7.18)(6.7.18)

OOOO OOOO

(6.7.22)(6.7.22)

K1

12 arctanh

34

83

C23

3 xK13

3 3

9 xK13

32

C6 3 xK13

3 C12

(c) K1

0

x2Kx

4 dx

4. Use o Maple para decidir se as séries convergem ou divergem:

(a)>n = 2

N

1ln n

sum(1/ln(n),n = 2 .. infinity);

>n = 2

N

1ln n

value(%);

>n = 2

N

1ln n

(b)>n = 1

N

n!2 n !

S:=Sum(n!/(2*n)!,n = 1 .. infinity);

S := >n = 1

N

n!2 n !

value(S);

K14

4 e

14 π K1Cerfc

12

(c)>n = 1

N

sin1n

S:=Sum(sin(1/n),n = 1 .. infinity);

S := >n = 1

N

sin1n

value(S);

>n = 1

N

sin1n

Page 55: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

(6.7.23)(6.7.23)

OOOO OOOO

OOOO OOOO

(6.7.24)(6.7.24)

(6.7.26)(6.7.26)

OOOO OOOO

(6.7.25)(6.7.25)

OOOO OOOO

5. calcule a derivada da função f x = max x3, x .

f:=max(x^3,x);

f := max x, x3

plot(f,x=-2..2);

x

K2 K1 0 1 2

K2

2

4

6

8

diff(f,x);

1 x !K1

undefined x = K1

3 x2x ! 0

undefined x = 0

1 x ! 1

undefined x = 1

3 x2 1 ! x

6. Seja a função y x definida implicitamente por x C y = 1. Calcule a derivada y' e a segundaderivada y''.

eq:=sqrt(x)+sqrt(y) = 1;

eq := x C y = 1

implicitdiff(eq,y,x);

Ky

x

7. Seja a função de duas variáveis z x, y implicitamente definida por h x, y, z = 0, para uma

função de três variáveis h. Determine a fórmula para

Page 56: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(6.7.32)(6.7.32)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

(6.7.28)(6.7.28)

(6.7.27)(6.7.27)

OOOO OOOO

(6.7.33)(6.7.33)

(6.7.31)(6.7.31)

(6.7.29)(6.7.29)

OOOO OOOO

(6.7.30)(6.7.30)

v

vx z e

v2

vy vx z. Qual é o resultado para

h = x C y C z K1?

restart:

d1:=implicitdiff(h(x,y,z),z(x,y),x);

d1 := KD1 h x, y, z

D3 h x, y, z

d2:=implicitdiff(h(x,y,z),z(x,y),x,y);

d2 :=1

D3 h x, y, z3

KD1, 2 h x, y, z D3 h x, y, z2CD1, 3 h x, y, z D2 h x,

y, z D3 h x, y, z CD1 h x, y, z D2, 3 h x, y, z D3 h x, y, z KD1 h x, y,

z D3, 3 h x, y, z D2 h x, y, z

h := sqrt(x)+sqrt(y)+sqrt(z)-1:

d1:=implicitdiff(h,z,x);

d1 := Kz

x

d2:=implicitdiff(h,z,x,y);

d2 :=1

2 x y

8. Calcule as seguintes integrais definidas:

(a)

1

10

4 x4C4 x3

K2 x2K10 xC6

x5C7 x4

C16 x3C10 x2

dx

Int((4*x^4+4*x^3-2*x^2-10*x+6)/(x^5+7*x^4+16*x^3+10*x^2),x

= 1 .. 10);

1

10

4 x4C4 x3

K2 x2K10 xC6

x5C7 x4

C16 x3C10 x2

dx

value(%);

2750

C30825

arctan 4 K15950

ln 2 K30825

arctan 13 K1950

ln 5 C145

ln 11

evalf(%);

2.366004897

Page 57: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

(6.7.36)(6.7.36)

OOOO OOOO

OOOO OOOO

OOOO OOOO

(6.7.34)(6.7.34)

OOOO OOOO

(6.7.35)(6.7.35)

OOOO OOOO

(6.7.37)(6.7.37)

(6.7.38)(6.7.38)

(b) 0

π

2

x4 sin x cos x dx

(c)

17

15

1

x 5 x2K6 xC1

dx

(d) K2

K11x

dx

9. Calcule as seguintes integrais definidas:

(a)

0

1

1

1Kx2

dx

(b) 0

N

eKa x cos b x 2 dx, para um número real positivo a.

Int(exp(-a*x)*cos(b*x)^2,x = 0 .. infinity);

0

N

eKa x cos b x 2 dx

assume(a>0):

value(%);

a~2C2 b2

a~2C4 b2 a~

(c) 0

N

eKx ln x dx

int(exp(-x)*ln(x),x = 0 .. infinity);

evalf(%);

K0.5772156649

restart:

(d)

0

N

eK t

t

14 1KeK t

dt

int(exp(-sqrt(t))/(t^(1/4)*sqrt(1-exp(-sqrt(t)))),t = 0 ..

infinity);

Page 58: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

(6.7.40)(6.7.40)

OOOO OOOO

(6.7.42)(6.7.42)

(6.7.43)(6.7.43)

(6.7.41)(6.7.41)

OOOO OOOO

OOOO OOOO

OOOO OOOO

(6.7.38)(6.7.38)

(6.7.39)(6.7.39)

OOOO OOOO

0

N

eK t

t1/4 1KeK t

dt

(e)

1

N

1

x4K1

dx

int(1/sqrt(x^4-1),x = 1 .. infinity);

12

2 EllipticK12

2

(f) 0

π

2

tan x dx

int(sqrt(tan(x)),x = 0 .. Pi/2);

12

π 2

(g) 0

N1

cosh a xdx, para um número real positivo a.

10. Calcule 0

Nln x

xCa xK1dx, para a positivo.

int(ln(x)/((x+a)*(x-1)),x = 0 .. infinity);

undefined a ! 0

12

π

2Cln

1a

2

1Caotherwise

11. Calcule ln x

2C1

x2C1

dx.

A:=Int(ln(x^2+1)/(x^2+1),x);

A :=ln x

2C1

x2C1

dx

with(student):

intparts(A,ln(x^2+1),x);

Page 59: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

(6.7.44)(6.7.44)

(6.7.50)(6.7.50)

OOOO OOOO

(6.7.48)(6.7.48)

OOOO OOOO

(6.7.45)(6.7.45)

(6.7.43)(6.7.43)

(6.7.49)(6.7.49)

(6.7.46)(6.7.46)

(6.7.47)(6.7.47)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

ln x2C1 arctan x K

2 x arctan x

x2C1

dx

12. Calcule o produto dos primeiros 32 números primos.

nextprime(2);

3

restart:

product(ithprime(i),i=1..32);

525896479052627740771371797072411912900610967452630

13. Calcule os seguintes limites:

(a) limx/0

sin x

x

limit(sin(x)/x,x = 0);

1

(b) limx/0

sin x

1x

limit(sin(x)^(1/x),x = 0);

undefined

(c) limx/0

1Kcos x

x

limit((1-cos(x))/x,x = 0);

0

(d) limx/N

1Cπ

x

x

limit((1+Pi/x)^x,x = infinity);

(e) limx/0

xsin x

limit(x^sin(x),x = 0);

1

(f) limx/N

2xC3x

1x

14. Calcule os seguintes limites:

(a) limx/N

ln x

x

(b) limx/N

ln x

ex

(c) limx/N

x2Csin x

2 x2Ccos 4 x

Page 60: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

(7.1.1)(7.1.1)OOOO OOOO

OOOO OOOO

(6.7.51)(6.7.51)OOOO OOOO

OOOO OOOO

(6.7.52)(6.7.52)

(d) limx/0

1

1CeK

1x

limit(1/(1+exp(-1/x)),x = 0);

undefined

(e) limx/N

sinh tanh x Ktanh sinh x

limit(sinh(tanh(x))-tanh(sinh(x)),x = infinity);

12

e K12

eK1K1

7. Álgebra linear

7.1 IntroduçãoOs comandos de Álgebra Linear formam um pacote chamado linalg, que deve ser carregado com o comando with:

restart;

with(linalg):

Normalmente, terminarmos o comando de carregar pacotes com dois pontos para que as funções do pacote não sejam mostradas. Somente as mensagens de aviso de redefinição de comandos serão mostradas. Isto é o que acontece com os comandos norm e trace, que servem primeiramente para calcular norma de polinômios e para correção de procedimentos, respectivamente. Após o pacote linalg ser carregado, eles passam a calcular norma de vetores e traço de matrizes. No presente contexto, queremos saber quais são estas funções:

with(linalg);

BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp, QRdecomp, Wronskian,

addcol, addrow, adj, adjoint, angle, augment, backsub, band, basis, bezout,

blockmatrix, charmat, charpoly, cholesky, col, coldim, colspace, colspan, companion,

concat, cond, copyinto, crossprod, curl, definite, delcols, delrows, det, diag, diverge,

dotprod, eigenvals, eigenvalues, eigenvectors, eigenvects, entermatrix, equal,

exponential, extend, ffgausselim, fibonacci, forwardsub, frobenius, gausselim,

gaussjord, geneqns, genmatrix, grad, hadamard, hermite, hessian, hilbert,

htranspose, ihermite, indexfunc, innerprod, intbasis, inverse, ismith, issimilar, iszero,

jacobian, jordan, kernel, laplacian, leastsqrs, linsolve, matadd, matrix, minor,

minpoly, mulcol, mulrow, multiply, norm, normalize, nullspace, orthog, permanent,

pivot, potential, randmatrix, randvector, rank, ratform, row, rowdim, rowspace,

rowspan, rref, scalarmul, singularvals, smith, stackmatrix, submatrix, subvector,

Page 61: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(7.2.1)(7.2.1)

(7.2.5)(7.2.5)

(7.2.3)(7.2.3)

(7.2.2)(7.2.2)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

(7.2.4)(7.2.4)

OOOO OOOO

OOOO OOOO

sumbasis, swapcol, swaprow, sylvester, toeplitz, trace, transpose, vandermonde,

vecpotent, vectdim, vector, wronskian

7.2 Definindo matrizes

Os comandos do pacote linalg para definir matrizes são: matrix, entermatrix, genmatrix, randmatrix, band e diag. A título de exemplo, vamos definir duas matrizes e gravá-las nas variáveis A e B:

A := matrix( [ [1,2,3], [4,5,6] ] );

A :=1 2 3

4 5 6

B := matrix(3, 2, [a,1,1,d,e,1] );

B :=

a 1

1 d

e 1

Na primeira matriz, entramos os elementos fornecendo cada linha na forma de uma lista. Neste caso, não é necessário especificar as dimensões da matriz. Na segunda, primeiro estipulamos as dimensões da matriz como sendo 3x2, depois fornecemos todos os elementos numa única lista. O próprio Maple separa as linhas de acordo com as dimensões da matriz.

Podemos declarar C como matriz e depois definir as componentes:

C:=matrix(2,2);

C := array 1 ..2, 1 ..2,

C[1,1]:=1;C[1,2]:=3;C[2,2]:=4;C[2,1]:=-2;

C1, 1 := 1

C1, 2 := 3

C2, 2 := 4

C2, 1 := K2

Após a matriz ter sido definida, é possível trocar um elemento. Temos que atribuir o novo valor ao elemento correspondente. Por exemplo, vamos trocar 1/6 por 1/7 na posição <2,2> da matrizC:

C[2,2] := 1/7;

C2, 2 :=17

Vamos verificar que a mudança foi feita com sucesso. Para ver os elementos de uma matriz temos que usar algum comando de avaliação, por exemplo evalm:

evalm(C);

Page 62: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(7.2.6)(7.2.6)

(7.2.7)(7.2.7)

OOOO OOOO

OOOO OOOO

OOOO OOOO

(7.2.9)(7.2.9)

(7.2.8)(7.2.8)

1 3

K217

As operações de soma e potenciação de matrizes são feitas com os operadores ``+'' e ``^'' usuais de soma e potenciação de números. A multiplicação de matrizes, não sendo comutativa, é feita pelo operador ``&*'' (ampersand vezes). As expressões matriciais devem ser envolvidas pelo comando evalm, acrônimo de evaluate in matrix context. Por exemplo:

evalm((A&*B + C)^(-1));

K71C35 d

125 aC21 a dK66K63 dC81 eK21 e d,

7 7C2 d125 aC21 a dK66K63 dC81 eK21 e d

,

7 4 aC3C6 e125 aC21 a dK66K63 dC81 eK21 e d

,

K7 aC3C3 e

125 aC21 a dK66K63 dC81 eK21 e d

A potenciação por um número negativo, quer dizer a inversão da matriz, e subseqüente potenciação pelo módulo do número. A inversa também pode ser encontrada através do comandoinverse:

inverse(matrix([[a,b],[c,d]]));

d

a dKb cK

b

a dKb c

Kc

a dKb ca

a dKb c

Quando uma matriz tem uma regra de formação, é possível repassar esta regra como terceiro argumento do comando matrix. Os dois primeiros argumentos devem ser as dimensões da matriz. Suponha que queiramos definir uma matriz de dimensão 3x4, onde o elemento <i,j> é dado por i

j:

matrix(3, 4, (i,j) -> i/j);

112

13

14

2 123

12

332

134

Existem várias matrizes especiais que são usadas com frequência em Álgebra Linear. Muitas delas têm comandos específicos para gerá-las. Por exemplo, as matrizes diagonais quadradas

Page 63: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

(7.2.12)(7.2.12)

OOOO OOOO

(7.2.14)(7.2.14)

OOOO OOOO

(7.2.11)(7.2.11)

OOOO OOOO

OOOO OOOO

(7.2.10)(7.2.10)

(7.2.13)(7.2.13)

(7.2.15)(7.2.15)

podem ser geradas através do comando diag. Neste caso, é bem mais econômico entrar os elementos através deste comando do que com o comando matrix, pois neste último, teríamos que fornecer os zeros fora da diagoanal. Vejamos alguns exemplos:

diag(1,2,3,4);

1 0 0 0

0 2 0 0

0 0 3 0

0 0 0 4

diag(a$3);

a 0 0

0 a 0

0 0 a

O comando a$3 gera uma sequência de três elementos a, de forma que o último comando dado acima é equivalente a diag(a,a,a). Podemos também criar matrizes diagonais em bloco. Vamos usar a matriz C, definida acima com o comando entermatrix, para criar a seguinte matriz:

diag(C,C);

1 3 0 0

K217

0 0

0 0 1 3

0 0 K217

Um caso particular de matriz diagonal é a matriz identidade. Ela pode ser criada com o comandodiag, da seguinte forma: diag(1$n), onde n é a dimensão da matriz identidade. Existem outras formas não equivalentes de definir a matriz identidade. Podemos definí-la com o comando array com a função de indexação identity. Por exemplo:

ID := array(identity, 1..3, 1..3);

ID := array identity, 1 ..3, 1 ..3,

evalm(ID);

1 0 0

0 1 0

0 0 1

Existe uma forma mais abstrata da matriz identidade no Maple que é ``&*( )''. Esta forma assume a repesentação usual dependendo do contexto. Por exemplo:

evalm(C - &*()*lambda);

Page 64: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(7.2.19)(7.2.19)

OOOO OOOO

(7.2.16)(7.2.16)

OOOO OOOO

(7.2.17)(7.2.17)

OOOO OOOO

(7.2.18)(7.2.18)

OOOO OOOO

(7.2.15)(7.2.15)1Kλ 3

K217

Neste exemplo, a matriz ``&*( )'' assumiu a dimensão 2 porque ela está somada a matriz C que tem dimensão 2. Na maioria dos casos, não é necessário usar a matriz identidade, pois o Maple assume que, quando um número está somando a uma matriz, este número está multiplicado pela matriz identidade de dimensão conveniente. De forma que o comando acima é equivalente ao comando evalm(C-lambda).

Vamos ver outras matrizes especiais. Se a matriz for uma faixa em torno da diagonal, podemos usar o comando band:

band([-1,1,2],4);

1 2 0 0

K1 1 2 0

0 K1 1 2

0 0 K1 1

O último argumento é a dimensão da matriz. O primeiro argumento é a lista dos elementos da faixa.

A matriz de Toeplitz é gerada pelo comando toeplitz:toeplitz([alpha,1,beta,2]);

α 1 β 2

1 α 1 β

β 1 α 1

2 β 1 α

A matriz Jacobiana é criada pelo comando jacobian. O exemplo a seguir mostra claramente como os elementos são calculados. O comando alias foi usado para expressar a dependência das funçõesf, g e h em relação às variáveis x, y e z.

alias(f=f(x,y,z),g=g(x,y,z),h=h(x,y,z));

f, g, h

jacobian([f,g,h],[x,y,z]);

v

vx f

v

vy f

v

vz f

v

vx g

v

vy g

v

vz g

v

vx h

v

vy h

v

vz h

Page 65: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(7.3.4)(7.3.4)

(7.3.2)(7.3.2)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

(7.3.3)(7.3.3)

OOOO OOOO

(7.3.1)(7.3.1)

(7.2.20)(7.2.20)

OOOO OOOO

Para criar matrizes com valores randômicos o comando randmatrix é usado. Como parâmetro adicional pode ser usado sparse, symmetric, unimodular e entries. No exemplo abaixo limitamos ointervalo de escolha aleatória dos números de 0 a 10, quando esta opção é omitida os valores podem estar entre -99 e 99.

randmatrix(2,2,entries=rand(0..10));

6 9

5 1

O comando hilbert cria a matriz de Hilbert. O comando sylvester cria a matriz de Sylvester a partir de dois polinômios, e o comando frobenius cria a matriz na forma canônica racional de outra matriz. Podemos citar ainda os comandos como hessian, hermite e smith entre outros.

7.3 Manipulação de matrizes

Os principais comandos para manipulação estrutural com matrizes são: addcol, addrow, augment, col, row, coldim, rowdim, concat, copyinto, delcols, delrows, extend, mulrow, mulcol, stack, submatrix, swapcol e swaprow. A maioria dos nomes dos comandos falam por si só. As terminações ou prefixos row e col se referem a linha e coluna, respectivamente. O comandocoldim, por exemplo, fornece o número de colunas da matriz. O comando swaprow troca duas linha de uma matriz. Vejamos alguns exemplos. Primeiro, vamos criar duas matrizes genéricas A e B:

A := matrix(2,3, (i,j) -> A.i.j);

Error, recursive assignment

B := matrix(2,3, (i,j) -> beta.i.j);

B :=β 2 β 3 β

2 β 4 β 6 β

Podemos juntar as matrizes A e B lateralmente com o comando augment, e verticalmente com o comando stackmatrix:

augment(A,B);

1 2 3 β 2 β 3 β

4 5 6 2 β 4 β 6 β

stackmatrix(A,B);

1 2 3

4 5 6

β 2 β 3 β

2 β 4 β 6 β

Podemos extrair uma sub-matriz de uma matriz com o comando submatrix:submatrix(%,2..3,1..2);

Page 66: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(7.3.9)(7.3.9)

OOOO OOOO

OOOO OOOO

(7.3.7)(7.3.7)

(7.3.6)(7.3.6)

(7.3.4)(7.3.4)

OOOO OOOO

(7.3.10)(7.3.10)

OOOO OOOO

OOOO OOOO

OOOO OOOO

(7.3.5)(7.3.5)

(7.3.11)(7.3.11)

OOOO OOOO

(7.3.8)(7.3.8)

4 5

β 2 β

Podemos multiplicar uma determinada coluna de uma matriz por um escalar:

mulcol(A,1,alpha);

α 2 3

4 α 5 6

Usando o último resultado, podemos apagar uma ou mais linha com o comando delrows:delrows(%,2..2);

α 2 3

A manipulação aritméticas de matrizes, além dos comandos de soma e ponteciação vistos, abrange os comandos transpose, det, trace, rank e map entre outros.

A:=matrix([[1,2,3],[4,-5,6],[9,8,7]]);

A :=

1 2 3

4 K5 6

9 8 7

O comando transpose calcula a transposta.

transpose(A);

1 4 9

2 K5 8

3 6 7

O determinante é calculado pelo det.det(A);

200

O trace retorna o traço da matriz.

trace(A);

3

A matriz inversa de A pode ser obtida da seguinte forma:

evalm(A^(-1));

Page 67: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(7.3.15)(7.3.15)

(7.3.13)(7.3.13)

OOOO OOOO

(7.3.14)(7.3.14)

OOOO OOOO

OOOO OOOO

OOOO OOOO

(7.3.16)(7.3.16)

(7.3.12)(7.3.12)OOOO OOOO

(7.3.11)(7.3.11)

K83

2001

2027

200

13100

K1

103

100

77200

120

K13

200

O rank mostra o número de linhas ou de colunas linearmente indepententes existentes na matriz (posto):

rank(A);

3

rank([[1,2],[3,6]]);

1

O map será visto em maiores detalhes na parte de programação mas por enquanto nos serve para realizar a mesma operação para todos os elementos da matriz.

map(x->x^2,A);

1 4 9

16 25 36

81 64 49

O maple também é capaz de resolver um sistemas de equação em forma de matriz. O comando é olinsolve que encontra o vetor solução x do sistema A*x = b.

b:=vector([14,12,46]);

b := 14 12 46

linsolve(A,b);

1 2 3

8. Programação básicaA linguagem de programação do Maple e a linguagem que o usuário emprega quando está fazendo um cálculo para resolver um certo problema, são as mesmas. Os comandos para resolver um problema específico poderão ser usados no momento da elaboração de um programa. E vice-versa, qualquer comando de programação pode ser usado no modo interativo. Existem alguns comandos que são frequentemente utilizados em programas e que raramente são utilizados de modo interativo. Por exemplo, o comando for do od para gerar iterações, em geral, só é empregado em programação.O Maple é uma linguagem interativa, porque ele permite que cada comando venha imediatamente acompanhado de sua resposta. Isso não quer dizer que não seja possível agrupar uma série de comandos, cuja resposta é dada por bloco. Na verdade, é isso que faz um programa. Estamos chamando de ``uso interativo'', o modo comando-resposta que geralmente é empregado para resolver problemas específicos. A título de exemplo, vamos resolver dois problemas simples usando o modo interativo. A partir da solução particular, vamos transformá-la em um programa, que é capaz de resolver o problema proposto e qualquer outro do mesmo tipo.

Page 68: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(8.1.1)(8.1.1)

OOOO OOOO

(8.1.3)(8.1.3)

(8.1.2)(8.1.2)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

Um programa de Maple é essencialmente um grupo de comandos pré-definidos que o Maple sempre executa em conjunto. O modo mais simples para criar um programa de Maple (ou procedimento) é encapsular a sequência de comandos que seriam usados de modo interativo. Vamos inicialmente ver os procedimentos iterativos.

Iterações (Renato Portugal)Existem duas formas de executar iterações através do comando for:for contador from valor_inicial by intervalo to valor_final while expressão_booleanado comando_1; comando_2; comando_3; ... od;efor variável in expressão while expressão_booleanado comando_1; comando_2; comando_3; ... od;Vejamos um exemplo da primeira forma. Os números pares podem ser gerados da seguinte forma.

restart:

for i to 5 do 2*i; od;

2

4

6

8

10

Na ausência do comando from, o valor inicial do contador é 1. Um forma quase equivalente do mesmo comando é

for i from 2 by 2 to 10 do i; od;

2

4

6

8

10

Segue um exemplo da segunda forma de executar iterações. Seja L uma lista de funções.

L:=[exp(x^2),x^3,ln(x)];

L := ex2, x3, ln x

Queremos calcular uma aproximação para integral definida de 1 a 2 dessas funções.

for i in L do Int(i,x=1..2)=evalf(int(i,x=1..2)); od;

1

2

ex2 dx = 14.98997601

Page 69: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

(8.1.7)(8.1.7)

OOOO OOOO

(8.1.4)(8.1.4)

OOOO OOOO

(8.1.5)(8.1.5)

(8.1.10)(8.1.10)

(8.1.11)(8.1.11)

(8.1.8)(8.1.8)

OOOO OOOO

(8.1.6)(8.1.6)

OOOO OOOO

(8.1.9)(8.1.9)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

1

2

x3 dx = 3.750000000

1

2

ln x dx = 0.386294361

Note que o contador i no comando acima recebe funções como valor. Vejamos o valor final de i.

i;

ln x

Considere o seguinte problema. Suponha que temos uma lista de funções na variável x.

L := [ x^2, g(x), sin(x), a*exp(x^2)];

L := x2, g x , sin x , a ex2

Queremos construir a lista das derivadas. O próximo comando não resolve o problema.

for i in L do diff(i,x); od;

2 x

ddx

g x

cos x

2 a x ex2

A solução através do uso do comando de iteração requer primeiramente a inicialização de uma lista nula.

derivadas := [ ];

derivadas :=

Agora vem a iteração.

for i in L do

derivadas := [ op(derivadas), diff(i, x) ];

od:

Note que terminamos o comando for do od com dois pontos para que nada seja mostrado na tela. Os comandos dentro da iteração podem terminar com dois pontos ou ponto e vírgula. Isso não tem efeito algum em termos de mostrar resultados na tela. Vejamos o resultado.

derivadas;

2 x,ddx

g x , cos x , 2 a x ex2

O valor que o contador assume no final da iteração pode ser importante, como é o caso no seguinte problema. Qual é o maior número primo menor que 808?

for i from 808 by -1 while not isprime(i) do od;

O valor do contador contém a informação que desejamos:

i;

797

Exceto o do od, todos os outras partes são opcionais. Vejamos um exemplo do comando while. Suponha que N tem o valor 68.

N := 68;

Page 70: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

OOOO OOOO

(8.1.12)(8.1.12)

(8.1.16)(8.1.16)

(8.1.14)(8.1.14)

(8.1.17)(8.1.17)

(8.1.11)(8.1.11)

OOOO OOOO

OOOO OOOO

OOOO OOOO

(8.1.15)(8.1.15)

(8.1.13)(8.1.13)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

N := 68

Queremos dividir N por 2 enquanto N for par.

while type(N,even) do N := N/2 od;

N := 34

N := 17

Existem dois nomes especiais para serem usados dentro de iterações que são break e next. A variável break faz com que a iteração seja imediatamente interrompida. Por exemplo, no comandoseguinte conseguimos interromper a iteração sem que o contador tenha um valor final.

i:=0;

i := 0

do

i:=i+1;

if i=2 then break fi;

od;

i := 1

i := 2

A variável next por sua vez não interrompe a iteração, mas quando avaliada faz com que uma volta seja pulada. Vamos imprimir os números ímpares da seguinte forma.

for i to 10 do

if type(i,odd) then next fi;

print(i);

od;

2

4

6

8

10

Existem três formas particulares do comando for que são seq, add e mul. A sintaxe desses comandos são iguais, de forma que vamos apenas descrever o comando add que executa um somatório. A sua sintaxe é uma das seguintes formas

add f, i = a ..badd f, i = Londe f é uma expressão que geralmente depende do índice i. Na primeira forma, o índice i assume valores inteiros de a até b, onde a e b tem que ser numéricos. Na segunda forma o índice assume valores da expressão ou estrutura de dados L. Por exemplo

add( a[i]*x^i, i=0..5 );

a0Ca1 xCa2 x2Ca3 x

3Ca4 x

4Ca5 x

5

add( sin(i), i=[theta,omega,tau]);

sin θ Csin ω Csin τ

Page 71: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

(8.2.1)(8.2.1)

(8.2.2)(8.2.2)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

ProcedimentosJá vimos procedimentos que definem funções. Vamos examinar agora como dar um nome e encapsular de forma eficiente uma sequência de comandos. Vamos construir um procedimento, chamado plotdif que plota uma expressão f(x), junto com sua derivada f '(x), no intervalo a, b . Interativamente podemos computar a derivada da função utilizando diff e plotar as duas funções utilizando plot . Por exemplo:

y:=x^3-4*x^2-3*x-4;

y := x3K4 x2

K3 xK4

dy:=diff(y,x);

dy := 3 x2K8 xK3

plot([y,dy],x=-2..7,color=[red,blue]);

x

K2 K1 0 1 2 3 4 5 6 7

K20

20

40

60

80

100

120

O seguinte procedimento combina a sequência de passos1. Gráficos simultâneos

plotdiff:=proc(y,x,a,b)

local dy;

dy:=diff(y,x);

Page 72: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

(8.2.3)(8.2.3)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

plot([y,dy],x=a..b,color=[blue,black]);

end;

plotdiff := proc y, x, a, b

local dy;

dy := diff y, x ; plot y, dy , x = a ..b, color = blue, black

end proc

plotdiff(x*sin(x),x,-2,2);

x

K2 K1 0 1 2

K1

K0.5

0.5

1

1.5

Este procedimento pode agora ser utilizado em outras rotinas. A declaração local assegura que dy é uma variável local, ou seja, este nome não terá qualquer atribuição fora do procedimento.Vários dos comando iterativos apresentados na seção anterior podem ser reescritos na forma de procedimentos. Consideremos no próximo exemplo um procedimento que devolve o valor absoluto de um número, que vamos chamar de ABS (para distinguir de abs, que já está definido pelo Maple) 2.Valor absoluto de um número

ABS:=proc(x)

if x<0 then

-x;

Page 73: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

(8.2.6)(8.2.6)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

(8.2.5)(8.2.5)

OOOO OOOO

OOOO OOOO

OOOO OOOO

(8.2.10)(8.2.10)

OOOO OOOO

(8.2.9)(8.2.9)

(8.2.8)(8.2.8)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

(8.2.7)(8.2.7)OOOO OOOO

OOOO OOOO

OOOO OOOO

(8.2.4)(8.2.4)

OOOO OOOO

OOOO OOOO

else

x;

fi;

end;

ABS := proc x if x ! 0 then Kx else x end if end proc

ABS(-4.3);

4.3

ABS(3);

3

O procedimento ABS não pode lidar com uma entrada não-numérica:

ABS(a);

Error, (in ABS) cannot determine if this expression is true or false: a

< 0

Como o sistema não sabe nada sobre a, não sabe o que fazer com ele. Em tais casos o procedimento deveria ser capaz de retornar a entrada não avaliada. Para obter isso notemos o seguinte exemplo:

'ABS'(A);

ABS A

Estas aspas simples fazem com que a avaliação de ABS seja retardada. Portanto, podemos modificar o procedimento ABS para a seguinte forma;

ABS:=proc(x)

if type(x,numeric) then

if x<0 then -x else x fi;

else

'ABS'(x);

fi

end;

ABS := proc x

if type x, numeric then if x ! 0 then Kx else x end if else 'ABS' x end if

end proc

ABS(a);

ABS a

3. Raízes de um polinômio

Vamos construir um procedimento que plota raízes reais e complexas de um polinômio

raizplot:=proc(p::polynom(constant,x))

local R, points;

R:=[fsolve(p,x,complex)];

points:=map(z->[Re(z),Im(z)],R);

plot(points,style=point,symbol=circle);

end;

Page 74: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(8.2.12)(8.2.12)

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

(8.2.10)(8.2.10)

(8.2.11)(8.2.11)

raizplot := proc p:: polynom constant, x

local R, points;

R := fsolve p, x, complex ;

points := map z/ Re z , Im z , R ;

plot points, style = point, symbol = circle

end proc

y:=x^8-3*x^4+4*x^3-x^2+x-5;

y := x8K3 x4

C4 x3Kx

2CxK5

raizplot(y);

K1.5 K1 K0.5 0 0.5 1

K1

K0.5

0.5

1

O comando randpoly gera um polinômio randômico:

y:=randpoly(x,degree=120);

y := 87 x115K56 x76

K62 x25C97 x10

K73 x2

raizplot(y);

Page 75: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

K1 K0.5 0 0.5 1

K1

K0.5

0.5

1

9. Apêndice: Referências Básicas

WorksheetsNos microcomputadores com o Maple instalado, a worksheet é disparada clicando-se no ícone do programa. Em outros sistemas, ela é disparada pelo comando xmaple (ou maple) dado no sinal de pronto do sistema operacional. Ela é o principal meio para gravar e ler os trabalhos desenvolvidos no Maple.

A worksheet utiliza os recursos de janelas para facilitar interação do usuário com o Maple. Por exemplo, um comando batido errado pode ser facilmente corrigido voltando-se o cursor para a posição do erro e substituindo os caracteres errados. Não há necessidade de digitar todo o comando novamente. Na worksheet, um usuário pode desenvolver a solução de um problema usando o Maple, tecer comentários, colar gráficos e gravar todo o conjunto em um arquivo para ser lido e eventualmente modificado posteriormente. A worksheet pode ser impressa selecionando-se a opção print ou pode ser automaticamente convertida em um arquivo Latex. Umexemplo de uso das worksheets é esse curso. Ele foi apresentado e as notas impressas a partir de worksheets.

A worksheet é um caderno virtual de anotações de cálculos. A vantagem do caderno virtual é que qualquer coisa já escrita pode ser modificada sem necessidade de fazer outras alterações. O resto do trabalho se ajusta automaticamente às mudanças. Essa idéia é a mesma dos processadores de textos que vêm gradativamente substituindo as máquinas de escrever. A worksheet não é um processador de textos. Ela funciona de maneira satisfatória como um editor de textos, e a parte referente ao processamento de textos pode ser feita no Latex, pois a worksheet tem interface com este processador. No desenvolvimento de um trabalho usando a worksheet, é importante que ele seja feito em ordem e que todo rascunho seja apagado assim que cumprido seu objetivo. O comando restart pode encabeçar o trabalho. Depois de gravar a worksheet, o usuário

Page 76: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

pode sair do Maple. No momento em que a worksheet é lida novamente, os resultados que aparecem na tela não estão na memória ativa do Maple. É necessário processar os comandos novamente para ativar os resultados.

A worksheet tem quatro tipos de linhas que são: as linhas de entrada de comando, geralmente precedidas pelo sinal de pronto ``>'', as linhas de saída dos comandos, as linhas de texto e as linhas de gráfico. Algumas dessas linhas podem ser convertidas umas nas outras. Em geral, as linhas de entrada, de saída e de texto podem ser convertidas entre si. As versões de worksheet para estações de trabalho e para microcomputadores não são iguais entre si, porém na grande maioria dos casos, tudo o que um usuário faz na worksheet de uma estação de trabalho pode ser feita na worksheet de um micro e vice-versa.

As linhas de saída usam os recursos gráficos das janelas para escrever as letras, os símbolos e desenhar os gráficos. O sinal de integral aparece na tela como int, o somatório como sum e as letras gregas como alpha, beta, gamma, ... . Existe uma opção que faz com que as linhas de saídasusem os mesmos caracteres do teclado. Essa opção é útil para gravar resultados em um arquivo ASCII (acrônimo de American Standard Code for Information Interchange). A worksheet pode ser gravada com a terminação .mws, sendo ela própria é um arquivo ASCII. Isso significa que ela pode ser enviada por correio eletrônico. É claro que a pessoa que recebe tem que editá-la e retirar o cabeçalho do correio para que ela seja lida corretamente pelo Maple. Se a worksheet for salva com o a terminação .m , ela é salva no formato interno do Maple. A versão V Release 4 e 5 e a versão 6 possuem diversos recursos para escrever textos. É possível criar seções e sub-seções. As letras podem ter diversos tamanhos e estilos, podem ser em itálico ou em negrito. É possível criar hiperlinks que conectam diversas worksheets. A partir desses hiperlinks pode-se navegar através das worksheets.

Na próxima seção faremos uma breve exposição sobre a manipulação de worksheets.

Noções básicas sobre a manipulação de worksheetsO ambiente de worksheet do Maple consiste em um conjunto de construtos de documentação:grupos de execução, spreadsheets (planilhas), parágrafos, seções e hyperlinks.

Grupos de execução e spreadsheets ajudam o usuário a interagir com a máquina computacional do Maple. Eles fornecem os meios primários pelos quais o Maple é requisitado para executar tarefas específicas e mostrar os resultados. Parágrafos, seções e hyperlinks existem para ajudar o usuário a documentar e organizar os resultados.

Interagindo com Maple

Grupos de execuçãoSequencias de comandos de Maple, chamadas grupos de execução, servem para dar uma descrição algorítmica de como um particular problema matemático é resolvido. Os grupos de execução dão os elementos fundamentais de computação da worksheet. Seu objetivo primário é combinar um ou mais comandos de Maple e seus resultados em uma única unidade reexecutável. Ele é fácilmente reconhecível pelo grande colchete imediatamente à esquerda do prompt de comando. Um grupo de execução é criado através do menu insert . Exemplo1. Quando o cursor é colocado em qualquer ponto do grupo de execução, e o comando enter é dado, as as operações evidentes na expressão de entrada abaixo são

Page 77: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

(9.2.1.1.1)(9.2.1.1.1)

realizadas em sequencia e o resultado é apresentado no final :

restart:

y:=expand((x+4*a)^2-(x+4*a)^3+x^3);

y := x2C8 x aC16 a2

K12 x2 aK48 x a2K64 a3

O cursor é levado automaticamente para uma nova linha de comando em outro grupo de execução. Note que para modificar os polinômios envolvidos na expressão acima, basta levar o cursor novamente à linha de comando no grupo de execução, fazer as modificações e dar enter. Exercício1. Modifique o lado direito da expressão anterior.Exemplo2. Um grupo de execução pode conter vários comandos, na mesma ou em diferentes linhas de comando:

y:=diff(sin(x)^x,x); z:=int(sin(x)^2,x);

plot(y+z,x=1..3);

y := sin xx ln sin x C

x cos x

sin x

z := K12

sin x cos x C12

x

x1 1.5 2 2.5 3

0.2

0.4

0.6

0.8

1.0

1.2

1.4

Exercício2. (a) Volte ao Exemplo1 e faça um gráfico y(x), para algum valor específico de do parâmetro a, utilizando o prompt em aberto. Não esqueça de definir y novamente no grupo de execução anterior, casa contrário a expressão para y será aquela definida no Exemplo 2. (b) Coloque estes dois comandos em um mesmo grupo de execução utilizando a opção join execution groups (ou F4) no menu Edit.

SpreadsheetsSpreadsheets ou planilhas similares às do Excell são disponíveis nas versões W98, NT e Macintosh do Maple. Uma planilha simbólica pode ser criada através do menu insert. Ela vai aparecer dentro de um grupo de execução. Como exemplo vamos construir uma tabela

Page 78: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(9.2.1.3.2.1)(9.2.1.3.2.1)

(9.2.1.3.2.2)(9.2.1.3.2.2)

OOOO OOOO

OOOO OOOO

para integrais envolvendo ex .

Exercício 3. Reconstrua a planilha acima. As fórmulas nas células podem ser transportadas para linhas de comando da worksheet através de copy/paste e vice versa.

Construindo e executando comandosHá três modos básicos para criar comandos e resultados em Maple

Comandos digitados e paletasLinhas de comando vazias podem ser criadas inserindo um grupo de execução (utilizando o menu insert ou o símbolo [> no menu de ferramentas). Os comandos são executados escrevendo-os no prompt do Maple e pressionando enter. Algumas operações e símbolos, assim como matrizes, podem ser introduzidos através de três paletas. Elas podem ser ativadas a partir do menu View/Palletes.Exercício 4. Utilize o comando inverse(A) do Maple para inverter a matriz

4 5 0

K1 3 5

9 6 6

.

Nota: Para que esta operação seja possível é necessário carregar antes o pacote de álgebra linear linalg, o que pode ser feito com o comando with(linalg) .

Utilizando menus de contextoResultados de Maple já existentes podem ser utilizados para sugerir e construir novas ações. Para obter na tela uma lista de ações sugeridas, marque e pressione o botão direito do mouse sobre o objeto (um resultado). A lista de ações resultante é chamada um menu de contexto, e está customizada para refletir as propriedades do objeto selecionado.Exercício 5. Reproduza em uma worksheet separada o procedimento abaixo. No caso selecionamos a segunda solução e, escolhendo a opção copy transformamos-la para o formato de entrada (paste). O nome s1 foi adicionado manualmente.

solve(a*x^2-3*x+a,x);

12

3C 9K4 a2

a, K

12

K3C 9K4 a2

a

s1:=1/2*(2-2*sqrt(1-a^2))/a;

s1 :=12

2K2 1Ka

2

a

Exercício 6.(a) Considere resultado do primeiro grupo de execução do Exercício 5. Utilize o menu de contexto para determinar a integral das duas soluções com relação a a. Faça com elas tenham respectivamente os nomes int1 e int2.(b) Considere o resultado do segundo grupo de execução acima. Utilize o menu de

Page 79: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

contexto para converter a igualdade para o formato LaTex (neste caso, em que a expressão aparece sozinha, não é necessário marcar a expressão). Exercício 7. Utilize o menu de contexto para obter o gráfico da função y = sin x z .

Dragging e Dropping

restart:

Fórmulas podem ser transportadas entre linhas de comando de qualquer worksheet diretamente por seleção e arraste. Uma expressão no formato de saída pode ser convertida para o formato de entrada simplesmente selecionando a expressão e arrastando-a para uma linha de comando vazia. .Gráficos simultâneos podem ser construídos arrastando-se a expressão no formato de se saída do Maple até o ambiente gráfico existente, anteriormente criado via smartplots. Exercício 8. Selecione o lado esquerdo da expressão que define s1, no formato de saída, no Exercício 5 e arraste-o até uma linha de comando vazia. Repita o mesmo procedimento selecionando agora a expressão inteira. Qual a diferença ?

Exercício 9a. Utilize o menu de contexto para gerar o gráfico de y :=v

vx cos x

2Cz .

(Arraste a expressão acima para uma worksheet e depois a recupere com undo). Em seguida arraste o gráfico para uma linha vazia sem o prompt. Modifique a expressão e arraste de volta a expressão para o ambiente gráfico. Este procedimento só funciona para smartplots 3D.Exercício 9b. Gere gráficos simultâneos em 2D utilizando arraste .Este procedimento só funciona com smartplots.

Organizando documentosDocumentos consistem de uma sequencia de parágrafos descritivos, grupos de execução, spreadsheets e gráficos. Estes componentes podem ser reorganizados em uma estrutura hierárquica baseada em seções de subseções. Marcadores de referências, chamados bookmarks, podem ser colocados ao longo do documento e hyperlinks podem ser usados para saltar de um lugar a outro dentro de um documento. Trataremos esses tópicos com detalhe a seguir

3.2.1 Parágrafos e textoUm parágrafo em uma worksheet é análogo ao parágrafo encontrado em um típico processador de textos. Parágrafos podem conter texto com estilos particulares, modo matemático e gráficos, incluindo cópias de saídas de Maple. Um parágrafo pode estar contido em um grupo de execução . Parágrafos podem ser criados clicando Insert na barra de menus. O estilo dos parágrafos pode ser personalizado escolhendo Styles, do menuFormat. Estilos em trechos selecionados podem escolhidos na barra de contexto. Dentro das áreas de texto é possível inserir equações formatadas e gráficos. Exemplo 2. É possível escrever:

Para calcular a integral definida simbólica 0

β

ex2 dx em Maple, digite:

> int(exp(x^2),x = 0 .. beta);

O modo matemático pode ser acionado escolhendo-se Maple input (Crtl+M) no menuInsert. Temos aqui algumas diferenças importantes nas duas últimas versões de Maple. Maple V:

Page 80: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

Note que a equação é digitada de acordo com a sintaxe do Maple, em um campo dentro da barra de contexto. A expressão formatada aparecerá depois de enter . Para voltar ao modo texto escolhe-se Text input (Crtl+T). Caso o usuário preferir, é possível digitar a expressãodesejada numa linha de comando, convertê-la para o modo matemático escolhendo x na barra de contexto. A expressão pode então ser selecionada e arrastada ou copiada para o local desejado do texto. É possivel também arrastar a expressão diretamente no formato deentrada do Maple para um local onde o modo matemático já esteja acionado dentro do texto(Crt-M).Maple 6:Note no menu Insert, que para reproduzir os resultados descritos no parágrafo anterior, deveríamos selecionar Standard Math ou Crt-R, para criar uma entrada em modo matemático dentro do texto. No entanto, o procedimento mais simples neste caso para digitar uma equação é utilizar Maple Input ou Crt-M, que faz com que a equação apareça no formato de entrada do Maple no próprio texto, em vermelho. Em seguida a expressão pode ser convertida para o formato matemático clicando em x à esquerda na barra de contexto. Como no caso do Maple V, os modos de entrada ou saída podem ser alternados clicando-se no maple verde. Ou seja, os caracteres em vermelho são de entrada, não importando o formato (Maple input ou Standard Math input), são executáveis clicando-se em ! na barra de contexto.Exercício 10. Reproduza o Exemplo 2.

3.2.2 SeçõesO que você acabou de expandir agora é uma seção (section). No menu Insert, a escolha deSection abre outra seção. Subsection abre uma subseção dentro desta. Para transformar uma seção num parágrafo simples, no menu Format escolha Outdent. Use Indent para inserir um dado parágrafo dentro da seção Exercício 11. Reproduza os cabeçalhos desta worksheet. Inclua subseções. Exercício 12. Expanda e colapse todas as seções desta worksheet através do menu View.

3.2.3 HyperlinksUm hyperlink é uma pedaço de texto que faz uma conexão, quando você dá um clic sobre ele, para uma outra parte da mesma worksheet, de outra worksheet ou de uma página de ajuda, sendo portanto uma ferramenta de navegação. Por default, Maple mostra os hyperlinks como um texto sublinhado na cor cyan. Por exemplo, clicando aqui o cursor é levado para seção 2.1.2 sobre spreadsheets. Selecionando um nome de bookmark leva o cursor a um ponto especificado da worksheet. Um pré-requisito para hyperlinks são bookmarks. Um bookmark é um nome que identificauma particular localização na worksheet. Podemos acessar uma lista de bookmarks da worksheet corrente selecionando Bookmarks no menu View. A seleção de um nome de bookmark move o cursor a uma posição especificada da worksheet. Um hyperlink deve estar associado a um nome de bookmark. Por exemplo, vamos supor que queremos fazer um hyperlink para a seção 2.2.1. O primeiro passo é definir o bookmark. Para isso devemoslevar o cursor para a linha da seção 2.2.1 desta worksheet, selecion Bookmarks no menuView e selecionar Edit Bookmark. Um nome adequado deve então ser digitado. Em seguida devemos inserir o texto que deve aparecer no hyperlink. No menu Insert selecionamos Hyperlink, digitamos o texto e escolhemos da lista o nome adequado entre todos os bookmarks. Exercício 13. Faça um hyperlink para alguma seção desta worksheet.

Regras de sobrevivênciaEsta seção oferece dicas sobre como evitar alguns enganos aos quais inciantes estão sujeitos a cometer. Mesmo para aqueles que já utilizaram o Maple mais de uma vez, ler este seção será de alguma utilidade. Ela poderá parecer um pouco redundante mas, por outro lado, vai poupar

Page 81: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(9.3.2)(9.3.2)

OOOO OOOO

OOOO OOOO

(9.3.3)(9.3.3)

OOOO OOOO

(9.3.4)(9.3.4)

OOOO OOOO

(9.3.1)(9.3.1)OOOO OOOO

(9.3.5)(9.3.5)

esforços na tentativa de encontrar erros de sintaxe futuramente. Os problemas aqui descritos serãovistos nos capítulos seguintes, porém estarão inseridos em contextos diferentes que vão supor que o leitor já os conheça.

Os comandos do Maple normalmente terminam com um ponto-e-vírgula (;) seguido da tecla [Enter]. Com isso o Maple avalia a entrada, faz o cálculo e imprime o resultado na tela. Ao invés de usar o ponto-e-vírgula, pode ser usado os dois pontos (:) no final do comando. Neste caso, o cálculo é feito como anteriormente, mas o resultado não é colocado na tela. Seu uso previne que comandos executados como passos intermediários de um estudo não ocupem muitas páginas com fórmulas de pouco interesse em relação ao resultado final.

Pode-se colocar alguns comandos na mesma linha. Estes comandos podem ser separados tanto porponto-e-vírgula (;) como dois-pontos (:). É possível separar os cálculos com vírgulas (,) sem que se faça associações à variável. O Maple executa os cálculos um após o outro e coloca os resultados lado a lado. Para resultados curtos, este método possue a vantagem de economizar espaço na tela e permite a comparação de resultados numa mesma linha.

Por exemplo:

2+3;

5

a:=3; b:=5;

a := 3

b := 5

a*b, a+b, a^b;

15, 8, 243

a*b; a+b; a^b;

15

8

243

O resultado de até três cálculos anteriores podem ser acessados pelos comandos %, %% e %%%. Se após o um cálculo, você mover o cursor para uma posição diferente na worksheet, o símbolo de percentagem não irá se refrir ao comando exatamente acima e sim ao último cálculo executado.

(c+d)^3: % = expand (%);

cCd3 = c

3C3 c2 dC3 c d2

Cd3

A expressão anterior mostra uma expansão do cubo da soma de duas variáveis. O primeiro comando apenas formula a expressão a ser expandida e não imprime o resultado na tela. No segundo comando o resultado é acessado duas vezes, primeiro sem expandir e depois expandindo.

É preciso tomar cuidado ao usar os símbolos de percentagem. Para pessoas poucou familiarizadas com estes operadores é aconselhável associar o resultado obtido à uma variável. Desta forma a variável pode ser acessada posteriormente quantas vezes quiser e não apenas três.

No exemplo a seguir é mostrado duas formas de ser fazer a associação das soluções de uma equação do segundo grau a uma variável:

Page 82: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(9.3.13)(9.3.13)

(9.3.8)(9.3.8)

OOOO OOOO

(9.3.9)(9.3.9)

(9.3.7)(9.3.7)

(9.3.10)(9.3.10)

OOOO OOOO

(9.3.12)(9.3.12)OOOO OOOO

OOOO OOOO

OOOO OOOO

OOOO OOOO

(9.3.11)(9.3.11)

(9.3.6)(9.3.6)

OOOO OOOO

OOOO OOOO solve(x^2+x-1,x);

K12

C12

5 , K12

K12

5

solucoes1:=%;

solucoes1 := K12

C12

5 , K12

K12

5

solucoes2:=solve(x^2+x-1,x);

solucoes2 := K12

C12

5 , K12

K12

5

A manipulação de uma parte do resultado fica mais fácil ao associá-lo a uma variável. Esta necessidade ocorre frequentemente em comandos como o solve que retorna mais de uma solucao. Um meio de acessar os elementos do resultado é colocando o índice da solução desejada entre colchetes ([]).

x1:=solucoes1[1];

x1 := K12

C12

5

A princípio esta é uma forma aparentemente boa, porém pode dar problemas depois: a ordem das soluções retornadas pelo comando solve não é fixa. Portanto executando o comando novamente, pode ser que a ordem venha trocada. Neste caso se tivermos interesse, por exemplo, na solução demenor valor, poderíamos usar o comando min. Para isto todas as variáveis da expressão deverão estar definidas.

x1:=min(solucoes1);

x1 := K12

K12

5

O Maple VR5 e 6 distingue as aspas duplas (") das aspas simples (') do plique (`) - ou acento grave. O primeiro serve para representar strings de caracteres. O segundo é usado para retardar uma avaliação matemática e o terceiro também representa strings porém de utilidade diversificada em relação ao primeiro.O Maple avalia expressões matemáticas automaticamente:

x:=Pi;

x := π

sin(x/2);

1

Neste exemplo, a variável x foi imediatamente substituída pelo seu valor. Algumas vezes não é desejado que isto aconteça. As aspas simples servem para impedir que esta avaliação se efetue. E neste caso pode ser feito de duas formas: retardando a avaliação de x ou de toda a expressão sin(x):

expr1:=sin('x'/2);expr2:='sin(x/2)';

expr1 := sin12

x

Page 83: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

(9.3.16)(9.3.16)

OOOO OOOO

(9.3.18)(9.3.18)

OOOO OOOO

OOOO OOOO

OOOO OOOO

(9.3.22)(9.3.22)

OOOO OOOO

(9.3.17)(9.3.17)OOOO OOOO

(9.3.14)(9.3.14)

(9.3.21)(9.3.21)

OOOO OOOO

(9.3.23)(9.3.23)

OOOO OOOO

(9.3.13)(9.3.13)

(9.3.15)(9.3.15)

(9.3.19)(9.3.19)

(9.3.20)(9.3.20)

OOOO OOOO

OOOO OOOO

expr2 := sin12

x

Nos cálculos subsequentes a avaliação será efetuada e o valor da variável será subtituído.

expr1; expr2;

1

1

Pode-se colocar quantos níveis de retardo se desejar porém não é comum utilizar mais de um. Seria mais simples limpar o conteúdo da variável x em vez de colocar várias aspas simples juntas.

''x'';

'x '

%;

x

%;

π

À primeira vista, a função do plique pode parecer igual às aspas simples.

'x+1';

xC1

`x+1`;

xC1

Porém só quando forçamos uma avaliação é que percebemos a diferença.

eval('x+1');

πC1

eval(`x+1`);

xC1

Os caracteres contidos entre pliques não são interpretados como expressões matemáticas, mas como um conjunto de caracteres. A avaliação não só não é retardada, como se torna impossível. Os pliques são normalmente usados para criar nomes de variáveis que usem caracteres especiais.

`x/aux`:=3;

x/aux := 3

As aspas duplas, enfim, determinam um conjunto de caracteres associados a um texto tal como o título de um gráfico, uma mensagem a ser impressa na tela ou o nome de um arquivo no qual se deseja gravar algum resultado.

print(`Mensagem na tela!`);

Mensagem na tela!

Alguns problemas frequentemente ocorrem por causa de variáveis que foram inicializadas e foram

Page 84: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

OOOO OOOO

OOOO OOOO

OOOO OOOO

(9.3.24)(9.3.24)

OOOO OOOO

(9.3.25)(9.3.25)OOOO OOOO

usadas em expressões posteriormente. Ao tentarmos resolver uma equação em x ocorre o seguinte problema.

solve(x^2-2*x,x);

Error, (in solve) a constant is invalid as a variable, Pi

Se olharmos algumas páginas antes vamos perceber que a variável x recebeu o valor π. Em nenhum momento esta variável teve o seu conteúdo apagado e, consequentemente, ele se mantém.Uma forma de limpar o conteúdo de uma variável é associar esta variável a ela mesma com um nível de retardo. Se preferir apagar o conteúdo de todas as variáveis usadas até o momento, o comanto restart executa esta tarefa.

x:='x';

x := x

Ou equivalentemente:

unassign('x');

Agora podemos resolver a equação em x.

solve(x^2-2*x,x);

0, 2

Cartão de referência de comandosdenom( ) Selects the denominator of a fractiondisplay( ) Combines graphs of functions and points (require with( plots) )evalf(expr) Numercially evaluates the given expression to the default number of digits (10).evalf(expr,n) Numercially evaluates the given expression to n digitsexpand(expr) Expands the given expressionfactor(expr) Factors the given expression fsolve(eqn) Finds numerical (approximate) solutions to equations. fsolve(x^2=cos(x)+4,x=0..5)ifactor(n) Gives prime integer factorization for a given integer lhs(eqn ) Selects the left hand side of an equationimplicitplot( ) Plots implicitly defined functions implicitplot(x^2/25 +y^2/9=1 , x=-5 . . 5,y=-5 . . 5,scaling=constrained);numer( ) Selects the numerator of a fractionplot( ) Plots functions defined by an algebraic expression: plot(3*x^2-8 , x=-5 . . 5 , y = -20 . . 40 ); Plots more than one function at a time: plot( [ 3*x^2-8 , sin(x) , cos(x) ] ,x=-5 . . 5 , y=-20 .. 40 ); Plots points: plot 2, 3 , K2, 5 , 1, K4 , x = K7 ..7, y = K7 ..7, style = point Plots parametric equations : plot( [cos(t), sin(t), t=0 . . 2*Pi] , x=-2..2, y=-2..2);rationalize(expr) Rationalizes the denominator of a given expressionrestart Clears Maple's memory of all definitionsrhs(eqn ) Selects the right hand side of an equationsimplify(expr) Simplifies the given expressionsolve(eqn) Finds exact solutions to equations, including literal equations and linear

Page 85: Apostila - Aplicações de Maple em Cálculo e Álgebra Linear

systems.subs(x= v,expr) Substitutes the value v for x in the expression subs(x=4,3*x^2+8);with( ) Brings in additional libraries of functions.

The standard constants are:Pi π Caution: Do not use "pi", capital "P" is required exp(1) e

I K1

The names of the standard functions are:

sqrt(x) x abs(x) x

exp(x) ex

ln(x) natural loglog(x) common log (base 10)sin(x), cos(x), tan(x), cot(x), sec(x), csc(x) sine of x, etc.arcsin(x), arccos(x), arctan(x) the inverse trig functions