Sei sulla pagina 1di 154

Sumário

CAPÍTULO 1 - INTRODUÇÃO .............................................................................................................................................. 3


1.1 - Introdução ........................................................................................................................................................................ 3
1.2 - Como fazer para saber o nome correto de uma função? .................................................................................................. 4
1.3 - Como conseguir ajuda no próprio programa. .................................................................................................................. 5
1.3.1 - Conseguindo auxilio via ?? Comando. ................................................................................................................. 5
1.3.2 - Conseguindo informações via Help. ......................................................................................................................... 6
CAPÍTULO 2 - CÁLCULOS NUMÉRICOS E DEFINIÇÃO DE FUNÇÕES .................................................................... 7
2.1 - Cálculos numéricos e constantes ..................................................................................................................................... 7
2.2 - Funções ............................................................................................................................................................................ 9
2.2.1- Manipulando expressões algébricas .......................................................................................................................... 9
2.2.2 - Definindo uma função simples ............................................................................................................................... 11
2.2.3 -Funções de duas ou mais variáveis. ......................................................................................................................... 15
2.2.4 - Funções pré-definidas. ............................................................................................................................................ 17
2.2.5 - Composição de funções .......................................................................................................................................... 22
2.3 - Soluções exatas e aproximadas de equações ................................................................................................................. 25
2.3.1 - Soluções exatas ....................................................................................................................................................... 25
2.3.2 - Aproximação de soluções vizinhas a um ponto ...................................................................................................... 30
CAPÍTULO 3 - GRÁFICOS ................................................................................................................................................... 41
3.1 - Introdução ...................................................................................................................................................................... 41
3.2 - Gráficos de funções de uma variável ............................................................................................................................. 41
3.3 - Gráficos de funções de duas variáveis em três dimensões............................................................................................. 45
3.4 - Gráficos de curvas de nível de funções de duas variáveis ............................................................................................. 50
3.5 - Gráfico de funções Paramétricas ................................................................................................................................... 54
3.6 - Gráficos de funções paramétricas no espaço ................................................................................................................. 57
EXERCÍCIOS .................................................................................................................................................................... 59
CAPÍTULO 4 - CÁLCULO DIFERENCIAL E INTEGRAL ............................................................................................. 64
4.1 - Introdução ...................................................................................................................................................................... 64
4.2 - Limites ........................................................................................................................................................................... 64
4.3 - Derivadas ....................................................................................................................................................................... 68
4.3.1 - Introdução ............................................................................................................................................................... 68
4.3.2 - Derivação implícita ................................................................................................................................................ 73
4.3.3 - Outras aplicações de derivadas ............................................................................................................................... 77
4.4 - Integrais ......................................................................................................................................................................... 83
4.4.1 - Introdução ............................................................................................................................................................... 83
4.4.2 - Somatórias .............................................................................................................................................................. 84

1
4.4.3 - Integração indefinida .............................................................................................................................................. 85
4.4.4 - Integração definida ................................................................................................................................................. 87
4.4.5 - Integrais duplas e triplas ......................................................................................................................................... 94
4.5 - Equações Diferenciais ................................................................................................................................................... 95
4.5.1 - Introdução ........................................................................................................................................................ 96
4.5.2 - Equações Diferenciais Lineares .............................................................................................................................. 96
4.5.3 - Equações Diferencias de variáveis separáveis ...................................................................................................... 100
4.5.4 - Equações Diferenciais Exatas ............................................................................................................................... 102
4.5.5 - Solução numérica de equações diferenciais .......................................................................................................... 103
4.5.6 - Equações Diferenciais de Ordem Superior ........................................................................................................... 105
4.6 - Exercícios ................................................................................................................................................................ 111
CAPÍTULO 5 - LISTAS, VETORES E MATRIZES ......................................................................................................... 116
5.1 - Introdução .................................................................................................................................................................... 116
5.2 - Listas ........................................................................................................................................................................... 116
5.2.1 -Introdução .............................................................................................................................................................. 116
5.2.3 - Gerando listas com o comando Table ................................................................................................................ 120
5.2.4 - Criando gráficos a partir de listas ......................................................................................................................... 122
5.3 - Matrizes ....................................................................................................................................................................... 128
5.3.1 - Introdução ............................................................................................................................................................. 128
5.3.2 - Operações básicas ................................................................................................................................................. 130
5.3.3 - Resolução de sistemas lineares ............................................................................................................................. 136
5.3.4 - Máximos e mínimos utilizando programação linear ............................................................................................. 139
5.4 - Cálculo Vetorial........................................................................................................................................................... 140
5.4.1 - Introdução ............................................................................................................................................................. 140
5.4.2 - Sistemas de coordenadas, gradiente, divergente, rotacional e laplaciano ............................................................. 141
5.4.3- Gráficos de funções vetoriais no plano .................................................................................................................. 148
5.4.4 - Gráficos de funções vetoriais no espaço ............................................................................................................... 151
5.5 - Exercícios ................................................................................................................................................................ 152

2
CAPÍTULO 1 - INTRODUÇÃO

1.1 - Introdução

O objetivo desta apostila é fazer uma introdução ao programa Mathematica, mostrando os


conceitos e funções mais básicos a partir do qual você poderá aprofundar-se em livros mais teóricos e
especificos sobre o assunto.
Na confecção desta apostila foi utilizada a versão 2.2 do Mathematica, portanto, se você estiver
utilizando outra versão pode ser que a resposta não seja idêntica a mostrada aqui. Pode ocorrer também
(caso voce esteja utilizando uma versão mais antiga do programa) que alguma função não esteja
implementada. Você pode descobrir qual versão do Mathematica você está utilizando dando o comando
$Version ou $VersionNumber.
Nesta apostila será adotada por convenção que todos os comandos serão escritos em Courier
New em negrito. As respostas dadas pelo programa serão escritas em Courier New mas não estarão
em negrito, assim será fácil identificar o que foi digitado e qual é a resposta obtida.
Normalmente o nome das funções contidas no Mathematica começam com letra maiúscula, caso
você digite o nome da função com letra minúscula o programa dará uma mensagem de erro pois ele não
irá reconhecer a sintaxe. Toda função tem seu argumento entre colchetes[ ] e deve-se sempre lembrar de
fecha-los pois caso isto não seja feito também teremos mensagens de erro. Não há limite quanto ao número
de caracteres para definir uma função ou uma variavel, entretanto não se aconselha nomes muito grandes
pois você terá que digitá-los e perderá tempo. No Mathematica há algumas funções que são acessadas
através de Packages (pacotes). Para acessar estas funções você deverá entar com o comando <<`package
para primeiro carregar o pacote onde se encontra esta função e só então você podera utilizar a função. Para
carregar um pacote você também poderá utilizar o menu superior clicando em file, escolhendo open,
package, e finalmente escolhendo o pacote que lhe interessa (pacotes tem extensão .m). Nesta apostila não
utilizaremos nenhum destes pacotes pois as funções utilizadas são relativamente simples e não requerem
o carregamento de nenhum pacote em especial.
Esta apostila está dividida em cinco capítulos sendo que estes capítulos tratam dos seguintes
assuntos:
Capítulo 1 - Introdução - Este capítulo visa dar uma breve introdução ao Mathematica explicando
alguns conceitos básicos, como utilizar o Help e conseguir informações sobre funções.
Capítulo 2 - Cálculos numéricos e funções - Capítulo que introduzira a notação utilizado para
definirmos funções, explicara as funções básica contidas no programa (sen, cos, tan, ln, etc). Neste
capitulo também será dado uma breve noção de como fazer gráficos de funções de uma variável.
Capítulo 3 - Gráficos - Neste capítulo aprofundaremos os estudos de gráficos de uma variável dada
no capitulo 2, serão estudados também gráficos em 3 dimensões, curvas de nível e funções paramétricas
entre outras coisas.
Capítulo 4 - Cálculo - O objetivo deste capitulo é mostrar como se pode utilizar o Mathematica
para resolver derivadas, integrais definidas e indefinidas e equações diferenciais.
Capítulo 5 - Vetores, Listas e Matrizes - Neste capítulo trataremos de álgebra vetorial e matricial,
mostraremos como resolver sistemas de equações utilizando notação matricial, também faremos gráficos
dados por um conjunto de números bem como estudaremos meios de fazermos interpolação entre estes
valores.

3
No final de cada capítulo existe uma série de exercícios para que você possa fixar os comandos
apresentados. Para estes exercícios propostos há uma lista com as soluções, valendo a pena ressaltar que
estas podem não ser as únicas soluçõese possíveis.

1.2 - Como fazer para saber o nome correto de uma função?

Quando você não sabe o nome completo de uma função mas sabe a letra com que ela começa você
pode utilizar o comando ? letra* que retorna todas as funções que começam com a letra digitada. Se
você souber apenas uma letra do meio do corpo da função você pode utilizar? *letra* que retorna
todos os comandos que possuem “letra” na sua definição. Vale a pena ressaltar que o
Mathematicadistingue entre letras maiúsculas e letras minúsculas, portanto? p* tem resultado diferente
de ? P*. Caso queira saber o nome de todas as funções implementadas na versão que você está usando
tecle ? *.
Vejamos os exemplos abaixo:

Para encontrar o nome de os comandos que começam com “Z” podemos digitar

? Z*
ZeroTest Zeta

Se desejarmos saber todos os que contém a letra “Z” fazemos:

?*Z*
JacobiZeta RiemannSiegelZ TimeZone ZeroTest
Zeta

Note que quando entramos com “z “o resultado é diferente:

? *z*
AbsolutePointSize Hypergeometric0F1Regularized
PointSize
BetaRegularized Hypergeometric1F1Regularized
Rationalize
GammaRegularized Hypergeometric2F1Regularized
StartingStepSize
HorizontalForm MaxStepSize
Trapezoidal HypergeometricPFQRegularized

Se quisermos também podemos encontrar comandos que contem uma certa seqüência de caracteres
como mostrado abaixo onde desejamos saber todos os comandos que contem “Sin” :

? *Sin*
ArcSin Sin SingularValues
SinhIntegral ArcSinh SingularityDepth

4
Sinh SinIntegral IncludeSingularTerm

1.3 - Como conseguir ajuda no próprio programa.

Caso você esteja utilizando o Mathematica e fique em dúvida sobre o que um certo comando
realiza você pode ou utilizar o Help no formato Windows ou entrar com o comando ?? comando.
Fazendo isto você estará conseguindo informações sobre o que o comando realiza e também sobre qual a
sintaxe correta a ser utilizada.

1.3.1 - Conseguindo auxilio via ?? Comando.

Para conseguirmos auxilio utilizando ?? Comando basta digitarmos o ?? seguido do nome do


comando sobre o qual queremos ajuda ou de outra forma Information[comando]. Vejamos

??Zeta

Zeta[s] gives the Riemann zeta function zeta(s).


Zeta[s, a] gives the generalized Riemann zeta function.
Attributes[Zeta] = {Listable, Protected}

Options[Zeta] = {IncludeSingularTerm -> False}

nos retorna o objetivo do comando Zeta e nos da a forma correta de dar o comando. Observe que
ele também nos da todas as opções disponíveis no camamdo Zeta(IncludeSingularTerm ->
False). Enquanto que

Information[PrimeQ]

PrimeQ[expr] yields True if expr is a prime number, and yields


False otherwise. In the current version of Mathematica, the algorithm
used for large integers is probabilistic,but very reliable (pseudoprime
test and Lucas test).
Attributes[PrimeQ] = {Listable, Protected}
Options[PrimeQ] = {GaussianIntegers -> False}

nos da informações sobre a função PrimeQ. Caso você deseje apenas saber quais são as opções
de um certo comando você devera entrar com Options[comando] por exemplo para saber quais são
as opções do comando ContourPlot3D nós podemos entrar com

Options[ContourPlot]

{AspectRatio -> 1, Axes -> False, AxesLabel -> None,


AxesOrigin -> Automatic,AxesStyle -> Automatic,

5
Background -> Automatic, ColorFunction -> Automatic,
ColorOutput -> Automatic, Compiled -> True,ContourLines -> True
,Contours -> 10,ContourShading -> True, ContourSmoothing-> True
,ContourStyle-> Automatic,DefaultColor-> Automatic,Epilog -> {}
,Frame -> True,FrameLabel -> None,FrameStyle -> Automatic,
FrameTicks -> Automatic, PlotLabel -> None, PlotPoints -> 15,
PlotRange -> Automatic, PlotRegion -> Automatic, Prolog -> {},
RotateLabel -> True, Ticks -> Automatic,
DefaultFont :> $DefaultFont,DisplayFunction:> $DisplayFunction}

onde são listados todos as opções do comando ContourPlot.

1.3.2 - Conseguindo informações via Help.

Outro maneira de se conseguir auxilio é pressionando o ícone localizado no menu superior


do lado direito. Quando você tiver pressionado estará vendo a seguinte tela:

Nesta tela você poderá ou digitar a palavra sobre a qual você que uma informação ou utilizando a
barra localiza a direita selecionar diretamente a palavra. Feito isto basta clicar em Show Topics para que
ele mostre os tópicos sobre o comando que estão disponíveis no Help. Agora basta escolhar um dos tópicos
e pressionar Go To para obter a informação sobre a palavra escolhida.

6
CAPÍTULO 2 - CÁLCULOS NUMÉRICOS E DEFINIÇÃO DE FUNÇÕES

2.1 - Cálculos numéricos e constantes

Para calcular numericamente o valor de um uma expressão contendo números e sinais aritméticos
basta digitar a expressão desejada finalizando com ENTER ou Shift + ENTER.

Exemplo: Calcular a) 1+1, b) 3231-9876, c) -2x2, d) 12x156x156, e) 3/2.

a)
1+1
2

b)
3231-9876
-6645

c) No Mathematica a operação de multiplicação é denotada por * ou por um espaço em branco


entre os operandos como pode ser visto abaixo:

-2*2
-4

12 156 156
292032

d) A divisão é denotada por uma barra inclinada:

3/2

3
-
2

Na sintaxe do Mathematica para calcularmos a n , “a” elevado a n , devemos utilizar a ^n .


Para obtermos a  a 1/ 2 nós podemos entrar com Sqrt[a] ou de outra maneira a^1 / 2,se
desejarmos calcular n a  a 1/ n deveremos entrar com a ^(1/n), onde n  0.

Exemplo: Calcule os valores de a) (-2)123 e b) 71/ 9 .

7
a)

(-2)^123

-10633823966279326983230456482242756608

b)

7^(1/9)

1/9
7

Percebemos que no exemplo b) a saída dada pelo Mathematica não condiz com a que era esperada
por nós. Para que obtenhamos o valor numérico esperado devemos entrar com o comando
N[expressão] para que obtenhamos um resultado numérico da expressão entre colchetes. Se você
entrar com o comando N[expressão, n] o resultado será uma aproximação da expressão com n casas
no total.
Neste caso teremos:

a)
N[(-5)^123]

85
-9.40395 10

b)
N[7^(1/9)]

1.24137

O comando N[expressão] também serve para se obter um resultado expresso em notação


científica. O comando expressão//N produz o mesmo efeito que N[expressão].

Exemplo: Calcule 241 .

Para calcularmos isso basta como dito anteriormente entramos com:

Sqrt[241]

Sqrt[241]

O Mathematica retorna a mesma entrada pois esta é a forma mais simplificada da expressão.
Para obtermos uma aproximação com 8 casas no total podemos entrar com o comando:

8
N[Sqrt[241],8]

15.524175

O Mathematica possui os valores de várias constantes pré-definidas tais como  (pi) que é
denotado por Pi, e (Número de Euler) que é denotado por E. i  1 é denotada por I. O sinal de infinito
( ) é definido como Infinity (-infinito é denotado como -Infinity).
Para obtermos uma aproximação destas constantes é só procedermos como nos exemplos abaixo:

N[E,20]

2.7182818284590452354

N[Pi,30]

3.14159265358979323846264338328

Sqrt[-25]

5 I

(3+I) (-I)

1 - 3 I

2.2 - Funções

2.2.1- Manipulando expressões algébricas

O Mathematica consegue manipular expressões não numéricas da mesma maneira que ele
manipula as numéricas. Dentro os comandos possíveis destacamos alguns de grande utilidade.

Factor[expressão]- fatora uma expressão.


Expand[expressão]- faz as multiplicações entre os termos envolvidos na “expressão”.
Together[expressão] - Transforma uma soma de frações em uma única fração

9
Exemplo: a) Fatore 2 x 3  6x 2 y  4 x  12 y .b) Calcule (3 x - 12) (23 x - 4)(x - 5),
x 2 (5x  3)
.c)transforme   ( x  5) em uma única fração.
5 x

a) Utilizando a função Factor nós podemos realizar a operação pedida.

Factor[-2 x^3 + 6 x^2 y + 4 x - 12 y ]

2
2 (-2 + x ) (-x + 3 y)

b) Para executar o solicitado no item b faremos:

Expand[(3 x - 12)*(23 x - 4) (x - 5)]

2 3
-240 + 1488 x - 633 x + 69 x

e finalmente no item c teremos:

Together[(x^2/5)+((5 x-3)/x) + x - 5]

2 3
-15 + 5 x + x
---------------
5 x

Outros comandos que também são muito úteis são os comandos

Apart[expressão] - faz uma decomposição em frações parciais da “expressão”


Cancel[expressão] - fatora o numerador e o denominador da “expressão” e a reduz a menor
forma possível.

x 2  2x
Exemplo: Determine a decomposição em frações parciais da expressão e .simplifique
x4
x 3  2x 2  2x  4
a .expressão .
x2

Utilizando o comando Apart conseguimos a decomposição em frações parciais e usando


Cancel conseguimos a simplificação.

10
Apart[(x^2-2 x)/(x -4)]

8
2 + ------ + x
-4 + x

Cancel[(x^3 + 2x^2 - 2 x - 4)/(x+2)]

2
-2 + x

Para simplificar expressões nós também podemos utilizar o comando


Simplify[expressão] sendo que este faz com que obtenhamos a melhor simplificação possível
para a “expressão”.

Simplify[(Cos[Pi] (2x - 2))/(x - 1)]


-2

2.2.2 - Definindo uma função simples

Definir uma função e realizar cálculos com ela com o Mathematica é simples, para isto você
deverá somente utilizar a sintaxe abaixo:

Nome_da_função[V1_,V2_,...,Vn_]:= equação matemática

onde V1, V2, ..., Vn são as n variáveis da função definida pela equação matématica. Nos
exemplos abaixo esta definição ficará mais clara.

Exemplo: Definir a função f ( x ) = x3 + 5 x2 - 10, verifique se a sua definição de f (x) está


.correta e calcule também f(0), f(7), f(-2), f(d), f(c2).

Para definir f(x) procederemos da seguinte maneira:

Clear[f];
f[x_]:=x^3 - 5 x^2 - 10

O comando Clear[função ou variável] serve para limpar a definição anterior da função


ou variável, e recomendável que você sempre de esse comando antes de criar uma nova função pois pode
já existir uma com o nome que você está querendo usar e assim haverá uma confusão quanto a definição
correta da função. Por exemplo digamos que queremos apagar as definição de f(x), g(x), h(x,y,z) e o valor
de c=3 para isto basta entrarmos com o comando

Clear[f,g,h,c]

11
e teremos apagado as definições destas funções e o valor da constante c.
Voltando ao exemplo em questão, para verificarmos se a definição da função f(x) esta correta é
só darmos o comando

f[x]
2 3
-10 - 5 x + x

com este comando nós podemos ver a atual definição da função f(x).
Para calcular f(0), f(7), f(-2), f(d), f(c2) basta digitar f[ponto] ou f[x] /. x->ponto

f[0]
-10

f[x] /. x->7
88

f[-2]
-38

f[d]
2 3
-10 - 5 d + d

f[c^2]
4 6
-10 - 5 c + c

Exemplo: Defina g(x)= a.b.x3 onde a e b são duas constantes. Calcule g(0), g(5),g(-3) quando
.a=2 e b=-3. Repita os cálculos para a=3 e b=5.

Primeiramente devemos “limpar” qualquer definição anterior de g(x) que possa existir após
definimos os valores de a e b, então definimos a função g(x), sendo que não há nenhuma ordem a ser
seguida quanto na definição de g(x) , a e b, podendo-se também definir primeiro g(x) e após definir os
valores de a e b.

Clear[g]
a=2;
b=-3;
g[x_]:=a b x^3

12
Digitando

g[x]
3
-6 x
Encontramos a atual definição de g(x), enquanto que digitando

g[0]
0

g[5]
-750
g[-3]
162

Encontramos os valores de g(0)=0, g(5)=-750, g(-3)=162 respectivamente.

Para efetuarmos as contas quando a=3 e b=5 basta definir os novos valores de a e b e então
calcular os valores da função nos pontos.

a=3
b=5
g[x]
3
15 x

Note que agora g(x) é definida como sendo 15x3 e não mais -6x3 pois nós mudamos os valores
de a e b. Digitando novamente

g[0]
0

g[5]
1875

g[-3]
-405

encontramos os valores de g(0)=0, g(5)=1875, g(-3)=-405 quando a=3 e b=5.

Entretanto é bom entender que o Mathematica consegue realmente calcular o valor da função
no ponto apenas porquê ela era definida como g[x_]:= se ao invés disso você a tivesse definido como
g[x]:= ele NÃO retornaria o valor da função no ponto como pode ser visto abaixo.

Clear[h]
h[x]:=x^2;

13
h[2]

h[2]

Se definíssemos novamente h(x) mas dessa vez utilizando o “_” após a variável teríamos:

Clear[h];
h[x_]:=x^2;
h[2]

Percebemos que dessa vez a resposta é realmente o valor da função no ponto desejado (h(2)=4).
Quando a função é definida como f[x_]:= o Mathematica pode calcular o valor de f(x) para
qualquer número real, desde que ele pertença ao domínio da função é claro.
Nós também podemos definir uma função diferentemente para intervalos distintos como no
exemplo abaixo:

Exemplo: Defina f( x ) = x2 para 2  x  0


f ( x ) = 1 - x para 0  x  2
f(x)=x para outros valores de x.
e calcule os valores de f(-1), f ( 0 ), f(10).

Procedendo de maneira semelhante teremos:

Clear[f]
f[x_]:=x^2 /; -2<=x<0
f[x_]:=1-x /; 0<=x<2
f[x_]:=x

que define a função f(x) da maneira como queriamos, enquanto que para calcular os valores de
f(x) nos pontos teremos:

f[-2]
4

f[0]
1

f[10]
10

f[-100]
-100

14
onde estamos calculando f(-2)=4, f(0)=1, f(10)=10, f(-100)=-100 respectivamente. É bom notar
que em cada ponto se utiliza a definição de f(x) para o intervalor ao qual o ponto pertence.Assim f(-2) é
calculado com f(x)=x2 enquanto que f(-100) utiliza f(x)=x.
Neste exemplo nós pudemos verificar que uma função pode ser definida de uma maneira diferente
em cada intervalo. O comando/; tem o significado matemático de “tal que”, os sinais de <, >, <=,
>= podem ser utilizados para definir os intervalos. O sinal != significa diferente.
Nós podemos também entrar com expressões do tipo n1<=( ou outro sinal matemático) n2 sendo
que o Mathematica nos retorna se a expressão e verdadeira ou falsa.
Neste caso digitando

1<2
True

a resposta é True(verdade) porquê a expressão 1<2 esta correta.Digitando

1>=3
False

a resposta é False(falso) porquê 1 não é maior ou igual a 3. Enquanto que

a + b != b + a
False

por que a ordem das parcelas não altera a soma(a+b=b+a).

2.2.3 -Funções de duas ou mais variáveis.

Para se definir funções de duas ou mais variáveis nós podemos proceder da mesma maneira como
fizemos no caso de funções de uma variável, bastando apenas definir quem são as variáveis de nossa
função.

Exemplo: Defina f(x, y) = 2 x2 - 5 y5 e g(a, b, c) = (2 a - 3b2 )/ c1/4 e calcule o valor de f(1,1),


.f(2, 3), f(r, z), g(1, 1, 1), g(2, 1, 3), g(r, s, t).

Primeiramente iremos definir f(x, y) e g(a, b, c)

Clear[f,g,a,b,c];
f[x_,y_]:=2 x^2 - 5 y^5;
g[a_,b_,c_]:=(2 a - 3 b^2)/(c^(1/4));

Entrando com

15
f[x,y]
2 5
2 x - 5 y e

g[a,b,c]

2
2 a - 3 b
----------
1/4
c

Estaremos observando as atuais definições das funções f(x, y) e g(a, b, c).Para calcularmos os
valores nos pontos pedidos basta digitar

f[1,1]
-3

f[x,y] /. x->2 /. y->3


-1207

f[x,y] /. {x->r, y->z}


2 5
2 r - 5 z

g[1,1,1]
-1

g[2,1,3]//N
0.759836

g[r,s,t]
2
2 r - 3 s
----------
1/4
t

Onde estaremos calculando os valores de f(1,1)=-3, f(2,3)=-1027, f(r,z)=2r2 - 5z5 , g(1,1,1)=-1,


2r  3s 2
g(2,1,3)=0,759836 e g(r,s,t)= respectivamente.
t 1/ 4

16
2.2.4 - Funções pré-definidas.

O Mathematica possui uma grande quantidade de funções que já estão pré-definidas, podendo
ser utilizadas a qualquer momento. Entre elas nós poderíamos citar função módulo, Abs[x], função
exponencial, Exp[x], função logaritmo natural (Ln), Log[x], função logarítmica numa base b,
Log[b,x] , e as funções trigonométricas, Sin[x], Cos[x],
Tan[x],Sec[x],Csc[x],Cot[x] e também as funções trigonométricas inversas ArcSin[x],
ArcCos[x], ArcTan[x], ArcSec[x], ArcSec[x], ArcCsc[x], ArcCot[x].

2.2.4.1 - Funções Exponenciais, logarítmicas e função módulo.

Exemplo: Calcule e-1/5 e construa o gráfico de e-x no intervalo [-3,3].

Primeiramente vamos calcular o valor de e-1/5, como Exp[x] é uma função já definida no
Mathematica basta entrar com o comando

Exp[-1/5]

-(1/5)
E

O Mathematica devolve a expressão acima porquê ela é a melhor aproximação para e-1/5, para
que possamos obter uma aproximação numérica devemos entrar com(Note que Exp[-1/5]//N também
poderia ser utilizado.).

N[Exp[-1/5],8]

0.81873075

Para obtermos o gráfico devemos utilizar o comando gráfico

Plot[f[x], {x, xmín, xmáx}, opções].

onde f(x) é uma função cujo gráfico nós queremos observar no intervalo {x, xmín, xmáx} sobre as
opções possiveis para esta função gráfica nós falaremos detalhadamente mais tarde, porém podemos
adiantar que será possivel mexer na escala do gráfico, no intervalo da varíavel dependente, nomes de
eixos, linhas de grade, enfim muitas coisas.
Voltando ao nosso exemplo fazendo o gráfico teremos:
Plot[Exp[x],{x,-3,3}]

17
-Graphics-

A função módulo é denotada por Abs[número ou expressão] sendo que além de


funcionar com números reais também pode ser utilizada com números complexos da forma x + yI.
Lembramos que quando se deseja o módulo de um número complexo (Abs[x + y I]) é eqüivalente
a calcularmos o valor de x2 + y2 .
Por exemplo:

Abs[5]
5

Calcula o modulo de 5 = | 5|

Abs[-5]
5

enquanto que

Abs[4 - 5 I]//N
6.40312

calcula |4 - 5I| = 4 2  52 , sendo o comando //N usado para obtermos uma aproximação. Nós
podemos também plotar gráficos de módulos de funções, como abaixo

Clear[f];
f[x_]:=Abs[x^3 - 5 x]
Plot[f[x],{x,-2,2},AxesLabel->{"x","f[x]"}]

18
-Graphics-

A opção AxesLabel->{“eixo horizontal”, “eixo vertical”} serve para


identificar, se necessário, os eixos do gráfico.
Maiores informações sobre o que algumas dessas opções realiza serão dadas no capítulo seguinte.
A função Log[x] também é de fácil utilização, devendo-se tomar o cuidado de não confundi-la
com o logaritmo de base 10 pois Log[x] no Mathematica eqüivale ao logaritmo natural (base e). Para
ln( X )
obtermos o LogbX = ln( b) devemos digitar Log[b,X] .

Exemplo: Calcule os valores de ln(20), ln(233), log101000, Log1/2150.

Utilizando as funções Log[x] e Log[base,x] teremos:

Log[20]
Log[20]

Log[233]//N
5.45104

Log[10,1000]
3

Log[.5,150]//N
-7.22882

onde estaremos calculando ln(20), ln(233)  5,45104, log101000=3 , log1/2150  -7,22882


respectivamente. Observe que se desejarmos obter uma aproximação de Ln(20) devemos entrar com o
comando Log[20]//N ou N[Log[20].

2.2.4.2 - Funções Trigonométricas e Trigonométricas Inversas

19
Exemplo: Calcule sen  2  , cos 3  , tan 34  , sec 4  e plote os gráficos de sen(x) e sec(x) no
.intervalo [-2 , 2 ].

Para calcular o valor de uma função trigonométrica em um ponto basta digitar o nome da função
e no lugar do argumento colocar o ponto desejado.Neste caso teremos:

Sin[Pi/2]
1

Cos[Pi/3]
1
-
2

Tan[3 Pi/4]
-1

Sec[Pi/4]
Sqrt[2]

Estes comandos calculam, respectivamente, sen  2  =1, cos 3  =0,5, tan 34  =-1 e sec 4  = 2.
Para obtermos uma aproximação de sec  4   1,41421 podemos entrar com o comando:
%//N

1.41421

O comando % significa repetir o último comando dado, ou seja, no exemplo o Mathematica irá
repetir o comando Sec[Pi/4] acrescido de //N para que possamos obter a aproximação desejada.
Agora iremos plotar os gráficos utilizando o comando gráfico Plot

Plot[Sin[x],{x,-2Pi,2Pi},PlotStyle->RGBColor[0,0,1]]

20
-Graphics-

A opção PlotStyle-> RGBColor[vermelho, verde, azul] define que o gráfico


será mostrado com os níveis de vermelho, verde e azul escolhidos, sendo que estes variam de 0 até 1 e
podem ser combinados.

Plot[Sec[x],{x,-2Pi,2Pi},PlotStyle->Dashing[{.02}],
PlotPoints->40]

-Graphics-

A opção PlotStyle->Dashing[{n}] define que o gráfico será pontilhado, enquanto que


PlotPoints->p faz com que o Mathematica divida o gráfico em p x p pontos em cada eixo antes de
plotar o gráfico, sendo o valor pré-definido igual a 25, quanto maior este número mais nítido será o
gráfico, porém mais tempo o Mathematica levará para plotá-lo.

Exemplo: Calcule os valores de cos-1(0.75), sen-1(0.75), tan-1 34  , arcsec 34  e faça também
.gráfico de cosh(x) no intervalo [-2, 2].

Para calcular os valores das funções nos pontos basta digitarmos:

21
ArcCos[.75]//N
0.722734

ArcSin[.65]//N
0.707584

N[ArcTan[3 Pi/4]]
1.16942

N[ArcSec[3Pi/4],8]
1.1324826

onde estaremos calculando cos-1(0.75),722734, sen-1(0.75),707584, tan-1 34  1,16942,


arcsec 34  1,1324826.

Para plotarmos o gráfico de cosh(x) procederemos da seguinte maneira:

Plot[Cosh[x],{x,-2Pi,2Pi}]

-Graphics-

2.2.5 - Composição de funções

O Mathematica pode calcular f ( g ( x ) ) de uma maneira muito simples bastando digitarmos


f[g[x]], entretanto outros dois comandos podem ser de grande utilidade quando necessitamos calcular
f ( f ( ...) ) n vezes. Estes comandos são:

Nest[f, x, n] - que calcula (


f 
f  x )  f (f ,,, f ( x ) onde f é uma função de x e n é o
f )(
f ...
nvezes
número de repetições.

Composition[f1, f2, f3,...fn][x] - que calcula f1 ( f2 ... ( f ( x ) ) ).

22
Exemplo: Seja f ( x ) = x2 - x , g( x ) = x3 + x e k( x ) = Ln (x) + cos( x ) calcule:
a) (f og)( x ) = f( g ( x ) ), b) (gog)(x - 1) = g ( g ( x - 1))
c) (f o k )(pi/2) = f( k (pi/2)) e d) f ( cos ( x - i y)).

Primeiramente iremos definir as funções :

Clear[f,g,k];
f[x_]:=x^2 - x;
g[x_]:=x^3 + x;
k[x_]:=Log[x] + Cos[x];

De acordo com os comandos descritos acima teremos:

a) Para calcular (f og)( x ) = f( g ( x ) ) digitaremos:

f[g[x]]
3 3 2
-x - x + (x + x )

Obteríamos o mesmo resultado se tivéssemos feito

Composition[f,g][x]

3 3 2
-x - x + (x + x )

b) Calculando (fof)(x - 1) = f ( f ( x - 1)) encontramos

Composition[f,f][x-1]

2 2 2
-1 + (1 + (-1 + x) - x) - (-1 + x) + x

se desejarmos simplificar a expressão basta fazer %//Simplify

%//Simplify
2 3 4
2 - 9 x + 12 x - 6 x + x

Lembrando que o sinal % faz com que o Mathematica® repita o último comando dado.

c) Fazendo o mesmo com (f o k )(pi/2) = f( k (pi/2))

Composition[f,k][Pi/2]

23
Pi Pi 2
-Log[--] + Log[--]
2 2

Uma aproximação numérica pode ser conseguida com

%//N
-0.247656

d) finalmente para calcular f ( cos ( x - i y)) teremos

f[Cos[x - y I]]
2
-Cos[x - I y] + Cos[x - I y]

Exemplo: Calcule (g o g o g o g)( x ) sendo que g ( x ) = x2 -12 e encontre também


.tg(tg(tg(tg(tg(tg(tg( x ))))))). De os valores de tg(tg(tg(tg(tg(tg(tg( x ))))))) para x = 0 e x = 23,4.

Primeiramente iremos definir a função g( x ).

Clear[g]
g[x_]:=x^2-12;

Agora utilizando o comando Nest teremos:

Nest[g,x,4]//Simplify
2 4 2 2
-12 + (-12 + (132 - 24 x + x ) )

no caso de tg(tg(tg(tg(tg(tg(tg( x ))))))) faremos:

Nest[Tan,x,7]
Tan[Tan[Tan[Tan[Tan[Tan[Tan[x]]]]]]]

Para calcularmos o valor da função num valor específico de x basta trocarmos o “x” no comando
Nest pelo valor em questão.
Desta forma:

Nest[Tan,0,7]
0

Calcula o valor de Tan(Tan(Tan(Tan(Tan(Tan(Tan(0))))))) = 0


enquanto que

24
Nest[Tan,23.4,7]
-0.171589

Calcula Tan(Tan(Tan(Tan(Tan(Tan(Tan(23,4))))))) = -0,1715890

2.3 - Soluções exatas e aproximadas de equações

2.3.1 - Soluções exatas

O Mathematica pode nos auxiliar na resolução de muitas equações. Em sistemas de equações e


em equações polinomiais de grau quatro ou menor ele pode nos dar uma solução exata, enquanto que nas
de grau maior ou não polinomiais ele nos dá uma aproximação das soluções.
No Mathematica a igualdade entre duas expressões não está definida como um único sinal de
igual (“ = “) pois este sinal serve para definir nomes de objetos. Quando estamos tratando de equações
devemos utilizar o sinal “= =“ da seguinte forma:

lado esquerdo da equação(lhs) == lado direito da equação(rhs)

O comando básico para encontrar a solução de uma equação deste tipo é :

Solve[lhs==rhs, incógnitas]

Por exemplo para solucionarmos a equação 2 x - 7 = 4 nós devemos entrar com o comando
Solve[2 x - 7 ==4, x], embora como neste caso só temos uma variável poderíamos entrar somente
com Solve[2 x - 7 ==4]. Vejamos os exemplos seguintes:

x2  2
Exemplo: Encontre a solução das equações 2 x - 7 = 4 , 3 x2 - 2 x - 5 = 2 , 0e
x 1
.x3 - 2 x2 + x + 12 = 0

Para resolver a equação 2 x - 7 = 4 (o que implica em x = 11/2) utilizando o comando explicado


acima teremos:

Solve[2 x - 7 ==4, x]

11
{{x -> --}}
2

Percebemos que quando entramos com o comando

25
Solve[2 x - 7 ==4]

11
{{x -> --}}
2

obtemos o mesmo resultado já que a equação só possuí uma incógnita.

Para resolvemos a equação x2 - 2 x - 5 = 10 ( x = -3 ou x = 5) iremos inicialmente chama-la de


eq2 e após iremos resolve-la( embora não seja necessário defini-la como eq2).

Clear[eq2]
eq2 = x^2 - 2 x - 5 = = 10

2
-5 - 2 x + x == 10

a solução é encontrada fazendo

Solve[eq2, x]

{{x -> -3}, {x -> 5}}

x2  2
Para encontrarmos assoluções de  0 que são x  2 ou x   2 faremos
x 1

Solve[(x^2 - 2)/(x + 1)==0,x]


{{x -> Sqrt[2]}, {x -> -Sqrt[2]}}

Enquanto que para encontrar as soluções da equação x3 - 5 x2 + x -5 = 0 (que são x = + 1 = i ,


x = - 1 = - i e x = 5 ) basta digitar

Solve[x^3 - 5 x^2 + x - 5== 0 ,x]

{{x -> 5}, {x -> I}, {x -> -I}}

Exemplo: Encontre a solução das equação sen(x) - Cos(x) = 0 e sen2(x) - sen(x) = 0.

Procedendo da mesma maneira acima teremos:

26
Solve[(Sin[x])^2 - Sin[x]==0]

{{Sin[x] -> 1}, {Sin[x] -> 0}}

Entretanto nós podemos perceber que o Mathematica da como solução da equação sen(x) = 1 e
sen(x) = 0 e não os valores de x tais que sen(x) = 1 e sen(x) = 0(Pois o conjunto de completo de soluções

e formado por x =  2 k ou x = 0  k onde k é um número inteiro). Entretanto quando digitamos
2

Solve[(Sin[x])^2 - Sin[x]==0,x]

Solve::ifun:
Warning: Inverse functions are being used by
Solve, so some solutions may not be found.

Pi
{{x -> --}, {x -> 0}}
2

Ele nos retorna os valores de x mas também nós mostra uma mensagem de erro pois ele não está

nos dando todas as soluções da equação que são infinitas já que x = + 2  k e x = 0 + 2  k onde k 
2
ao conjunto dos números inteiros forma o conjunto de todas as possíveis soluções da equação.

Para resolvermos sistemas de equações nós podemos utilizar o comando Solve da seguinte
maneira

Solve[{lhs1==rhs1, lhs2==rhs2,...,lhsn==lhsn},{x1,x2,...xn}]

Onde o comando acima consegue encontrar as soluções de um sistema de n equações e n


incógnitas (1, x2, ..., xn ).

Exemplo: Resolva os sistemas de equações:

9 x  3y  z  1
5x  2 y  4 
a)  e b)  x  y  2
2 y  4 x  5 3y  4 z  6

41
a) Resolvendo o sistema ( x = 9 e y = ) utilizando o comando explicado acima teremos:
2

27
Solve[{5 x - 2 y==4, 2 y - 4 x ==5},{x,y}]

41
{{x -> 9, y -> --}}
2

8 62 29
b) Para acharmos a solução para este sistema ( x   ,y   ,z   ) faremos:
27 27 9

Solve[{9 x - 3 y + z ==1,x - y==2, 3 y - 4 z ==6},{x,y,z}]

8 62 29
{{x -> -(--), y -> -(--), z -> -(--)}}
27 27 9

O Mathematica também pode isolar uma variável em função de outras como pode ser observado
no exemplo abaixo:

Exemplo: Seja v = 2r2 h, onde v é o volume do cilindro de base circular (com raio r) e altura
.h, isole r em função do volume e da altura. Seja também x = x0 + vel t a equação dos espaços isole vel
.em função das outras variáveis.

Utilizando o comando Solve teremos:

Solve[v==2 Pi r^2 h, r]

Sqrt[v]

{{r -> ------------------},


Sqrt[h] Sqrt[2 Pi]

Sqrt[v]
{r -> -(------------------)}}
Sqrt[h] Sqrt[2 Pi]

Sendo que somente a primeira solução (r-> + ...) é a única válida pois não podemos ter
r<0.

Para isolarmos a velocidade, na equação seguinte, devemos fazer:

28
Solve[x == x0 + vel t, vel]

x - x0
{{vel -> ------}}
t

No exemplo abaixo mostraremos como o comando Solve pode ser utilizado com a opção //N
que faz com que tenhamos uma aproximação da solução encontrada. Utilizaremos também o comando
Nsolve que produz os mesmos resultados.

Exemplo: Calcule o valor que satisfaz a equação 3 x4 - 2 x + 1 = 0 e também o valor que satisfaz
x - 4 x + 2 x2 = 6.
3

Utilizando o comando Nsolve para encontrarmos as soluções de 3 x4 - 2 x + 1 = 0 faremos:

NSolve[3 x^4 - 2 x + 1 ==0, x]

{{x -> -0.5689525245234536 - 0.7852661698335345 I},

{x -> -0.5689525245234536 + 0.7852661698335345 I},

{x -> 0.5689525245234536 - 0.1754166264588184 I},

{x -> 0.5689525245234536 + 0.1754166264588184 I}}

Enquanto que para encontrarmos as soluções de x3 - 4 x + 2 x2 = 6 teremos:

Solve[x^3 - 4 x + 2 x^2 ==6, x]//N

{{x -> 1.8662 + 0. I}, {x -> -2.65544 + 0. I},

{x -> -1.21076 + 0. I}}

É bom saber que o comando com//N pode ser sempre utilizado quando se quer uma aproximação
numérica de com, sendo que isto muitas vezes é indispensável. Para você ter uma idéia da importância
deste comando tente realizar o comando Solve[x^3 - 4 x ...,x] sem o //N e veja o tamanho
da resposta dada pelo Mathematica.

29
2.3.2 - Aproximação de soluções vizinhas a um ponto

Como dissemos no início deste item o comando Solve apenas consegue encontrar a solução
para polinômios de ordem igual ou menor que 4. Para encontrar uma solução para polinômios de ordem
maior que 4 devemos utilizar um dos comandos abaixo (sendo que estes comando podem ser utilizados
para um polinômio de qualquer ordem) :

NRoot[ polinomio1==polinomio2, x]

FindRoot[polinomio1==polinomio2, {x,ponto}]

Enquanto que Nroot não precisa de mais nenhum conhecimento além do polinômio do qual
queremos encontrar a solução o comando FindRoot necessita que saibamos os pontos próximos as
raízes do polinômio em questão, estes pontos podem ser encontrados fazendo-se um gráfico da função
definida por este polinômio e estimando os pontos onde há o cruzamento com o eixo da variável
independente.

Exemplo: Encontre as raízes do polinômio x6 - 3 x5 - 2 x2 - 7 x = 5.

Digitando o comando explicado acima teremos:

NRoots[x^6 -3 x^5 - 2 x^2 - 7 x ==5, x]

x == -0.748532 || x == -0.608441 - 0.787402 I ||

x == -0.608441 + 0.787402 I ||

x == 0.907194 - 1.14797 I ||

x == 0.907194 + 1.14797 I || x == 3.15103

Vimos que o Mathematica nos retorna as 6 soluções da equação cada qual separada por ||.

Se desejássemos utilizar o comando FindRoot deveríamos primeiramente plotar o gráfico da


função para que possamos estimar as raízes. Fazendo o gráfico teríamos:

Clear[eq]
eq=x^6 - 3 x^5 - 2 x^2 - 7 x - 5 ;
Plot[eq, {x,-4,4}, PlotRange->{-1,1}]

30
-Graphics-

Veja que inicialmente nós definimos eq como sendo a função para não termos que escreve-la
toda vez que formos utilizar o comando FindRoot. A opção PlotRange->{-1,1} e incluída pois só estamos
interessados nos valores de y iguais a zero. Feito isto podemos estimar que x= -1 e x = 3 devem estar
próximos do valor das raízes reais da equação. Então

FindRoot[eq==0, {x,-1}]

{x -> -0.748532}

encontra o valor da raiz próxima ao ponto x = -1 e

FindRoot[eq==0, {x,3}]

{x -> 3.15103}

Encontra o valor da raiz próxima ao ponto x = 3. Ainda utilizando FindRoot se digitássemos

FindRoot[eq==0,{x,-1 -1 I}]

{x -> -0.608441 - 0.787402 I}

Estaríamos encontrando a raiz próxima ao ponto x = -1 - i . Obviamente que encontrar uma


estimação para um valor de uma raiz complexa pode ser muito difícil.

Exemplo: Encontre as raízes da equação h ( x ) = k ( x ) onde h ( x ) = x3 - 5 x2 + 2 x - 5 e .k


x2 x
(x)=   5.
9 2

Definindo as funções k( x ) e h( x ) teremos:

Clear[k,h]

31
h[x_]:= x^3 - 5 x^2 + 2 x -5 ;
k[x_]:=(x^2)/9 - x/2 - 5;

Para podermos utilizar o comando FindRoot na solução da equação iremos fazer o gráfico das
funções para saber onde elas possuem pontos em comum.

graf1=Plot[h[x],{x,-1,7},PlotStyle->Dashing[{0.04}],
PlotPoints->150,DisplayFunction->Identity]
graf2=Plot[k[x],{x,-1,7},PlotPoints->50,
DisplayFunction->Identity]

-Graphics-
-Graphics-

Para mostrar os dois objetos gráficos sobre o mesmo eixo basta fazer:

Show[graf1,graf2,PlotRange->{-20,5},
DisplayFunction->$DisplayFunction]

-Graphics-

Observando o gráfico acima podemos perceber que as funções se interceptam em,


aproximadamente, x = 0, x = 1 e x = 4, 5. Sendo assim utilizando o comando FindRoot teremos:
Para encontrar o ponto próximo a 0 basta fazer

FindRoot[h[x]==k[x], {x,0}]
{x -> 0.}

Enquanto que

FindRoot[h[x]==k[x], {x,1}]
{x -> 0.547854}

serve para encontrar o ponto próximo a 1 e

32
FindRoot[h[x]==k[x], {x,4.5}]
{x -> 4.56326}

Encontra o ponto próximo a 4,5.

No exemplo seguinte mostraremos como utilizar o mouse para encontrar o ponto no qual uma
função se encontra com outra ou com um dos eixos.

x2 x x
Exemplo: Seja f( x ) = Sen( ) e g( x ) = Exp( ) 2 Cos( ) encontre os pontos tais que f( x ) =
3 3 2
. g( x ) e que estejam no intervalo [-5,5].

Neste caso não podemos utilizar o comando Nroots pois f e g não são funções polinomiais
devemos então utilizar o comando FindRoot que funciona com qualquer tipo de função.
Definindo f e g temos:

Clear[f,g]
f[x_]:= Sin[(x^2)/3];
g[x_]:=Exp[-(x/3)^2] Cos[x/2]

Feito isto podemos plotar o gráfico das funções no intervalo.

graff=Plot[f[x],{x,-5,5},PlotStyle->RGBColor[0,0,1],
DisplayFunction->Identity];
grafg=Plot[g[x],{x,-5,5},DisplayFunction->Identity];
Show[graff,grafg,DisplayFunction->$DisplayFunction]

33
-Graphics-

Agora que já temos o gráfico feito precisamos encontrar aproximadamente os pontos nos quais f
( x ) = g( x ). Para fazer isto podemos clicar uma vez o botão esquerdo do “mouse” em cima da figura.
Agora pressionando Ctrl e movendo o ícone que aparece sobre a figura, nós estaremos vendo no canto
inferior da tela a exata localização do cursor, o que nos ajuda a encontrar os pontos de intersecção das
funções. Neste caso nós estaremos vendo a seguinte tela:

34
Podemos notar que no canto inferior esquerdo aparecem as coordenadas {1.392, .596} estas são
as coordenadas {x, y} em que o cursor está. Agora para encontrarmos estes pontos com mais precisão
basta clicar uma vez fora do gráfico e digitar:

FindRoot[f[x]==g[x],{x,1.392}]

{x -> 1.40615}

Procedendo de maneira idêntica para os outros pontos teremos:

FindRoot[f[x]==g[x],{x,-4.283}]

{x -> -4.31737}

FindRoot[f[x]==g[x],{x,-3.09}]

{x -> -3.06322}

FindRoot[f[x]==g[x],{x,-1.428}]

{x -> -1.40615}

FindRoot[f[x]==g[x],{x,3.09}]

{x -> 3.06322}

FindRoot[f[x]==g[x],{x,4.283}]

{x -> 4.31737}

Teremos então encontrado os seis pontos que f e g possuem em comum no intervalo [-5,5].

EXERCÍCIOS

Exercício 2.01 - Efetue as seguintes operações:

3x65
a) 1  12   23
2  2x5
2 3/ 4
b) 5 
20

35
c) 3 8961.4
d) E 6 23

Solução:
a) -17,75 ; b) 4,91591 ; c) 2,21022 ; d) 3,33399.

Exercício 2.02 - Desenvolva a expressões: a) (2 - 3 x)(4- x 3 ) (4 - 23,5)


b) ( E2-3x) (x-1) 5

Solução:
a) -58.5097 + 87.7645 x + 14.6274 x 3 - 21.9411 x x 3 ; b) 5E 23x  5xE 23x

Exercício 2.03 - Fatore as expressões: a) x 4  12 x 3  49 x 2  78x  40 e


b) x 4  7,6x 3  16,25x 2  7,55x  0,6

Solução:
a) (x - 5) (x - 4) (x - 2) (x - 1) ; b) (x - 4) (x - 3) (x - 0,5) (x - 0,1).

Exercício 2.04 - Reduza as somas de frações a uma única fração:

2  x 5x x 2  1
a)  
x 4 x2
2 2  x x 2  2x  1
b) x 
9x x3 x 1
y3 2y
c) 2  35y 
y y 1

Solução:
x 3  14 x 2  20x  16 3 9  x  2x  2x 9  x  6
a) b)
4 x  8x
2
9  x ( x  3)
y
35y 3  2 y 2  3 y
y 1
c)
y2

Exercício 2.05 - Pegue as soluções encontradas no exercício anterior e transforme-as em somas


de frações novamente.
Solução:
2 3 2 3  2x y 35y 3  y  3
a)  3   0,25x ; b)  ; c)  2 
x x2 9x x3 y 1 y2

Exercício 2.06 - Simplifique as seguintes expressões:

36
x 2  4x  4
a) ;
x2

sen( / 2)(2 x 4  4 x 3  x 2  2 x  1)
b) ;
x 2  2x  1

(5x  2)(3  2i )
c) ;
4i

Solução:
1 3i
a) x  2 ; b) 2 x 2  1 ; c) (  )(2  5x) .
2 4

f ( x  h )  f ( x)
Exercício 2.07 - Defina e calcule f(0), f(-1), , f(2) e f(5) quando f(x) é dada
h
por:

a) 2 x 3  3x ;
b) sen( x)  tg(2 x)
c) aE  ax onde a = 2
d) idem ao item c mas com a= -1.

Solução:
f ( x  h )  f ( x)
a) f(0)=0, f(-1)= 1, f(2)=10, f(5) = 235 e = 6x 2  6hx  2 h 2  3 .
h
f ( x  h )  f ( x)
b) f(0) = 0 ; f(-1) = -3,02651; f(2) = -0,248524; f(5) = -1,60729 e =
h
sen( x  h)  sen( x)  tg(2x  2h)  tg(2x)
.
h
f ( x  h )  f ( x)
c) f(0)= 2; f(-1)= 14,7781; f(2)=0,0366313; f(5)=0,0000907999 e =
h
1 1
exp( )  exp( )
h hx
.
h
f ( x  h )  f ( x)
d) f(0)= -1; f(-1)=-0,367879; f(2)= -7,38906; f(5)=-148.413 e =
h
Exp( h)(1 Exp( x))
.
h

Exercício 2.08 - Defina e calcule g(0,0), g(1,1), g(2,-3) g(-1,-1) sendo g(x, y) dada por:

a) ln(| x  2y|)  xy ;

37
b) log 10 ( y  3x) ;
x
c) sen 1 (  2 y 2 ) 1/ 3 ;
y
d) cosh(3x  2y) ;

Solução:
a) g(0,0)-> - infinito; g(1,1) = -1; g(2,-3) = 8,07944; g(-1,-1) = -1.
b) g(0,0)-> i*infinito; g(1,1) = 0,921472+i 0,7403241; g(2,-3)= 1,14438 +i 0,596121
e g(-1,-1) = 0,548662.
c) g(0,0) é indeterminado; g(1,1)=0,374734 + i 0,831443; g(2,-3)=0.49446 + i0,6873
e g(-1,-1)= 0.374734 + 0.831443 i.
d) g(0,0)= 1; g(1,1) = 1.54308; g(2,-3) = 81377.4 e g(-1,-1) = 1.54308.

Exercício 2.09 - Seja f(x) = sen( x)  2 e g(x) = x 2  2 ln x encontre:

a) fog(x), gof(x), fof(x) e gog(x);


b) fof(2) , gof(-1) e gog(cos(x)).
c) fofofofof(x) e idem quando x=3
d)gogogogogog(senh(2)).

Solução:
a) fog(x) = f(g(x)) = sen( x 2  2 ln( x))  2 ; gof(x) = 2 ln(sen( x)  2)  (sen( x)  2) 2 ;
fof(x)= 2  sen(2  sen( x)) ; gog(x)= ( x 2  2 ln( x)) 2  2 ln( x 2  2 ln( x))
b) fof(2) = -2,88695; gof(-1) = 5.98531 - i 6.28319; gog(cos(x))=
(cos2 ( x)  2 ln(cos( x))) 2  2 ln(cos2 ( x)  2 ln(cos( x)))
c) fofofofof(x)= -2-sen(2+sen(2+sen(2+sen(2-sen(x))))) e fofofofof(3)=-2,31695
d) gogogogogog(senh(2)) = 2,45125 10 63 .

Exercício 2.10 - Seja g(x) dada por :


g(x) = x-2 se -2<x<0
2
g(x) = x se 0x<2
g(x) = x2-2x se 2x5
g(x) = x para outros valores de x.
Calcule g(-1.5), g(0), g(2), g(3), g(5) , g(1000) e faça o gráfico de g(x) no
intervalo [-3,7].

Solução: g(-1,5)=-3,5; g(0) = 0; g(2) = 0; g(3,5) = 5,25; g(5) = 15; g(1000) = 1000. Para fazer o
gráfico devemos utilizar Plot[g[x], {x,-3,7}].

Exercício 2.11 - Encontre as soluções das seguintes equações:

a) x 2  3x  5  0
b) x 3  6x 2  12 x  3  5
x 2  2x  8
c) 2
x 2  3x

38
d) x 4  2 x 2  6x  4  0

Solução:
a) x  4,19258 e x  -1,19258 ; b) x  7,6116, x  -1,42702 e x  -0,184141; c) x  5,4641
e x  -1,4641; d) x  2, x  0,574743, x  -1,28737 + 1,35 i e x  -1,28737 - 1,35 i.

Exercício 2.12 - Encontre as soluções dos seguintes sistemas de equações:

7x  12y  9
a) 
5x  4y  7

 x  4 y  3z  1

b) 2 x  5y  4 z  4
 x  3y  2 z  5

x  y  2z  4

c) 2 x  5y  2 z  3
x  7y  7z  5

5 x1  2 x 2  3x3  5 x 4  5
2 x  0 x  x  3x  6
 1 2 3 4
d) 
0 x1  7 x 2  2 x3  5 x 4  4
 1x1  4 x 2  0 x3  0 x 4  0

Solução:
3 1 17 11
a) {x, y} = { , }; b) {x, y, z} = {3, -2, 2}; c) {x, y, z} ={ 9, , };
2 8 3 3
34 17 97 7
d) {x1 , x 2 , x 3 , x 4 }  { , , , }.
5 10 10 10

Exercício 2.13 - Encontre as soluções das equações:

a) 2 x 6  5x 4  3x  2  0 ;
b) x 7  2 x 5  6x 2  4 x  8  0 ;
c) f(x) = g(x) em [-5,5] sendo f(x) = Exp(x)( x 3  2 x 2  3x  1) e g(x) = cos(2x)
d) k(x) = h(x) onde k(x) = sen( x)( x 2  2 x) e h(x) = x 3 ln( x 2  1) .

Solução:
a) 𝑥 = −0,659817  0,70213 𝑖 , 𝑥 = 0,0919095  1,64251 𝑖 , 𝑥 =
0,567908  0,274799 𝑖 .
b) 𝑥 = −1,88434, 𝑥 = −0,778799  1,14964 𝑖, 𝑥 = 0,295277  0,917245 𝑖 , 𝑥 =
1,42569  0,581954 𝑖.

39
c) x = -1,76279, x = 0,x = 2,91673.
d) x = 0(multiplicidade 2), x = 1,65985.

40
CAPÍTULO 3 - GRÁFICOS

3.1 - Introdução

Saber como uma função se comporta com a variação de seus parâmetros é muito importante e uma
maneira simples de verificar esta mudança é utilizando um gráfico da função em questão.
Neste capítulo aprofundaremos o estudo de gráficos de funções que podem ser expressas por uma
equação matemática. Com o auxílio do Mathematica nós podemos fazer gráficos de funções de uma e
de duas variáveis, gráficos de funções paramétricas, curvas de níveis de funções de duas e três variáveis,
e também fazer figuras geométricas como quadrados, circunferências, retângulos, etc. Gráficos gerados
por uma tabela de dados serão estudados no capítulo que fala sobre matrizes, vetores e listas.

3.2 - Gráficos de funções de uma variável

Para fazermos gráficos de funções de uma variável nós podemos proceder como no capítulo
anterior, porém existem algumas opções que, quando acrescidas ao comando básico
(Plot[f(x),{x,xmín,xmáx}]), fazem com que o gráfico seja mostrado com alguma característica
especial que nós necessitamos para algum caso em particular.

Exemplo: Faça o gráfico de ln(x) no intervalo [0, 15], chame o eixo das abcissas de x e o das
.ordenadas de Ln(x), mostre somente valores de ln(x) no intervalo [-2.5, 2] e de um título para este
.gráfico.

Utilizando o comando básico Plot e acrescentando algumas opções teremos:

Plot[Log[x],{x,0,15},PlotRange->{0,2},
AxesLabel->{"eixo x","Ln(x)"},PlotLabel->"Função Ln(x) "]

Plot::plnr: CompiledFunction[{x}, Log[x], -CompiledCode-][x]


is not a machine-size real number at x = 0..

41
-Graphics-

Percebemos que o Mathematica, apesar de fazer corretamente o gráfico, nos mostra uma
mensagem de erro ( Plot::plnr: ...). Essas mensagens de erro indicam que a função não está bem definida
no intervalo dado, ou como neste caso que a função não possui um valor em todos os pontos do intervalo
(já que quando x-> 0 ln(x) -> -). Percebemos que só é mostrado o gráfico no intervalo [-2.5, 10] isto é
conseguido com a introdução da opção PlotRange->{ymín, ymáx} e pode ser útil quando estamos
interessados em apenas uma parte dos valores assumidos pela função. A opção PlotLabel->
“Título do Gráfico” serve para colocar um título no gráfico.

Exemplo: Faça o gráfico de f(x) = sen(x2) e g(x) = sen(x), no intervalo [-2, 2]. Mostre ambos
os gráficos num mesmo eixo para que possamos fazer uma comparação entre as duas funções.

Clear[f,g];
f[x_]:=x^3;
g[x_]:=x^2;
g1=Plot[f[x],{x,-2,2},PlotPoints->70,DisplayFunction-Identity]
g2=Plot[g[x],{x,-2,2},PlotStyle->Dashing[{.05}],
PlotPoints->70,DisplayFunction->Identity]

-Graphics-
-Graphics-

Note que nada e mostrado na tela pois a inclusão do comando DisplayFunction->Identity faz com
que o gráfico não seja mostrado na tela (sempre que utilizamos esta opção gráfica devemos nos lembrar
de incluir a opção Display Function ->$DisplayFunction no comando Show para que o
gráfico seja mostrado. Chamamos de g1 e g2 os comandos de Plot... para que possamos mostrar os dois
gráficos ao mesmo tempo com o comando abaixo.

Show[g1,g2,DisplayFunction->$DisplayFunction]

42
-Graphics-

O comando

Show[gráfico1, gráfico2, ...gráfico n, opções]

Faz com que vários objetos gráficos (gráfico1, gráfico2,... gráfico n) sejam mostrados ao mesmo
tempo sobre os mesmos eixos.
Utilizando o comando Options para obter informações sobre as opções do comando Plot nós
podemos digitar:

Options[Plot]
1
{AspectRatio -> -----------,Axes->Automatic,AxesLabel -> None,
GoldenRatio
AxesOrigin -> Automatic, AxesStyle -> Automatic,
Background->Automatic,ColorOutput->Automatic,Compiled-> True,
DefaultColor -> Automatic, Epilog -> {}, Frame -> False,
FrameLabel -> None, FrameStyle -> Automatic,
FrameTicks -> Automatic, GridLines -> None, MaxBend -> 10.,
PlotDivision -> 20., PlotLabel -> None, PlotPoints -> 25,
PlotRange -> Automatic, PlotRegion -> Automatic,
PlotStyle -> Automatic, Prolog -> {}, RotateLabel -> True,
Ticks -> Automatic, DefaultFont :> $DefaultFont,
DisplayFunction :> $DisplayFunction}

Sendo que :

AxesOrigin ->{nx,ny} - define x e y como sendo as coordenadas da origem dos eixos.


Frame -> True( ou False)- define se o gráfico será envolvido por uma moldura.
Ticks-> Automatic - faz com que o Mathematica coloque as marcas a seu modo.
Ticks->{ {posições em x}, {posições em y}} - faz com que os eixos contenham
marcas nas posições especificadas.
Ticks ->None - Faz com que o gráfico seja mostrados sem marcações nos eixos x e y.

43
Exemplo: Faça o gráfico de g ( x ) no intervalo [-2,4] tal que
g(x) = x se 0  x  2
g(x) = Cos( x ) se 2  x  8
g(x) = g(x-8) se x  8.

Inicialmente nós definiremos a função g ( x )

Clear[g]
g[x_]:=x/; 0<=x<2
g[x_]:=Cos[x] /;2<=x<8
g[x_]:=g[x -8]/; x>=8

Feito isso nós podemos fazer o gráfico de g ( x )

Plot[g[x],{x,0,24},
Ticks-{{2,4,6,8,10,12,14,16,18,20,22,24},{-1,0,1,2}}]

44
-Graphics-

3.3 - Gráficos de funções de duas variáveis em três dimensões

Da mesma maneira que o Mathematica consegue fazer gráficos de funções de


uma variável ele também consegue fazer gráficos de funções de duas variáveis em três
dimensões. Vejamos o exemplo seguinte:

Exemplo: Construa o gráfico de f(x, y) = sen(x) sen(y) no retângulo [-, ] x [-,


].

Plot3D[Sin[x] Sin[y], {x,-Pi,Pi},{y,-Pi,Pi}]

-SurfaceGraphics-

No exemplo acima verificamos que para fazer o gráfico de uma função de duas
variáveis devemos utilizar o comando

Plot3D[f(x,y),{x,xmín,xmáx},{y,ymín,ymáx}, opções].

45
Onde f(x, y) é a função de duas variáveis, {x,xmín,xmáx},{y,ymín,ymáx} especificam
os intervalos sobre o qual as variáveis(x e y respectivamente) irão assumir valores e as
opções podem ser conseguidas digitando-se Options[Plot3D].
Entre estas opções estão a de se ter ou não o gráfico envolvido por uma caixa
(Boxed->True ou Boxed->False respectivamente.). Os eixos também ser ou não
incluídos sendo que a opção é Axes->True ou Axes->None. Um gráfico que
incorpora algumas destas opções pode ser observado no exemplo abaixo:

Exemplo: Construa o gráfico de sen2( x 2  y 2 ) no retângulo [-2, 2] x [-2, 2].

Plot3D[Sin[Sqrt[x^2 + y^2]]^2, {x,-2Pi,2Pi},{y,-


2Pi,2Pi},
Boxed->False, Axes->None,Shading->False]

-SurfaceGraphics-

No exemplo acima nós podemos ver que foram incluídas as opções Boxed-
>False essa opção faz com que o gráfico não seja inserido dentro de uma moldura se
desejarmos podemos definir o tamanho da moldura, bastando para isso que digitemos
BoxRatios->{x, y, z}. A opção Axes->None faz com que não sejam mostrados
os eixos enquanto que Shading->False faz com que o gráfico seja mostrado em
preto e branco. Porém percebemos que o gráfico não está muito nítido, pois o intervalo
das variáveis e relativamente grande, para que possamos obter um gráfico com maior
nitidez podemos digitar

Plot3D[Sin[Sqrt[x^2 + y^2]]^2, {x,-2Pi,2Pi},{y,-


2Pi,2Pi},
Boxed->False, Axes->None,Shading->False, PlotPoints-
>40]

46
-SurfaceGraphics-

Percebemos que a inclusão da opção PlotPoints->40 faz com que o gráfico


seja mostrado com uma nitidez muito maior pois o Mathematica calcula mais pontos
para faze-lo.

Exemplo: Faça o gráfico de 3 sen( x )e no retângulo [-2, 2] x [-, ].


2

Plot3D[3 Sin[x] Exp[y/2], {x,-2Pi,2Pi},{y,-Pi,Pi},


Shading->False,PlotPoints->35]

-SurfaceGraphics-

47
A posição pela qual você vê este gráfico é a do ponto de vista pré-definido que é
{1.3, -2.4, 2.}. Suponha agora que você deseje visualizar o gráfico sob outro ponto de
vista, digamos que pôr traz por exemplo, uma maneira muito simples de você conseguir
isto seria selecionando o ícone Action no menu superior, e após feito isto selecionar a
opção 3D ViewPoint Selector. Neste instante você estaria vendo a seguinte tela

Nesta tela bastaria você movimentar as barras para obter um novo ponto de vista
(Você também poderia escolher o sistema de coordenadas que mais o agrada
(coordenadas cartesianas ou esféricas). Escolhido este “novo” ponto de vista basta clicar
Paste para que o Mathematica escreva a localização do ponto de vista escolhido. Feito
isto basta incluir ViewPoint->{x, y, z}, onde x, y, z são as coordenadas do
ângulo de visão escolhido, no comando gráfico para obter o ponto de vista desejado.
Vejamos o exemplo abaixo

Plot3D[3 Sin[x] Exp[y/2], {x,-2Pi,2Pi},{y,-Pi,Pi},


Shading->False,PlotPoints->35,ViewPoint-
>{.193,2.723,2.}]

48
-SurfaceGraphics-
No exemplo acima utilizamos o sistema de coordenadas esféricas e após proceder
como no explicado acima obtivemos uma vista posterior do gráfico do exemplo anterior
(ViewPoint->{.193,2.723,2.}).

Exemplo: Faça o gráfico de x2 - 3 x + y2 - 2 y + 3 no retângulo [-1, 4] x [-1.5,


3].

Plot3D[x^2 - 3 x + y^2 -2 y + 3, {x,-1,4},{y,-1.5,3},


BoxRatios->{1,1,3},ViewPoint->{-2.305,-1.463,2.000},
PlotPoints->15]

-SurfaceGraphics-

49
Este exemplo nos mostra a utilização da opção BoxRatios->{nx,ny,nz}
onde nós podemos observar que o eixo z tem 3 vezes a dimensão do eixo x ou y.

3.4 - Gráficos de curvas de nível de funções de duas variáveis

Quando desejamos ter uma visão geométrica de uma função de duas variáveis
podemos utilizar as suas curvas de nível. Denomina-se curva de nível de f correspondente
ao nível z = c ao conjunto de todos os pontos do domínio de f tais que f ( x, y ) = c.
O comando básico para que consigamos fazer curvas de nível de uma função é

ContourPlot[f(x,y),{x,xmín,xmáx},{y,ymín,ymáx}, opções].

onde f(x,y) é uma função de duas variáveis na qual estamos interessados na suas
curvas de nível, {x,xmín,xmáx},{y,ymín,ymáx} especificam os limites sobre o qual as
variáveis poderão assumir valores.
Vejamos o exemplo abaixo:

Exemplo: Faça o gráfico de x2 + y2 no retângulo [-2,2]x [-2,2] e também as curvas


de nível da .função neste intervalo.

Plot3D[x^2 + y^2, {x,-2,2}, {y,-2,2}, BoxRatios-


>{1,1,2}]
ContourPlot[ x^2 + y^2, {x,-2,2}, {y,-2,2}]

-SurfaceGraphics-

50
-ContourGraphics-

51
Percebemos que o gráfico é mostrado todo preenchido por cores. Para que tenhamos só
linhas tais que f(x, y) = c devemos incluir a opção ContourShading->False como
pode ser observado a seguir.

ContourPlot[x^2+y^2,{x,-2,2}, {y,-2,2},ContourShading-
>False]

-ContourGraphics-

x2
Exemplo: Faça o gráfico das curvas de nível da função f ( x, y ) = 2 no
x  y2
retângulo .[-7,7]x[-1,5].

Fazendo o gráfico utilizando o comando ContourPlot teremos:

ContourPlot[x^2/(x^2 + y^2), {x,-7,7},{y,-1,5},


ContourShading->False,Contours->20]

52
-ContourGraphics-

Sendo que o comando Contours->n faz com que se tenha um gráfico com n
curvas de nível se você desejar saber o aspecto de uma curva de nível em especial você
pode digitar Contours->{n} e então terá a curva de nível dada por f ( x, y ) = n. No
exemplo abaixo exploraremos estes comandos.

x2 y2
Exemplo: Faça a curva de nível tal que f( x, y ) =   1.
4 9

Semelhantemente teremos:

ContourPlot[(x^2)/4+(y^2)/9,{x,-5,5},{y,-5,5},
ContourShading->False,Contours->{1},PlotPoints->40,
Frame->False,AxesOrigin->{0,0},Axes->True,
AxesLabel->{"x","y"}]

53
-ContourGraphics-

Muitas das opções de ContourPlot são análogas as do comando Plot como


pudemos perceber no exemplo anterior ( AxesOrigin...,Axes...,Frame...,
etc ).

3.5 - Gráfico de funções Paramétricas

O Mathematica pode nos auxiliar na construção de gráficos de funções


parametrizadas, quando x e y podem ser escritos como uma função de t, sendo que para
isso basta digitar

ParametricPlot[{x(t), y(t)}, {t, tmín , tmáx }, opções]

Onde x e y são parametrizados como uma função de t e é especificado o intervalo


da variável independente (t).

Exemplo: Faça o gráfico da circunferência x2 + y2 = r2 para r=1.

Primeiramente devemos definir uma parametrização para x e y em função de t.


Para fazer isto basta digitar

Clear[x,y,r,t];
x[t_]:= r Cos[t];
y[t_]:= r Sin[t];

Com o comando acima nós definimos x[t] e y[t] agora para fazermos o gráfico
faremos
r=1;

54
ParametricPlot[{x[t],y[t]},{t,-4,4}, PlotPoints->35]

-Graphics-

Antes de darmos o comando Plot... digitamos r=1 para definir que r neste
caso valeria 1. Percebemos, entretanto, que o gráfico não tem o aspecto de uma
circunferência, como esperávamos que ele tivesse, pois, os eixos não estão pré-definidos
com a mesma escala. Para que o gráfico seja mostrado da maneira como esperávamos
devemos incluir a opção AspectRatio->n onde n=1 para que y e x tenham a mesma escala
1
de medidas ( o valor pré definido da relação entre as escalas é  0.618034
GoldenRatio
1 5
já que GoldenRatio = ) . Feito isso o gráfico ficará
2

ParametricPlot[{x[t],y[t]},{t,-4,4},AspectRatio->1,
PlotPoints->35]

-Graphics-

Podemos também fazer vários gráficos num único para plano para isso faremos

55
ParametricPlot[{{f[t], g[t]}, {h[t], i[t]}...},{t, tmín,
tmáx},
opções]

Onde {{f[t], g[t]}, {h[t], i[t]}...} especificam as parametrizações das funções nas
quais estamos interessados e {t, tmín, tmáx} especifica o intervalo sobre o qual a variável t
pode assumir valores, para sabermos um pouco mais sobre as opções disponíveis
podemos digitar Options[ParametricPlot].

Exemplo: Faça os gráficos das funções F(t)=(cos(t),2 sen(t)) e G(t)=(sen(t),


sen(t)).

Procedendo como o mostrado acima teremos:

ParametricPlot[{{Cos[t],2Sin[t]},{Sin[t], Sin[t]}},
{t,-5,5},
AspectRatio->1,PlotStyle-
>Dashing[{.03}]},{RGBColor[1,0,1]}},
PlotPoints->150]

-Graphics-

x2
Exemplo: Faça o gráfico de  y2 1.
4

Percebemos que a equação acima pode ser parametrizada por

56
x = 2 cos( t ) e
y = sen( t )

Encontrada a parametrização podemos então fazer o gráfico pedido

ParametricPlot[{2 Cos[t],Sin[t]},{t,-Pi,Pi},
AxesLabel->{"x","y"},PlotPoints->35,
PlotStyle->RGBColor[0,0,1]]

-Graphics-

3.6 - Gráficos de funções paramétricas no espaço

Da mesma que podemos fazer gráficos de funções no espaço também


conseguimos fazer gráficos de funções paramétricas em 3 dimensões.
Isto é conseguido com o comando, que gera uma curva no espaço,

ParametricPlot3D[{x[t], y[t], z[t]},{t, tmín, tmáx},


opções].

Sendo que a curva é definida por x = x[t], y = y[t], z = z[t] desde tmín até tmáx .
Se desejarmos obter uma superfície no espaço devemos entrar com o comando

ParametricPlot3D[{x[t,r], y[t,r], z[t,r]},{t, tmín,


tmáx}, {r, rmín, rmáx}, opções].

Sendo que a superfície em questão é definida por x = x[t, r] , y = y[t, r] , z = z[t,


r] e t varia desde tmín até tmáx e r sofre variação no intervalo [rmín,rmáx] .\

57
Exemplo: Faça o gráfico da curva dada por F (t) = ( cos( 3t ), sen( 3t ), t/7 ) no
intervalo .[0, 30].

ParametricPlot3D[{Cos[3 t],Sin[3 t],t/7},{t,0,30},


Ticks->None,PlotPoints->250]

-Graphics3D-

x2 y2
Exemplo: Faça o gráfico do elipsóide dado por   z 2  1.
9 4

Uma parametrização do elipsóide é dada por

x ( t, r ) = 3 cos( t ) cos( r ).
y( t, r ) = 2 cos( t ) sen( r ).
z( t, r ) = 1 sen( t ).
 
onde  t e -  t  .
2 2

Feito isto teremos

ParametricPlot3D[{3 Cos[t] Cos[r], 2 Cos[t] Sin[r],


Sin[t]},
{t,-Pi/2, Pi/2},{r,-Pi,Pi}]

58
-Graphics3D-

EXERCÍCIOS

Exercício 3.01 - Faça o gráfico das seguintes funções nos intervalos


determinados:

a) f(x) = x 3  2 x 2 no intervalo [-5,5].


x 2  2x  1
b) g(x) = em [-1.5 ,7].
x2
c) k(x) = | x  2 x 3  3| em [-6,6]

Solução:
a) Plot[x^3 - 2 x^2, {x,-5,5}];
b) g[x_]:=(x^2 - 2 x + 1)/(x+2); Plot[g[x], {x,-1.5,7}];
c) Plot[Abs[x-2 x^3 + 3], {x,-6,6}].

Exercício 3.02 - Construa os gráficos das funções abaixo, nomeando os eixos e


dando um título para cada gráfico.

a) f(x) = Log10x no intervalo [0.5,10].


b) f(x) = ln|x-| x-2|| no intervalo [-10,10];
c) f(x) = Log1/2x - x2 no intervalo [0.02,0.99];
d) f(x) = Exp(| x  2i|) no intervalo [-5,5].

Solução:
a) Plot[Log[10,x],{x,.5,10},PlotLabel->"log(x)",AxesLabel-
>{"x","log(x)"}];
b) Plot[Log[Abs[x-Abs[x-2]]], {x,-10,10},PlotLabel->"ln|x-| x-2||",
AxesLabel->{"x","y"},PlotPoints->50]
c) Plot[Log[.5,(x - x^2)],{x,0.02,.99},PlotLabel->" Log1/2x - x2 ",
AxesLabel->{"eixo x","eixo y"}]
d) Plot[Exp[Abs[x + 2 I]],{x,-5,5}, PlotLabel->“Exp|x+2i|”,
AxesLabel->{"x","y"}].

59
Exercício 3.03 - Construa os gráficos das funções abaixo sobre um mesmo par
de eixos, utilizando recursos gráficos para distinguir as funções:

a) sen(x) e sen(2 x) no intervalo [-2, 2];


b) sen(x), cos (x) e sec(x) no intervalo[-2, 2];
c) x 2 e x -2 no intervalo [-10,10];
d) Exp(x) cos(x) e x2ln(|x+1|) em [-2,2].

Solução:
a) Plot[{Sin[x],Sin[2 x]},{x,-2Pi,2Pi},PlotStyle-
>{{Dashing[{0.05}]},{}},
Ticks->{{-2Pi,-Pi,Pi,2Pi},{-1,-.5,.5,1}},PlotPoints->100]
b) Plot[{Sin[x],Cos[x],Sec[x]},{x,-2Pi,2Pi},PlotPoints->50,
PlotStyle-
>{RGBColor[0,0,1],RGBColor[0,1,1],RGBColor[1,0,0]}]
c) gra1=Plot[x^2,{x,-10,10},PlotPoints->75, DisplayFunction-
>Identity,

PlotStyle->{RGBColor[0,1,1],Dashing[{0.05}]}]
gra2=Plot[x^-2,{x,-10,10},PlotStyle->RGBColor[0,0,1],
DisplayFunction->Identity]
Show[gra1,gra2,DisplayFunction->$DisplayFunction]
d) Plot[{Exp[x] Cos[x], x^2 Log[Abs[x+1]]},{x,-2,2},PlotPoints-
>100,
PlotStyle-
>{{RGBColor[1,0,0],Dashing[{0.05}]},{RGBColor[0,0,1]}}]

Exercício 3.04 - Construa o gráfico das seguintes funções:

a) f(x, y) = x 2 y 3  2 xy no retângulo [-3, 3]x[-2, 2];


b) f(x, y) = Cos(x) Sen(y-2) no quadrado [-,]x[-,];
c) f(x, y) = Ln(| xy - 2y + 3 x|),em preto e branco, no
quadrado [-2, 2]x[-2,2];
d) f(x, y) = y Exp(x) no retângulo [-2,8]x[-4,4].

Solução:
a) Plot3D[x^2 y^3 - 2 x y, {x,-3,3},{y,-2,2},PlotPoints->30]
b) Plot3D[Cos[x] Sin[y -2], {x,-Pi,Pi},{y,-Pi,Pi},PlotPoints->30]
c) Plot3D[Log[Abs[x y - 2 y + 3 x]], {x,-2,2},{y,-2,2},Shading->False,
PlotPoints->30]
d) Plot3D[y Exp[x], {x,-2,8},{y,-4,4},PlotPoints->30,
BoxRatios->{2,2,1}]

Exercício 3.05 - Faça os gráficos das funções abaixo das maneiras


especificadas:

a) f(x, y) = Cos[x y] no intervalo [-4,4]x[-4,4], sem eixos


e sem caixa.

60
b) f(x, y) = Exp[-x] sen(y-x) no intervalo [-2,6]x[-4,4],
sem cores, dando nome aos eixos, marcações em x= -2,0,2,4,6
e z= -1,1.
c) f(x, y) = x2 - 2 x y + y3/4 no intervalo [-3,3]x[-3,3], com
z tendo o dobro do eixo y e z.
d) f(x, y) = cos(sen(|x-3i|)) no intervalo [-5,5]x[-5,5],sem
eixos e sem caixa.

Solução:
a) Plot3D[Cos[x y],{x,-4,4},{y,-4,4},PlotPoints->40,Boxed-
>False,Axes->None]
b) Plot3D[Exp[-x] Sin[y-x], {x,-2,6},{y,-4,4},Shading-
>False,PlotPoints->35,
AxesLabel->{"x","y","z"},Ticks->{{-2,0,2,4,6},None,{-1,1}}]
c) Plot3D[x^2 - 2 x y + y^2, {x,-3,3},{y,-3,3},BoxRatios->{1,1,2}]
d) Plot3D[Cos[Sin[Abs[x-y I]]],{x,-5,5},{y,-5,5},PlotPoints->35,
Axes->None,Boxed->False]

Exercício 3.06 - Mude o ponto de vista do exercício anterior de acordo com o


pedido abaixo:
a) item b visto por trás;
b) item b visto pelo eixo y;
c) item d visto por baixo;

Solução:
a) Plot3D[Exp[-x] Sin[y-x], {x,-2,6},{y,-4,4},Shading-
>False,PlotPoints->35,
ViewPoint->{0.450,4.000,-0.280},BoxRatios->{2,2,2}] em
coordenadas cartesianas.
b) Plot3D[Exp[-x] Sin[y-x], {x,-2,6},{y,-4,4},Shading->False,
PlotPoints->35,
ViewPoint->{3.611,-0.142,0.514}, BoxRatios->{3,3,3}] em
coordenadas esféricas.
c) Plot3D[Cos[Sin[Abs[x-y I]]],{x,-5,5},{y,-5,5},PlotPoints->35,
Axes->None,Boxed->False,ViewPoint->{0,0,-3.384}] em
coordenadas esféricas.

Exercício 3.07 - Desenhe as curvas de nível das funções do exercício 3.04.

Solução:
a) ContourPlot[x^2 y^3 - 2 x y, {x,-3,3},{y,-2,2},ContourShading-
>False,
Contours->25]
b) ContourPlot[Cos[x] Sin[y -2], {x,-Pi,Pi},{y,-
Pi,Pi},ContourShading->False,
Contours->25]
c) ContourPlot[Log[Abs[x y - 2 y + 3 x]], {x,-2,2},{y,-2,2},
ContourShading->False,Contours->30]
d) ContourPlot[y Exp[x], {x,-2,8},{y,-4,4},ContourShading->False,

61
Contours->30]

Exercício 3.08 - Faça os gráficos das funções abaixo(utilizando


ContourPlot):

a) x2 + y2 - 2 x y = 4
x2 y2
b)  1
16 25
c) 4x 2 + 9y 2  9
d) x2 - y2 = 16

Solução:
a) ContourPlot[x^2 + y^2 - 2 x y, {x,-10,10},{y,-10,10},
ContourShading->False, Contours->{4},Frame->False,
AxesOrigin->{0,0},Axes->True,PlotPoints->150]
b) ContourPlot[x^2/16 + y^2/25, {x,-10,10},{y,-10,10},
ContourShading->False, Contours->{1},Frame->False,
PlotPoints->50, Axes->True,AxesOrigin->{0,0}]
c) ContourPlot[Sqrt[4 x^2 + 9 y^2],{x,-5,5},{y,-5,5},
ContourShading->False, Contours->{9},
PlotPoints->50]
d) ContourPlot[x^2 - y^2, {x,-5,5},{y,-5,5},PlotPoints->50,
ContourShading->False, Axes->True, AxesOrigin->{0,0},
Contours->{4}]

Exercício 3.09 - Faça os gráficos das seguinte funções:

a) f(x, y) = (1, t)
b) f(x, y) = (2t -1, t+1)
c) f(x, y) = (t cos(t), t sen(t))
d) f(x, y) = (e-tcos(t), sen(t))

Solução:
a) ParametricPlot[{1, t}, {t,-5,5},PlotPoints->50,
PlotStyle->RGBColor[0,1,0],Axes->True,AxesOrigin->{0,0},
AspectRatio->1]
b) ParametricPlot[{2 t -1, t + 1},{t,-5,5},PlotStyle->RGBColor[0,1,1]]
c) x[t_]:=t Cos[t];
y[t_]:=t Sin[t];
ParametricPlot[{x[t],y[t]},{t,-10,10},PlotStyle->RGBColor[0,0,1],
PlotPoints->40,AspectRatio->1]
d) x[t_]:=Exp[-t] Cos[t];
y[t_]:=Sin[t];
ParametricPlot[{x[t],y[t]},{t,-5,5},AspectRatio->1,
PlotStyle->RGBColor[1,0,0],PlotPoints->35]

Exercício 3.10 - Encontre uma parametrização e faça o gráfico das seguintes


funções:

62
a) x y = 4;
b) x2 + y2 = 16;
x2 y2
c)   1;
16 9
x2 y2
d)   1.
4 9

Solução:
a) x[t_]:=t;
y[t_]:=4/t;
ParametricPlot[{x[t],y[t]},{t,-2,2},PlotStyle->RGBColor[0,0,1]]
b) x[t_]:=4 Cos[t];
y[t_]:=4 Sin[t];
ParametricPlot[{x[t],y[t]},{t,-5,5},AspectRatio->1,PlotPoints->35]
c) x[t_]:=4 Cos[t];
y[t_]:=3 Sin[t];
ParametricPlot[{x[t],y[t]},{t,-5,5},PlotStyle->RGBColor[1,0,0]]

d) x[t_]:=2 Sec[t];
y[t_]:=3 Tan[t];
ParametricPlot[{x[t],y[t]},{t,-5,5},PlotStyle->RGBColor[0,0,1],
PlotPoints->35]

Exercício 3.11 - Faça os gráficos das seguintes funções:

a) f(x, y , z) = ( t, sen (t), cos(2 t)) e ( sen(t), sen(t), 2


cos(t))
t
b) f(x, y , z) = (sen(t), cos(t), );
8
c) f(x, y , z) = ( 2 cos(t)cos(r), 3 cos(t) sen(r), 2 sen(t));
d) f(x, y , z) = ( 3 sec(t) cos(r), 4 sec(t) sen(r), 2 tan(t));
e) f(x, y , z) = ( sec(t), 2 tan(t) cos(r), 3 tan(t) sen(r)).

Solução: a) ParametricPlot3D[{{t,Sin[t],Cos[2 t]},{Sin[t],Sin[t],Sqrt[2]


Cos[t]}},
{t,-5,5},PlotPoints->50]
b) ParametricPlot3D[{Sin[t],Cos[t],t/8},{t,-15,15},PlotPoints->200]
c) x[t_,r_]:=2 Cos[t] Cos[r];
y[t_,r_]:=3 Cos[t] Sin[r];
z[t_,r_]:=2 Sin[t];
ParametricPlot3D[{x[t,r],y[t,r],z[t,r]},{t,-Pi/2, Pi/2},{r,-Pi,Pi},
Axes->None,Boxed->False]
d) x[t_,r_]:=Sec[t];
y[t_,r_]:=2 Tan[t] Cos[r];
z[t_,r_]:=3 Tan[t] Sin[r];
ParametricPlot3D[{x[t,r],y[t,r],z[t,r]},{t,-Pi/3,Pi/3},
{r,-Pi,Pi},Ticks->None]

63
CAPÍTULO 4 - CÁLCULO DIFERENCIAL E INTEGRAL

4.1 - Introdução

Neste capítulo mostraremos como o Mathematica pode ser utilizado no estudo


de limites, derivadas e integrais assuntos que normalmente são aprendidos num primeiro
curso de cálculo. Iniciaremos com o estudo dos limites, depois passaremos a estudar as
derivadas e finalmente veremos como resolver integrais de n-ésima ordem com o auxílio
do Mathematica.
Também mostraremos como resolver equações diferenciais de n-ésima ordem
tanto analiticamente como numericamente.

4.2 - Limites

O limite L de uma função f ( x ) quando x tende a “a” ( lim f ( x ) = L ) tem


x a
validade quando dado um  > 0 qualquer, existe um  > 0, tal que se 0 < | x - a | <  então
| f(x) - L | <  .
O Mathematica pode calcular limites de funções quando estas tendem a um ponto
em especial bem como calcular limites de funções tendendo a infinito ou menos infinito.
Para calcular limites o comando a ser utilizado é:

Limit[f(x), x-> ponto]

sendo que o sinal -> ( tende a ) é obtido digitando-se o sinal de menos( - ) e em


seguida o de maior ( > ). Vejamos o exemplo abaixo.

Exemplo: Seja f(x) = x2 + 1, g(x) = c , c = constante, h(x) = x2 - x3 calcule os


limites destas .funções quando x tende aos pontos 0, 1, 13.

Como iremos utilizar cada função três vezes iremos inicialmente definir cada uma
delas.

Clear[f,g,h]
f[x_]:=x^2 + 1;
g[x_]:=c;
h[x_]:=x^2 - x^3;

Calculando os limites para f(x) teremos:

Limit[f[x],x->0]
1

64
que calcula o lim x 2  1  1 , enquanto que digitando
x0

Limit[f[x],x->1]
2

Estaremos calculando lim x 2  1  2 e para calcular lim x 2  1  170 basta


x1 x13
entrar com

Limit[f[x],x->13]
170

Digitando

Limit[g[x],x->0]
Limit[g[x],x->1]
Limit[g[x],x->13]
c
c
c

Estaremos calculando lim c  lim c  lim c  c respectivamente. Finalmente,


x0 x1 x13
digitando os comandos

Limit[h[x],x->0]
Limit[h[x],x->1]
Limit[h[x],x->13]

0
0
-2028

Estaremos calculando lim x 2  x 3  0 , lim x 2  x 3  0 ,


x0 x1
lim x 2  x 3  2028 respectivamente.
x13

3s 2  8s  16 y2  9 1  cos( 2 x)
Exemplo: Calcule lim , lim e lim
s4 2s  9s  4 y3
2
2y 2  7y  3 x0 sen( 3x)
, se existirem.

Utilizando o comando Limit teremos:

Limit[(3 s^2 - 8 s - 16)/(2 s^2 - 9 s + 4),s->4]

65
16
--
7
3s 2  8s  16
que calcula lim = 16/7.
s4 2s 2  9s  4

Limit[Sqrt[(y^2 - 9)/(2 y^2 + 7 y + 3)],y->-3]


6
Sqrt[-]
5

y2  9 6 1  cos( 2 x)
Calcula o limite lim = . E para calcular lim
y3 2y 2  7y  3 5 x0 sen( 3x)
= 0 teremos :

Limit[(1- Cos[2 x])/(Sin[3 x]), x->0]

0.

O Mathematica também pode ser utilizado no cálculo de limites laterais tais que
x->“a” pela direita ou pela esquerda. Neste caso deve-se utilizar o comando

Limit[expressão, x->ponto, Direction->  1]

Sendo que - 1 indica um limite da expressão tendendo ao ponto por valores


maiores que o ponto(limite a direita) e, obviamente, +1 indica o limite quando a utiliza-
se valores menores que o ponto(limite a esquerda).

 2 3 
Exemplo: Calcule os seguintes limites: lim   2   , lim
x4  x  3x  4 x  4  x1
x1 sen x
e ; lim  .
2x  x2  1 x  x  

 2 3 
Primeiramente iremos calcular lim   2   = -infinito. Para
x4  x  3x  4 x  4 
isto iremos digitar

Limit[2/(x^2 + 3 x - 4) - 3/(x+4),x->-4, Direction->1]

Infinity

pois trata-se de um limite lateral com x tendendo a -4 pela esquerda. Fazendo

Limit[(x-1)/(Sqrt[2 x - x^2]-1),x->1, Direction->-1]

66
-Infinity

x1
Estaremos calculando lim  = infinito. E ainda
2
x1 2x  x  1

Limit[Sin[x]/(x-Pi), x->Pi, Direction->-1]


-1
sen x
Calcula o valor de lim  = -1.
x  x  

Podemos também calcular limites para uma f(x) quando x->  infinito( na notação
do Mathematica  Infinity). Vejamos o exemplo abaixo:

3x 2  2 x  5 x2  5
Exemplo: Calcule os seguintes limites: lim , lim e
x x2  4 x 2 x  4
x
lim , .caso estes limites existam.
x x2  1

3x 2  2 x  5
Para encontrar o valor de lim = 3 faremos:
x x2  4

Limit[(3 x^2 + 2 x - 5)/(x^2 + 4), x->Infinity]

Enquanto que quando digitamos:

Limit[(x^2 + 5)/(2 x - 4),x->-Infinity]

-Infinity

x2  5
encontramos lim = - infinito. E
x 2 x  4

Limit[x/Sqrt[x^2 + 1], x->Infinity]


1

x
encontra a resposta para lim = 1.
x x2  1

Entretanto não conseguimos calcular limites de funções de duas variáveis, sendo


que uma possível saída para se encontrar estes limites é a visualização da função através
de um gráfico.

67
4.3 - Derivadas

4.3.1 - Introdução

A derivada de uma função, que pode ser denotada por f’ ( x ), é definida como
f ( x  x)  f ( x)
sendo f ' ( x)  lim , caso este limite exista.
x   0 x
O Mathematica pode nos ajudar no cálculo de derivadas tanto algebricamente
como também calculando o valor da derivada em um ponto. Ele também calcula derivadas
de funções implícitas e derivadas parciais.
Para calcular a derivada de uma função f ( x ),que foi inicialmente definida , você
pode proceder de uma das maneiras abaixo:

f'[x] - que calcula a derivada de f em relação a x.


D[f[x],x] - que realiza o mesmo procedimento acima.
D[f[x],{x,n}] - que calcula a n-ésima derivada de f(x) com relação a x.
D[Expressão, variável] - que calcula a derivada da expressão com
relação a variável.
D[Expressão, {variável, n}] - que calcula a n-ésima derivada da
expressão com relação a variável.

Nos exemplos seguintes ilustramos a utilização desses comandos.

f ( x  x)  f ( x) f ( x  x)  f ( x)
Exemplo: Simplifique a expressão , calcule lim ,
x x 0 x
caso este limite exista sendo que f(x) = 2 x3 + 7.

Definindo f(x) teremos:

f[x_]:=2 x^3 + 7;
preder=(f[x + delta_x] - f[x])/delta_x;

simplificando a expressão acima teremos:

Simplify[preder]
2 2
2 deltax + 6 deltax x + 6 x

Calculando o limite para quando deltax tende a zero teremos:

Limit[preder,delta_x->0]

68
6 x

Exemplo: Ache as derivadas de f(x)*g(x), xn e de f(x)/g(x) sendo f(x) e g(x) duas


funções .contínuas e deriváveis, e n uma constante diferente de zero.

Para encontrarmos a derivada de f(x)g(x) = f ‘(x) g(x) + g’(x)f(x) onde f e g são


duas funções quaisquer basta digitar:

Clear[f];
D[f[x]*g[x], x]

g[x] f'[x] + f[x] g'[x]

Para encontra a derivada de uma função polinomial basta digitar:

Clear[n];
D[x^n,x]

-1 + n
n x

Finalmente para encontrarmos a derivada de f(x)/g(x) teremos:

D[f[x]/g[x],x]//Together

g[x] f'[x] - f[x] g'[x]


-----------------------
2
g[x]

d d
Exemplo: Calcule (2 x 4  4 x 3  7 x  1) , (4cos(t 2 )) , f ‘( x ) onde f ( x )
dx dt
sec 2 x
= ,
1  x2
g ‘ ( x ) sendo g ( x ) = sen(cos( 3 x )) - 3 cos2( 2 x ) e h’( x ) sendo h(x) =
1
.
2
1  cos (2 x )

Calculando a derivada utilizando o comando D[Expr, x] teremos:

D[2 x^4 - 4 x^3 + 7 x -1, x]


2 3
7 - 12 x + 8 x

69
Para calcular a derivada da segunda expressão podemos utilizar o comando:

D[4 Cos[t^2],t]

2
-8 t Sin[t ]

Achando a derivada da próxima expressão teremos:

f[x_]:=Sec[x]^2/(1+x^2);
D[f[x],{x,1}]

2 2
-2 x Sec[x] 2 Sec[x] Tan[x]
------------ + ----------------
2 2 2
(1 + x ) 1 + x

Para calcular g’(x) iremos inicialmente definir a função g(x) e depois basta digitar
g’(x) para obtermos a derivada.

g[x_]:= Sin[Cos[3 x]] - 3 Cos[2 x]^2


g'[x]

12 Cos[2 x] Sin[2 x] -

3 Cos[Cos[3 x]] Sin[3 x]

Finalmente, definindo h(x) corretamente e digitando h’(x) teremos a sua derivada:

h[x_]:=1/(Sqrt[1 + Cos[2 x]^2]);


h'[x]

2 Cos[2 x] Sin[2 x]
-------------------
2 3/2
(1 + Cos[2 x] )

d4  3 
Exemplo: Encontre as seguintes derivadas: Dx3 (x4 - 2 x2 + x - 5),  
dx 4  2 x  1
, f ’’’ ( x ) .sendo f ( x ) = 2 tg(3x) e g(5) (x) se g(x) = cos 2x - sen 2x.

70
Para calcular a n-ésima derivada de uma expressão podemos digitar
D[expressão, {var,n}] então teremos:

D[x^4 - 2 x^2 + x - 5, {x,3}]

24 x

d4  3 
Que calcula Dx3 (x4 - 2 x2 + x - 5) = 24 x . Para calcular   = 1152 (2
dx 4  2 x  1
x - 1)-5 digitamos:

D[3/(2 x - 1), {x,4}]

1152
-----------
5
(-1 + 2 x)

Definindo corretamente f(x), não esquecendo de excluir qualquer definição


anterior da função f, e procedendo como nos exemplos anteriores teremos f ‘(x) = 108
sec4(3x) + 216 sec2(3x) tg2(3x).

Clear[f];
f[x_]:=2 Tan[3 x];
D[f[x],{x,3}]
4 2 2
108 Sec[3 x] + 216 Sec[3 x] Tan[3 x]

Concluindo, para encontrar g(5) (x) = -32[sen(2x) + cos(2x)] podemos utilizar o


comando g’’’’’[x] já que para encontrar a n-ésima derivada de uma função f (x)
basta digitar f seguido de n ‘ .

Clear[g];
g[x_]:=Cos[2 x] - Sin[2 x];
g'''''[x]

-32 Cos[2 x] - 32 Sin[2 x]

Nos exemplos seguintes veremos algumas aplicações da uso das derivadas.

Exemplo: Reta tangente - Encontre a reta tangente a curva de equação f( x ) = y


= x 2  9 no .ponto (4,5). Faça os gráficos de f(x) e da reta tangente no ponto dado.

Sabemos que a equação da reta tangente ao ponto (x0, y0 ) pode ser dada pela
equação y - y0 = m(x - x0) onde m é o coeficiente angular da reta é e encontrado

71
calculando-se o valor da derivada no ponto (x0, y0 ) . Definindo f(x) e calculando o valor
m teremos:

Clear[f,x];
f[x_]:=Sqrt[x^2 + 9];
f'[x]

x
------------
2
Sqrt[9 + x ]

Definindo esta derivada como sendo der[x] e calculando o valor de m=der[4]


teremos:

der[x_]:=x/(Sqrt[9 + x^2])
m=der[4]

4
-
5

Agora podemos definir a equação da reta tangente:

Clear[x,y,y0,x0]
y0=5;
x0=4;
y[x_]:= y0 + m (x - x0);
y[x]//Together

9 + 4 x
-------
5

Portanto chegamos a conclusão de que a reta tangente tem equação 5 y - 4 x - 9 =


0 . Fazendo o gráfico da reta tangente e de f(x) teremos:

graff=Plot[f[x],{x,-1,7},PlotStyle->RGBColor[0,0,1],
DisplayFunction->Identity];
graftan=Plot[(9+4 x)/5,{x,-1,7},DisplayFunction-
>Identity];
ponto=Graphics[{PointSize[.04],Point[{4,5}]}];

-Graphics-
-Graphics-
-Graphics-

Utilizando o comando Show nós podemos ver os gráficos acima


simultaneamente:

72
Show[graff,graftan,ponto,DisplayFunction-
>$DisplayFunction]

-Graphics-

Vale a pena informar que o comando


Graphics[{PointSize[n],Point[{x,y}]}] gera um ponto nas coordenadas
(x, y) com um tamanho de n % do total de todo o objeto gráfico.Veremos agora como
fazer derivações implicítas.

4.3.2 - Derivação implícita

Nem todas as funções com as quais nós podemos trabalhar estão definidas
explicitamente. Quando temos uma função do tipo x 5  2 y 3  3y  x  x 2  2 por
exemplo onde y=f(x) nós não podemos explicitar y como uma única função f(x) pois
podem existir varias funções que satisfaçam esta definição. Neste caso dizemos que y é
definida implicitamente como uma função de x ou que a função f é definida
implicitamente pela equação dada. Quando temos uma equação deste tipo o processo que
encontra a derivada de y em relação a x é denominado derivação implícita.
Para calcularmos derivadas implícitas iremos utilizar o comando
Dt[Expressão, variável] que encontra a derivada total da expressão com relação
d (exp ressão )
a variável( enquanto que Dst[Expressão]encontra o diferencial total
d (var iá vel)
dy
da expressão(d(expressão)). Deste modo Dt[y,x] é equivalente a y´= .Nos exemplos
dx
seguintes iremos mostrar a utilização deste comando que juntamente com o comando
Solve nos auxiliará no cálculo das derivadas implícitas.

73
Exemplo: Calcule as seguintes derivadas implícitas, com relação a x :
a) x 2  y 2  16,
b) x 2 y 2  x 2  y 2 .

a) Inicialmente iremos definir a equação como sendo eq:

Clear[eq];
eq=x^2 + y^2==16

2 2
x + y == 16

Utilizando o comando Dt e chamando o resultado de derivada teremos:

derivada=Dt[eq,x]
2 x + 2 y Dt[y, x] == 0

resolvendo a derivada para Dt[y,x] para encontrar dy/dx

Solve[derivada,Dt[y,x]]
x
{{Dt[y, x] -> -(-)}}
y

y
Logo a derivada procurada é .
x

b) Procedendo de maneira análoga para x 2 y 2  x 2  y 2 teremos:

Clear[eq];
eq=x^2*y^2- x^2- y^2==0

2 2 2 2
-x - y + x y == 0

onde estamos limpando a definição anterior de eq e fazendo a nova. Derivando


esta equação em relação a x teremos:

deriv=Dt[eq,x]
2 2
-2 x + 2 x y - 2 y Dt[y, x] + 2 x y Dt[y, x] == 0

Finalmente isolando a derivada de y em relação a x encontraremos:

Solve[deriv,Dt[y,x]]
2
-x + x y
{{Dt[y, x] -> -(---------)}}

74
2
-y + x y

d( x 2 y 2  x 2  y 2 )  x. xy 2
Logo  2 .
dx x yy
Uma outra maneira de encontrarmos estas derivadas implícitas é definir a equação
da seguinte maneira:

Clear[eq];
eq=x^2y[x]^2==x^2 + y[x]^2

2 2 2 2
x y[x] == x + y[x]

Note que na definição de eq nos explicitamos que y é uma função de x(y[x]),


sendo assim o Mathematica aplicará a regra da cadeia para a expressão eq. Agora basta
derivarmos eq utilizando o comando D[...,x].

primeiropasso=D[eq,x]
2 2
2 x y[x] + 2 x y[x] y'[x] == 2 x + 2 y[x] y'[x]

Neste ponto basta isolarmos a derivada da expressão utilizando o comando


solve. Obviamente a resposta é idêntica a dada na resolução pelo outro método.

Solve[primeiropasso,y'[x]]
2
-x + x y[x]
{{y'[x] -> -(---------------)}}
2
-y[x] + x y[x]

Exemplo: Encontre uma equação da reta tangente à curva 16x 4  y 4  32 no


ponto (1,2).

Primeiramente iremos encontrar a derivada da equação com relação a variável x,

Clear[eq,step1];
eq = 16 x^4 + y^4 == 32

75
4 4
16 x + y == 32

derivando a eq em relação a x e chamando de step1 para utilizarmos depois


teremos:

step1=Dt[eq,x]
3 3
64 x + 4 y Dt[y, x] == 0

resolvendo a equação acima para Dt[y,x] encontraremos a derivada de


16x  y 4  32
4

Solve[step1,Dt[y,x]]
3
-16 x
{{Dt[y, x] -> ------}}
3
y

Logo o coeficiente angular da reta tangente a qualquer ponto (x0,y0)de


16x 4  y 4  32 vale:

m[x0_,y0_]:=-(16 x0^3)/(y0^3)

Portanto a reta tangente em um ponto (x0,y0) pode ser definido como :

retatangente[x0_,y0_]:=y-y0==m[x0,y0]*(x-x0)

No ponto pedido no exercício teremos:

retatangente[1,2]//Simplify
-2 + y == 2 - 2 x

Então a reta tangente no ponto (1,2) é 2 x + y = 4. Fazendo os gráficos de


16x  y 4  32 e da reta tangente no ponto teremos:
4

eqplot=ContourPlot[16 x^4 + y^4 - 32,{x,-3,3},{y,-3,3},


Contours->{0}, ContourShading-
>False,PlotPoints->40,
DisplayFunction->Identity]
tgplot=ContourPlot[2 x + y,{x,-3,3},{y,-3,3},
Contours->{4},ContourShading->False,
DisplayFunction->Identity]
ponto=Graphics[{PointSize[.04],Point[{1,2}]}]

-ContourGraphics-
-ContourGraphics-
-Graphics-

76
Mostrando todos os objetos gráficos:

Show[ponto,tgplot,eqplot,DisplayFunction-
>$DisplayFunction,
Axes->True,AspectRatio->1]

-Graphics-

Agora que já sabemos calcular derivadas mostraremos mais algumas aplicações


deste conceito.

4.3.3 - Outras aplicações de derivadas

Exemplo: Máximos e mínimos - Encontre os extremos das seguintes funções:


a) f (x) = x2 - 2 x + 4;
b) g (x) = 2 sen x no intervalo [-,].

Da teoria sabemos que para termos um ponto de máximo ou de mínimo de f(x)


deveremos ter um ponto crítico de f(x) que é definido como sendo o ponto(ou os pontos)
onde f ‘ (x) = 0. Assim sendo teremos o seguinte quadro:

77
f ´(x) f ´´(x) Conclusão
f ´(x) > 0 f(x)é crescente no intervalo.
f ´(x) < 0 f(x) é decrescente no intervalo.
f ´´(x) > 0 O gráfico é côncavo para cima.
f ´´(x) < 0 O gráfico é côncavo para baixo.
f ´(x) = 0 f ´´(x) > 0 Ponto de máximo local.
f ´(x) = 0 f ´´(x) < 0 Ponto de mínimo local.
f ´(x) = 0 Não existe. Ponto de inflexão.
f ´(x) = 0 f ´´(x) = 0 Ponto de inflexão.
Não existe. Não existe. Ponto de inflexão.

Definindo agora f(x) e calculando a sua derivada teremos:

f[x_]=x^2 - 2 x + 4;
f'[x]

-2 + 2 x

De acordo com a tabela para que tenhamos um ponto de máximo ou de mínimo


devemos ter que f’(x) = 0, resolvendo esta equação para x com o comando Solve
obteremos:

Solve[f'[x]==0,x]

{{x -> 1}}

f[1]
f'[1]

3
0

Calculando a derivada segunda de f(x) teremos:

f''[x]

portanto percebemos que f ‘’(x) >0 para todos os valores de x, o que implica que
f(x) é côncava para baixo e possui um mínimo em x=1 como pode ser notado a partir do
gráfico de f(x).

Plot[f[x],{x,-10,10}]

78
-Graphics-

Realizando as contas para g (x) = 2 sen x no intervalo [-Pi,Pi] teremos :

g[x_]:=2 Sin[x];
g'[x]//Simplify

2 Cos[x]

Onde definimos g(x) e encontramos a primeira derivada. Para encontrar os pontos


críticos faremos f ’(x)=0 observe que não podemos utilizar a função Roots pois não se
trata de uma função polinomial e utilizando Solve não obteremos todas as soluções
portanto teremos que utilizar FindRoot. Desse modo teremos:

Plot[g'[x],{x,-Pi,Pi}]

-Graphics-

Encontrando as raízes teremos:

FindRoot[g'[x]==0,{x,1}]

{x -> 1.5708}

FindRoot[g'[x]==0,{x,-1}]

{x -> -1.5708}

79
Encontrando a derivada segunda de g(x) e calculando seu valor nos pontos
críticos teremos:

g''[x]//Simplify
-2 Sin[x]

g''[-1.5708]
2.

g''[1.5708]
-2.

Portanto de acordo com a tabela que relaciona as derivadas com máximos e


mínimos percebemos que 1,5708 é um ponto de máximo e -1,5708 é um ponto de mínimo
como pode ser observado no gráfico abaixo.

Plot[g[x],{x,-Pi,Pi},PlotRange->All]

-Graphics-

Exemplo: Máximos e mínimos - Um fabricante de caixas de papelão deseja fazer


uso dos pedaços de papelão com dimensões 8 dm por 15 dm, cortando quadrados iguais
dos quatro cantos e dobrando os lados para cima. Encontre o comprimento do lado do
quadrado que será cortado de cada pedaço de papelão para se obter uma caixa aberta de
maior volume possível.

80
A expressão que nos dá o volume pode ser definida como:

V[x_]:=x*(15-2 x)*(8-2 x)

Calculando o derivada de v em relação ao x teremos:

derivada=V'[x]

(8 - 2 x) (15 - 2 x) - 2 (8 - 2 x) x - 2 (15 - 2 x) x

Para que tenhamos um ponto de máximo ou de mínimo esta derivada tem que ser
igual a zero portanto devemos achar estes pontos utilizando Solve:

Solve[derivada==0,x]

5
{{x -> -}, {x -> 6}}
3

Entre estes dois pontos devemos nos decidir qual representa um ponto de máximo
e qual representa um ponto de mínimo. Calculando V[5/3] e V[6]

V[5/3]//N

81
V[6]

90.7407
-72

Logo o ponto procurado é 5/3 dm pois é o máximo da função V[x]

Fazendo o gráfico de V[x] teremos:

Plot[V[x],{x,-10,10},Ticks->{{8},Automatic}]

-Graphics-

Exemplo: Concavidade - Encontre os intervalos para os quais a função f(x) =


. x  5x 2  3x  4 tem concavidade voltada para cima e os quais é voltada para baixo.
3

Encontre também .os pontos de inflexão.

Entrando com a definição de f(x) e calculando a sua derivada teremos:

f[x_]:=x^3 + 5 x^2 + 3 x - 4;
f'[x]

2
3 + 10 x + 3 x
Para encontrarmos os pontos críticos de f(x) devemos encontrar os pontos nos
quais a sua primeira derivada se anula

Solve[f'[x]==0,x]

82
1
{{x -> -3}, {x -> -(-)}}
3

ou seja f ’(x) = 0 para x=-3 e x=-1/3. Analisando a derivada segunda teremos para
sabermos se estes pontos são de máximo ou de mínimo faremos

f''[x]
f''[-3]
f''[-1/3]

10 + 6 x
-8
8

Percebemos pela equação de f ‘’(x) que ela define uma reta crescente portanto f
‘’(x) = 0 em um único ponto, encontrando este ponto teremos:

Solve[f''[x]==0,x]
5
{{x -> -(-)}}
3

Então f ‘’(x) < 0 para x < -5/3 e f ‘’(x) > 0 para x >-5/3. Do exposto acima
podemos concluir que no intervalo -<x<-5/3 o gráfico é côncavo para baixo e no
intervalo -5/3<x< o gráfico é côncavo para cima. Podemos perceber que o ponto -5/3 é
um ponto de inflexão. O gráfico da função é mostrado abaixo.

Plot[x^3 + 5 x^2 + 3 x - 4, {x,-10,10}]

-Graphics-

4.4 - Integrais

4.4.1 - Introdução

83
Neste capítulo introduziremos o método para se calcular somatórias,
introduziremos também o conceito de integral definida e indefinida, mostrando com
utilizar o Mathematica para nos auxiliar na solução de integrais de ambos os tipos.
Mostraremos também a utilização de integrais para calcular áreas, volumes de sólidos de
revolução e comprimento de arcos entre outras coisas.

4.4.2 - Somatórias

n
Quando estamos interessados numa soma do tipo  f (i) nós podemos utilizar o
ii0
comando Sum[f(i), {i,imín, imax}] onde i varia desde imín até imax variando de
um em um. Se você desejar que a variação ocorra com outro passo basta fazer
Sum[f(i), {i,imín, imax, passo}].

Exemplo: Calcule as seguintes somatórias:


10
a)  x 2  3x
x 1
100
b)  2 x 1/ 3 mas pegando somente os x pares.
x0
10
i 2 j3
c)  3i  2 .
i , j 0
20
xy
d)  xy
mas pegando os x impares e y pares.
x 1,y  2

a) Utilizando o comando Sum nos teremos:

Sum[x^2 - 3 x,{x,10}]
220

10
que realiza a  x 2  3x , como não é especificado nenhum índice o programa
x 1
interpreta que imín é igual a 1. Uma outra maneira de calcularmos esta somatória seria
digitar

Sum[x^2 - 3 x,{x,1,10}]
220

onde nós estaríamos especificando o imín explicitamente como um.

b) Para realizar esta somatória é só identificar o passo como 2, pois como a soma
se inicia em 0 a seqüência dos x-ésimos termos ficará 0, 2, 4, 6,... Então teremos:

84
N[Sum[x^(1/3),{x,0,100,2}],10]
176.033524

c) Quando estamos interessados em encontrar a somatória de uma função que


envolve mais de uma variável basta utilizarmos o comando

Sum[f(i,j,...),{i,imín,imáx,passo},{j,jmín,jmáx,passo},
{...,...,...},...]

No caso especifico deste exemplo a somatória envolve dois índices, então


devemos ter dois intervalos especificando a variação de cada um dos dois. Logo

Sum[(i^2 j^3)/(3 i - 2),{i,0,10},{j,0,20}]


2559140073
----------
2717

10
i 2 j3
Calcula 
i , j 0 3i  2
 941899.

d) Semelhantemente ao item b teremos:

Sum[x y/(Sqrt[x + y]),{x,1,20,2},{y,2,20,2}]//N


2169.22

4.4.3 - Integração indefinida

Nesta seção estaremos interessados em encontrar a antiderivada de uma função f


em um intervalo I . Dizemos que F é uma antiderivada de um função f em um intervalo I
se F´(x) = f(x) para todo valor de x em I. A antiderivada também é chamada de integral
indefinida. O Mathematica é capaz de resolver muitas integrais indefinidas embora não
consiga realizar a integração para funções muitos complexas. O comando a utilizar
quando estamos interessados em encontrar a integral de uma função f é:
Integrate[f(variável), variável]

onde f(variável) é a função e “variável” indica que estamos integrando com


relação à aquela variável em particular. Nos exemplos abaixo exploraremos este
comando.

85
Exemplo: Calcule as seguintes integrais indefinidas:
x 1/ 3  2 x 1/ 2
a)  xdx b)  ( )dx
x
1
c)  dx . d)  log xE  x dx
cot g( x  1)

e)  2
x 2 Exp(5x)dx

Utilizando o comando Integrate[f(x), x] teremos:

a)

Integrate[x,x]
2
x
--
2

x2
que calcula  xdx = 2
.

b) Também podemos definir a expressão como uma função (no caso f(x)) e então
nos referenciarmos a ela como f(x) no comando Integrate desta maneira:

Clear[f];
f[x_]:=(x^(1/3) - 2 x^.5)/x
Integrate[f[x],x]

1/3 0.5
3 x - 4. x

x 1/ 3  2 x 1/ 2
calcula ( x
)dx .

c) O comando Integrate também pode ser utilizado com funções


trigonométricas.

Integrate[(1)/(Cot[x-1]),x]

-Log[Cos[1 - x]]

d) Neste caso teremos:

Integrate[Log[x] Exp[-x],x]

86
Log[x]
ExpIntegralEi[-x] - ------
x
E

Você pode notar que a solução dada pelo Mathematica inclui uma função pré-
definida no programa que se chama ExpIntegralEi para saber o que esta função faz
nós podemos utilizar o Help. Desta forma teremos:

??ExpIntegralEi
ExpIntegralEi[z] gives the exponential integral
function Ei(z).
Attributes[ExpIntegralEi] = {Listable, Protected}

Caso você precise calcular o valor desta integral num ponto determinado basta
entrar com o ponto pois o programa consegue calcular o valor de ExpIntegralEi.

e) Neste caso utilizaremos o comando //Together para que a solução seja


mostrada como uma única fração.

Integrate[(x^2 Exp[5 x])^(1/2),x]//Together

5 x 2
2 Sqrt[E x ] (-2 + 5 x)
--------------------------
25 x

4.4.4 - Integração definida

Agora que já calculamos a integral indefinida de uma função iremos definir o que
vem a ser a integral definida.
Se f é uma função definida no intervalo fechado [a,b] então a integral definida de
b b n
f, de a até b, denotada por  f ( x)dx é dada por  f ( x)dx = lim  f (  i )  i x , se o limite
a a
|x|0 i 1
existir.
No Mathematica para calcularmos uma integral definida devemos utilizar o
seguinte comando:

Integrate[f(x), {x,a,b}]

onde estaremos integrando f(x) com relação a x no intervalo desde a até b.

87
Exemplo: Calcule as seguintes integrais definidas:
5
 (x
2
a)  2 x)dx b)
0
2
 cos x
2
sec 5 ( x  1) dx
0
7 8
  ln xExp( x)dx
3
c) Ln( x  2)dx d)
2 0
2
e)  xsin(cos( x  2)dx
1

a) Procedendo como o indicado acima, sendo a=0 e b=5 teremos:

Integrate[x^2 - 2x,{x,0,5}]
50
--
3

b,c,d,e) Se introduzirmos um //N teremos uma aproximação numérica do


resultado, desta forma:

Integrate[Cos[x^2] Sec[x-1]^5,{x,0,1.2}]//N
3.96917

Integrate[Sqrt[Log[x^3 - 2]],{x,2,7}]//N
10.2638

Integrate[Log[x] Exp[-x],{x,0,8}]//N
-0.577951

Integrate[Sqrt[x Sin[Cos[x-2]]],{x,1,2}]//N
1.05187

Uma das muitas aplicações da utilização da integral definida é no calculo de áreas


entre curvas como pode ser observado no exemplo seguinte:

Exemplo: Áreas entre curvas - Encontre as áreas entre as seguintes curvas:

a) f(x) = Sinx e g(x) = x3-3x


b) f(x) =cos x , g(x) = x2 - 2 e h(x) = x3

88
a) Inicialmente iremos definir as funções f e g(lembre-se de “limpar” qualquer
definição anterior de f e g!).

Clear[f,g,Area];
f[x_]:=Sin[x]
g[x_]:=x^3 - 3 x

Agora iremos fazer o gráfico de f e g para sabermos quais são os intervalos em


que f é maior que g e vice-versa.

Plot[{f[x],g[x]},{x,-10,10},PlotStyle-
>{RGBColor[1,0,0],
RGBColor[0,0,1]},Ticks->{{-2,-5,-
10,2,5,10},Automatic}]

-Graphics-

Precisamos saber quais são os pontos tais que f(x) = g(x) para encontra-los
utilizaremos FindRoot sendo que as raízes estão próximas a -2, 0, 2.

FindRoot[f[x]==g[x],{x,-2}]
{x -> -1.87338}
FindRoot[f[x]==g[x],{x,0}]
{x -> 0.}
FindRoot[f[x]==g[x],{x,2}]
{x -> 1.87338}

Como já sabemos quais são os pontos basta encontrar o valor da integral definida
em cada intervalo para sabermos qual é a área entre as curvas(note que há locais onde f é
maior que g e também locais onde ocorre o inverso).

Area=Integrate[g[x]-f[x],{x,-
1.87338,0}]+Integrate[f[x]-g[x],{x,0,1.87338}]
6.96615

b) Neste caso procederemos como no item a, definindo f , g e h e também fazendo


o gráfico das funções:

Clear[f,g,h,Area];

89
f[x_]:=Cos[x];
g[x_]:=x^2-2;
h[x_]:=x^3;
Plot[{f[x],g[x],h[x]},{x,-3,1},PlotStyle-
>{RGBColor[1,0,0],
RGBColor[0,1,0],RGBColor[0,0,1],RGBColor[0,1,1]},
AspectRatio->1,PlotRange->{-2,2.5}]

-Graphics-

Feito o gráfico percebemos que existe três pontos de intersecção entre f(x), g(x) e
h(x).Como o comando Roots não pode ser utilizado devemos utilizar FindRoot sendo
que as raízes estão próximos a x=-1.5, x=-1 e x=1. Logo para achar as raízes com mais
precisão teremos:

FindRoot[f[x]==g[x],{x,-1.5}]
{x -> -1.45462}
FindRoot[g[x]==h[x],{x,-1}]
{x -> -1.}
FindRoot[f[x]==h[x],{x,1}]
{x -> 0.865474}

A área entre as curvas e dada por f(x) - g(x) no intervalo -1.45462 até -1 mais f(x)
- h(x) no intervalo de -1 até .86474, utilizando o comando Integrate e definindo a
área entre as curvas como Area teremos:

Area=Integrate[f[x]=g[x],{x,-1.45462,-1}]-
Integrate[f[x]-h[x],{x,-1,0.86474}]
2.85377

No exemplo seguinte mostraremos como podemos utilizar integrais para


encontrar o volume de sólidos de revolução.

90
Exemplo: Volume de sólido de revolução - Calcule os seguintes volumes dos
sólidos de revolução gerados por:
a) Região delimitada por y = x2 , o eixo x,e as retas x=1 e x=3
quando y(x) sofre uma rotação em torno do eixo x.
b) Região delimitada por y = x2 + 2 e a reta y = x + 4 em torno do
eixo x.

a) Primeiramente iremos definir as função f(x) e de acordo com a fórmula para se


encontrar o volume de um sólido de revolução que é volume_sólido_revolução =
b

  f ( x) 2 dx (veja Leithold, L.) nós teremos:


a

Clear[f,volume];
f[x_]:=x^2;
a=1;
b=2;

volume=Pi*Integrate[f[x]^2,{x,a,b}]

31 Pi
-----
5

b) Neste caso para ter uma idéia geométrica do sólido gerado nós iremos fazer o
gráfico das funções (não no espaço mas no plano).

Clear[f,volume]
f[x_]:=x^2 + 2
g[x_]:=x+4;
Plot[{f[x],g[x]},{x,-3,3},PlotStyle->{RGBColor[0,0,1],
RGBColor[.3,0.7,0.2]}]

-Graphics-

Utilizando o comando Roots para encontrar os pontos nos quais f(x) = g(x)
teremos:

Roots[f[x]==g[x],x]

91
x == 2 || x == -1

O que implica que o intervalo de integração é a=-1 e b=2 logo utilizando a fórmula
teremos:

volume=Pi*Integrate[(g[x]^2)-(f[x])^2, {x,-1,2}]

162 Pi
------
5
162 
Ou seja o volume do solido gerado é de unidades de volume. No exemplo
5
seguinte mostraremos a utilização de integrais no cálculo de comprimentos de arcos.

Exemplo: Comprimento de arco - Calcule o comprimento dos arcos das


seguintes curvas nos .intervalos especificados:
1
a) y = ( x 2  x ) 3/ 2 do ponto onde x=0 até onde o ponto x=5.
3
4
y
b)  2 x 2  3x  2 de x=1 até x=6.
2

a) Inicialmente iremos definir f(x) como sendo a função especificada:

Clear[eq,f,y]
y[x_]:=((x^2 +Sqrt[x])^(3/2))/3
y[x]

2 3/2
(Sqrt[x] + x )
-----------------
3

A fórmula para encontrar o comprimento de uma curva é dada por comprimento


b
curva=  1  f '( x) 2 dx portanto encontrando f´(x) teremos:
a

y'[x]
1 2
(--------- + 2 x) Sqrt[Sqrt[x] + x ]
2 Sqrt[x]
------------------------------------
2

Integrando no intervalo dado teremos(não esqueça de colocar o //N) utilizando a


formula acima:

Integrate[Sqrt[1+(y'[x])^2],{x,0,5}]//N

92
48.1297

Portanto o comprimento da curva é aproximadamente 48.1297 unidades de


comprimento.

b) Novamente definindo eq como sendo a equação em questão teremos (lembre-


se que y é uma função de x):

Clear[y,eq];
eq=y[x]^4/2-(2 x^2 - 3 x +2)
4
2 y[x]
-2 + 3 x - 2 x + -----
2

Resolvendo eq=0 para y[x] encontraremos:

Solve[eq==0,y[x]]
2 1/4
{{y[x] -> -(4 - 6 x + 4 x ) },
2 1/4
{y[x] -> -I (4 - 6 x + 4 x ) },
2 1/4
{y[x] -> I (4 - 6 x + 4 x ) },
2 1/4
{y[x] -> (4 - 6 x + 4 x ) }}

4
Entretanto somente 4x 2  6x  4 é a solução que nos interessa pois é onde se
encontra os nossos pontos então definindo y(x) como sendo esta equação e encontrando
y´(x) teremos:

y[x_]:=(4-6 x + 4 x^2)^(1/4)
y'[x]
-6 + 8 x
---------------------
2 3/4
4 (4 - 6 x + 4 x )

Finalmente utilizando a fórmula e integrando desde x=1 até x=6 faremos:

Integrate[Sqrt[1 + y'[x]^2],{x,1,6}]//N
5.42033

Ou seja o comprimento de arco é de aproximadamente 5,42033 unidades de


comprimento.

93
4.4.5 - Integrais duplas e triplas

Uma integral dupla pode ser resolvida com o auxílio do Mathematica utilizando
o comando Integrate sendo que deveremos acrescentar as variáveis da seguinte
forma:

Integrate[f(x1,x2,...,xn), {x1,x2,...,xn}]

onde f(x1, x2, ..., xn,y) é integrada em relação a x1, x2, ... xn, ou seja estaremos
encontrando   ...  f ( x1, x2,... xn)dx1dx2... dxn . Se tivermos uma integral dupla nossas
variáveis serão apenas x1 e x2(ou x e y se você preferir). Para integrais triplas teremos
uma tripla de variaveis(x,y,z). Se estivermos querendo saber o valor de uma integral
definida podemos utilizar o comando

Integrate[f(x1, x2, ..., xn), {x1,x1mim,x1max}, {x2,


x2mim, x2max},{...,...,...} ...,{xn,xnmim,xnmax}]

x1max x2 max xnmax


que equivale a calcularmos x1min x2min ... 
xnmin
f ( x1, x2,..., xn)dx1dx2... dxn
Vejamos o exemplo abaixo:

Exemplo: Calcule as seguintes integrais duplas :

/2 1 xy sen x 3 3x
a)  x  2 ydxdy b) x  0 y  0 1  4 y 2 dxdy c) x  0 y  x*x  2 x xydxdy

a ,b e c) Utilizando o comando explicado acima encontraremos:


Integrate[Sqrt[x - 2y],x,y]

94
2 2
-2 x 8 x y 8 y
Sqrt[x - 2 y] (----- + ----- - ----)
15 15 15

Integrate[x y Sin[x]/(1+ 4 y^2),{x,0,Pi/2},{y,0,1}]

Log[5]
------
8
Integrate[x y,{x,0,3},{y,x^2 - 2 x, Sqrt[x]}]

9
--
20

Exemplo: Calcule as seguintes integrais triplas:


111
a)  Sinxy xyzCosydxdydz b)  1  z 2 dxdydz c)
000
x3 x2 4x
   xySin( z)dxdydz
x0 y x z x y

a), b) e c) Novamente utilizando o comando Integrate teremos:

Integrate[Sin[x ] z y Cos[y],x,y,z]

2
z Cos[x] (-Cos[y] - y Sin[y])
------------------------------
2
Integrate[Sqrt[1-z^2],{x,0,1},{y,0,1},{z,0,1}]

Pi
--
4

Integrate[x y Sin[z],{x,0,3},{y, x,x^2},{z, x + y,4


x}]//N

4.52808

4.5 - Equações Diferenciais

95
4.5.1 - Introdução

Nesta seção faremos um breve estudo das equações diferenciais. Mostraremos


aqui como resolver equações diferenciais lineares, equações diferenciais de variáveis
separáveis, equações exatas. Também veremos como utilizar processos numéricos para
resolução de equações diferenciais. Finalizando mostraremos como solucionar equações
diferenciais de ordem superior, tanto homogêneas como não homogêneas.

4.5.2 - Equações Diferenciais Lineares

dy
Uma equação diferencias que pode ser escrita na forma  p(x)y  q(x) é
dx
chamada uma equação diferencial de 1 Ordem. Para resolver este tipo de equção
manualmente teriamos que achar um fator integrante que reduz a equação original a uma
equação de variáveis separáveis(Para relembrar como encontrar estes fatores integrantes
veja por exemplo a Ref. 2 no final desta apostila). Em equações deste tipo o Mathematica
pode nos ajudar a encontrar a solução diretamente utilizando o comando DSolve .
Digitando
DSolve[eqdif, y[x], x]

teremos a solução da equação diferencial definida por eqdif, sendo a variável


independente x e estaremos interessados em encontrar y[x].
Vejamos o exemplo abaixo:

dy
Exemplo: Encontre a solução de  3xy  x cos(2x) .Faça também o gráfico da
dx
solução para .c=-8,-4,0,4,8.

Primeiramente iremos definir a equação diferencial como sendo eq. Feito isto
basta utilizar o comando DSolve para encontrar a solução para y(x).

Clear[eq,x,y];
eq=y'[x] - 3 x == x Cos[2 x]
sol=DSolve[eq,y[x],x]

2
6 x + Cos[2 x] + 2 x Sin[2 x]
{{y[x] -> C[1] + ------------------------------}}
4

Nota-se na solução a presença de uma constante C[1], esta constante aparece do


fato de estarmos realizando uma integração para achar a solução da equação diferencial.
Caso tenhamos alguma condição inicial esta constante poderá ser determinada. Fazendo
o gráfico das soluções com os vários valores de C[1] teremos:

96
Plot[Evaluate[Table[sol[[1,1,2]]/. C[1]->i,{i,-
16,8,4}]],
{x,.01,2 Pi}]

60

40

20

1 2 3 4 5 6

-Graphics-
O comando Table faz com que apliquemos a função “sol” cada um dos C[1]
definidos por i, isto é, ele aplica C[1] = -16, -12, ..., 8 variando de 4 em 4 já que o passo
foi assim definido. Para saber maiores detalhes sobre a função Table veja o capítulo 5.
No exemplo seguinte mostraremos como calcular a solução de uma equação sujeita a uma
certa condição inicial y(x0)=k0.

Exemplo: Encontre a solução da equação diferencial


dy
 3x 2 y  Exp(2x)Sin(x)  3xCos(x) , .sujeita a condição inicial y(0) = 1.
dx

Novamente definindo a equção como eq e utilizando o comando DSolve


teremos:

Clear[eq,x,y,sol]

eq=y'[x]- y[x]==Exp[-2 x] Sin[x] + 3 x Cos[x];

sol=DSolve[{eq,y[0]==1},y[x],x]//Simplify

x
11 E Cos[x] 3 x Cos[x] 3 Sin[x]
{{y[x] -> ----- - ------- - ---------- + -------- -
10 2 x 2 2
10 E
3 Sin[x] 3 x Sin[x]
-------- + ----------}}
2 x 2
10 E
note que foi incluido a condição inicial y(0)=0 para a resolução do problema.

97
dy
Exemplo: Compare as soluções de  y  f (x) , onde f(x) e definida como
dx
sendo Sen(x), .Cos(x), Tan(x), Exp(-x), Exp(x), x Exp(-x) Sen(x) sujeitas a condição
inicial y(0)=0.

Podemos utilizar o comando DSolve para resolver cada uma das equações
dadas, entretanto e mais rápido e prático resolver todas as equações ao mesmo tempo,
utilizando alguns comandos novos.
Primeiramente iremos definir lista com todas as funções f(x) e então iremos
resolver a equação diferencial para cada uma delas.

Clear[eq,f,x,y,sol];
func={Sin[x],Cos[x],x Sin[2 x],Exp[-x],Exp[x],x
Exp[x]}
-x x x
{Sin[x], Cos[x], x Sin[2 x], E , E , E x}

Para encontrarmos as soluções utilizaremos novamente o comando DSolve,


associado com o comando Table que foi explicado anteriormente.Para vermos uma
pequena amostra do que são as soluções podemos digitar Short[lista, nl] que
faz com que uma parte da lista seja mostrada em n linhas.

sol=Table[DSolve[{y'[x] + y[x] == func[[i]],y[0]==0},


y[x],x],{i,1,6}];
Short[sol,2]

1 -Cos[x] + Sin[x]
{{{y[x] -> ---- + ----------------}}, {{<<1>>}},
x 2
2 E

1
<<3>>, {{y[x] -> ---- + <<1>>}}}
x
4 E

Agora para termos uma idéia de como são as soluções destas equações iremos
fazer os gráficos de todas elas.
Para isso utilizaremos o comando Table para extrair cada uma das soluções em
sol e coloca-las numa tabela. Colocaremos o nome de toplot pois iremos utlizá-la para a
construção dos gráficos. O comando Short é incluido para mostrar o que temos em
toplot.

toplot=Table[y[x] /. sol[[i,1]],{i,1,6}];
Short[toplot,2]

1 -Cos[x] + Sin[x] -1

98
{---- + ----------------, ---- + <<1>>,
x 2 x
2 E 2 E
x
-4 1 E (-1 + 2 x)
----- + <<1>>, <<2>>, ---- + -------------}
x x 4
25 E 4 E

O comando Partition faz com que a os gráficos gerados por Table[g[i]... sejam
mostrados em linhas de dois objetos gráficos cada. Se tivéssemos colocado
Partition[Table[g[i],{i,1,6}],3] teríamos três gráficos em cada linha e
assim por diante.
O comando Show[GraphicsArray[graphs]] faz com que os objetos
gráficos sejam mostrados como um array ou seja como um vetor.

g[i_]:=Plot[toplot[[i]],{x,-2 Pi,2 Pi},


DisplayFunction->Identity];
graphs=Partition[Table[g[i],{i,1,6}],2];
Show[GraphicsArray[graphs]]

4
3 -6 -4-2.5
-2 2 4 6
2 -5
-7.5
1 -10
-12.5
-6-4-2 2 4 6 -15
2
-20
-6 -4 -2 2 4 6
-40
-6 -4 -2
-2 2 4 6 -60
-80
-4 -100
-6 -120

100 150
125
50 100
75
50
-6 -4 -2
-50 2 4 6 25
-100 -6-4-2 24 6

-GraphicsArray-

99
4.5.3 - Equações Diferencias de variáveis separáveis

Seja uma equação diferencial que pode ser escrita na forma g(y) y´= f(x) então ela
é dita uma equação diferencial separavel. Reescrevendo esta equação como
dy
g( y)  f ( x)  g( y)dy  f ( x)dx podemos facilmente encontrar a solução por
dx
 g( y)dy   f ( x)dx  C onde C é uma constante arbitrária que irá depender das
condições iniciais do problema.

Exemplo: Resolva y Sen(2 x) + (1 - y2) dy = 0. Encontre a solução para este


problema quando .y(1)=2.

Primeiramente iremos definir a equação como sendo eq e tentar resolve-la


utilizando o comando DSolve.

eq=y[x] Sin[2 x] + (1 - y[x]^2) y'[x] == 0


DSolve[eq,y[x],x]
2
Sin[2 x] y[x] + (1 - y[x] ) y'[x] == 0

Solve::tdep: The equations appear to involve


transcendental functions of the variables in an essentially
non-algebraic way.

2
-Cos[2 x] y[x]
Solve[--------- + Log[y[x]] - ----- == C[1], y[x]]
2 2

Você pode perceber que o Mathematica não e capaz de solucionar este problema
diretamente. Entretanto percebemos que trata-se de uma equação de variáveis separáveis
logo podemos utilizar o método descrito acima para achar a solução do problema.
Separando as equações e chamando-as de eqx e eqy teremos:

eqx=Sin[2 x];
eqy=(1-y^2)/y;

Resolvendo  eqxdx e  eqydy encontraremos:

solx=Integrate[eqx,x]

-Cos[2 x]
---------
2
soly=Integrate[eqy,y]
2
-y

100
--- + Log[y]
2

A solução geral é dada por

solgeral=soly==solx+C
2
-y Cos[2 x]
--- + Log[y] == C - --------
2 2

Para termos uma idéia de como estão se comportando as soluções desta equação
diferencial podemos fazer um mapa de contorno das soluções, sendo que este é definido
por solx-soly = Cte.

ContourPlot[solx-soly,{x,1,6},{y,1,6},
ContourShading->False,Contours->25]

1
-ContourGraphics- 1 2 3 4 5 6

Finalmente achando uma solução particular para quando y(1)=2 teremos que
resolver a equação para C quando x=1 e y(1)=2. Resolvendo esta equação
aproximadamente

Solve[solgeral /. {x->1, y->2},C]//N

{{C -> -1.51493}}

101
Chamando esta solução particular de solpart e colocando o valor de C como sendo
-1.51493 encontraremos:

solpart= solgeral /. C->-1.51493


2
-y Cos[2 x]
--- + Log[y] == -1.51493 - --------
2 2

4.5.4 - Equações Diferenciais Exatas

Uma equação diferencial que pode ser escrita na forma M(x,y) dx + N(x,y) dy =
M N
0 tal que  é chamada equação diferencial exata. Se isto ocorrer então existirá
x y
uma função ( x, y) tal que d  M( x, y)dx  N ( x, y)dy  0 . A solução da equação
diferencial exata será ( x, y) =C onde C é uma constante. Vejamos o exemplo abaixo:

Exemplo: Encontre a solução para a equação diferencial [yExp(x y)Cos(2x) - 2


Exp(xy)sen(2x) .+ 2x]dx + [xExp(xy) cos(2x) - 3]dy=0.

Inicialmente iremos definir as funções eqM e eqN que são as funções que
acompanham dx e dy respectivamente.

Clear[eqM,eqN,x,y,phi];
eqM=y Exp[x y] Cos[2 x] - 2 Exp[x y] Sin[2x] + 2 x;
eqN=x Exp[x y] Cos[2 x] - 3;

M N
Feito isto, iremos verificar se  caso isto ocorra podemos solucionar o
y x
problema como explicado anteriormente.

D[eqM,y]==D[eqN,x]
True

Como as derivadas parciais são iguais então existe uma função phi como definida
acima, para encontra-la iremos integrar eqM com relação a x.

phi=Integrate[eqM,x]+f[y]
2 x y
x + E Cos[2 x] + f[y]

Integrando eqN com relação a y para descobrir quem é a função f[y] teremos:

102
soln=Integrate[eqN,y]
x y
-3 y + E Cos[2 x]

Comparando soln e phi percebemos que f[y] =-3y e que, portanto, a solução da
equação é phi=c = phi= x 2  Exp( xy)Cos(2x)  3y  c onde c é uma constante.

4.5.5 - Solução numérica de equações diferenciais

As soluções numéricas para equações diferenciais são úteis quando estamos


trabalhando com equações não lineares para as quais DSolve não pode encontrar a
solução explícita. Para isto podemos utilizar o comando NDSolve que tem a sintaxe:

NDSolve[{eqdif, condini},fun,{var,varmin, varmax}]

onde eqdif define a equação diferencial com a qual estamos trabalhando, condini
são as condições iniciais, lembrando que para uma equação diferencial de n-ésima ordem
precisamos de n condições iniciais. Fun indica a função em que estamos interessados em
obter, isto é, se queremos y(x), y´(x)...y(n-1)(x). O intervalo no qual estamos procurando a
solução e definido por varmin e varmax, para o menor e o maior valores da variavel var
respectivamente.
É bom salientar que o Mathematica não irá retornar uma função com a qual você
pode trabalhar, isto é, você não saberá uma fórmula matemática para aquela função a qual
ele chama de InterpolationFunction, portando a melhor maneira de visualizar a
solução será através da construção de um gráfico da solução obtida utilizando o comando
Plot. Vejamos o exemplo abaixo:

Exemplo:Encontre a solução de y´x2 - y2 = Cos(3x)Exp(y) no intervalo .5 até 10


e sujeito a .condição inicial y(0.5) = 1. Faça o gráfico desta solução neste intervalo.

Utilizando o comando exemplificado anteriormente teremos:

Clear[y,sol]
sol=NDSolve[{y'[x] x^2 - y[x]^2 ==Cos[3 x] Exp[ y[x]],
y[.5]==1},y[x],{x,.5,10}]

{{y[x] -> InterpolatingFunction[{0.5, 10.}, <>][x]}}

Para colocar a solução sol em y[x] faça y[x] /. sol. Fazendo o gráfico,
utilizando a solução anterior sol colocada em y[x] teremos:

Plot[y[x]/.sol,{x,1,10}]

103
1.6

1.4

1.2

2 4 6 8 10
0.8

-Graphics-

Exemplo: Encontre a solução de y.y´ - cosxy = Exp(3 cos y) sujeito a condição


inicial y(2)=i .onde i pertence ao intervalo 1, 1.5, 2, ..., 5. Encontre a solução para x no
intervalo 2 a 10. Faça o gráfico da solução encontrada.

Primeiramente iremos encontrar a solução do problema para as várias condições


iniciais. Poderiamos encontrar a solução para cada valor digitando uma condição inicial
de cada vez, porém é mais eficiente colocar as soluções em uma tabela na qual i variará
de 1 até 5 com passo .5. Fazendo isto teremos:
Clear[sol,y,x]
sol[i_]=Table[NDSolve[{y'[x]*y[x]-
Cos[x*y[x]]==Exp[3*Cos[y[x]]],
y[2]==i},y[x],{x,2,10}],{i,1,5,.5}]

{{{y[x] -> InterpolatingFunction[{2., 10.}, <>][x]}},


{{y[x] -> InterpolatingFunction[{2., 10.}, <>][x]}},
{{y[x] -> InterpolatingFunction[{2., 10.}, <>][x]}},
{{y[x] -> InterpolatingFunction[{2., 10.}, <>][x]}},
{{y[x] -> InterpolatingFunction[{2., 10.}, <>][x]}},
{{y[x] -> InterpolatingFunction[{2., 10.}, <>][x]}},
{{y[x] -> InterpolatingFunction[{2., 10.}, <>][x]}},
{{y[x] -> InterpolatingFunction[{2., 10.}, <>][x]}},
{{y[x] -> InterpolatingFunction[{2., 10.}, <>][x]}}}

Assim como fizemos no exemplo anterior devemos colocar as soluções em y[x]


fazendo y[x] /. sol[i] e aqui teremos que utilizar o comando Table novamente.
Depois basta utilizar o comando Plot, entretanto devemos incluir Evaluate para que toplot
seja calculado antes de que o Mathematica tente fazer o gráfico.

toplot=Table[y[x] /. sol[i],{i,1,5}];
Plot[Evaluate[toplot],{x,2,10},AspectRatio->1]

104
8

4 6 8 10

-Graphics-

4.5.6 - Equações Diferenciais de Ordem Superior

4.5.6.1 - Equações diferenciais homogêneas de 2 odem com coeficientes


constantes.

Seja uma equação diferencial do tipo p(x,y) y´´(x) + q(x,y)y´(x) + r(x,y) y(x) =
g(x,y) se p(x,y) =a q(x,y) = b , r(x,y) =c e g(x,y) = 0 então ficaremos com ay´´(x) +
by´(x) + cy(x) = 0 onde a, b e c são constantes. Uma equação deste tipo é chamada uma
equação diferencial homogênea de 2 odem com coeficientes constantes. Supondo a
solução deste tipo de equação como sendo y(x) = Exp(r x) então y´(x) = rExp(r x) e y´´(x)
= r2Exp(rx). Substituindo na equação diferencial teremos:
ar2Exp(r x) + brExp(r x) + cExp(r x) = 0
já que Exp( r x) sempre é diferente de zero teremos que ar2 + br + c = 0 e o nosso
problema se reduz a solução da equação do 2 grau em r. Sendo r1 e r2 as soluções da
equação anterior poderemos ter três tipos de solução:
Se r1 e r2 forem reais e desiguais, a solução da equação diferencial é
y=C1Exp(r1x) + C2Exp(r2x)
Se r1 e r2 forem complexos conjugados,   i a solução geral é
y=C1Exp( x )Cos( x ) + C2Exp( x )Sen( x )
Se r1 e r2 forem iguais entâo a solução geral será
y=C1Exp(r1x) + C2xExp(r2x)

Exemplo: Encontre a solução geral para a equação diferencial y´´- 4 y´ + 4 y = 0

Utilizando o comando DSolve, que também funciona com equações diferenciais


de ordem superior, obteremos a resposta, onde C[1] e C[2] são constantes que irão
depender das condições iniciais.

105
Clear[x,y]
DSolve[y''[x] - 4 y'[x]+ 4 y[x]==0,y[x],x]
2 x 2 x
{{y[x] -> E C[1] + E x C[2]}}

Exemplo: Encontre as soluções das equações diferenciais sujeitas as condições


iniciais y(0)=1 e .y´(0) = 0.
a) y´´ - 6 y´ + 5 y = 0
b) 2 y´´ - 3 y´ + 21.5 y = 0
c) 9 y´´ - 12 y´ + 4 y = 0

Novamente utilizando o comando DSolve, não esquecendo de colocar as


condições iniciais e a variável independente teremos para a, b e c respectivamente:

DSolve[{y''[x] - 6 y'[x]+ 5
y[x]==0,y[0]==1,y'[0]==0},y[x],x]
x 5 x
5 E E
{{y[x] -> ---- - ----}}
4 4

Clear[x,y]
sol=DSolve[{2 y''[x] - 3 y'[x]+ 43/2 y[x]==0,y[0]==1
,y'[0]==0},y[x],x]
3 I
---
1 2 ((6 - 2 I Sqrt[163]) x)/8
{{y[x] -> (- - ---------) E +
2 Sqrt[163]
3 I
---
1 2 ((6 + 2 I Sqrt[163]) x)/8
(- + ---------) E }}
2 Sqrt[163]

Note que a solução apresentada está na forma de número complexo, para coloca-
la na forma de soma de cosenos e senos deveremos utilizar a função ComplexExpand
que faz essa transformação já que nossas variáveis são reais. Fazendo sol[[1,1,2]]
para pegar a parte da solução que nos interessa(veja mais sobre isto no capítulo 5)
faremos:

sol[[1,1,2]]//ComplexExpand
(3 x)/4 Sqrt[163] x
3 E Sin[-----------
]

106
(3 x)/4 Sqrt[163] x 4
E Cos[-----------] - --------------------------
-
4 Sqrt[163]

Fazendo um gráfico da solução teremos:

Plot[y[x] /. sol,{x,0,7}]

50

1 2 3 4 5 6 7
-50

-100

-150

-Graphics-

Clear[x,y]
DSolve[{9 y''[x] - 12 y'[x]+ 4
y[x]==0,y[0]==1,y'[0]==0},y[x],x]

(2 x)/3
(2 x)/3 2 E x
{{y[x] -> E - ------------}}
3

De maneira análoga podemos encontrar as soluções para equações diferenciais


com coeficientes constantes, desde que sejam de ordem menor que 5. Para as equações
de ordem maior ou igual a cinco deveremos achar as soluções da equação característica,
utilizando o comando Solve quando tratar-se de uma equação não muito complicada e
FindRoot quando só pudermos achar uma aproximação numérica da solução.

Exemplo: Encontre a solução da equação diferencial yIV - 2 y´´´ -33 y´´ - 22 y´+56
y =0

107
Nós podemos encontrar soluções para equações diferenciais até quarta ordem
diretamente utilizando DSolve, assim sendo teremos:

Clear[sol,eq,y]
eq=D[y[x],{x,4}]- 2 D[y[x],{x,3}] -33 y''[x] - 22 y'[x]
+ 56 y[x]
(3) (4)
56 y[x] - 22 y'[x] - 33 y''[x] - 2 y [x] + y [x]

sol=DSolve[eq==0,y[x],x]

C[1] C[2] x 7 x
{{y[x] -> ---- + ---- + E C[3] + E C[4]}}
4 x 2 x
E E

onde colocamos a solução da equação em sol e C[1], C[2], C[3] e C[4] são
constantes que dependem das condições iniciais.

4.5.6.2 - Equações diferenciais não homogêneas - Método da variação dos


parâmetros.

Quando temos uma equação diferencial não homogênea deveremos dividir a


solução em duas partes: a solução da equação homogênea associada e a solução particular.
Encontradas estas duas soluções a solução geral será a soma da solução da
equação homogênea mais a solução particular.
Nesta seção mostraremos um método de encontrar a solução particular que
consiste no metodo da variação dos parâmetros.
Inicialmente iremos definir o wronskiano(ou determinante wronskiano).
Seja y1(x), y2(x), ... yn(x) as soluções de uma equação diferencial de ordem n
y1 y 2 ... yn
y '1 y '2 ... y ' n
então o wronskiano será definido como sendo: wonskiano = .
   
y n 1 1 y n 1 2 ... y n 1n
Caso o wronskiano seja diferente de zero significará que y1, y2, ... yn são
linearmente independentes, caso seja igual a zero elas serão linearmente dependentes.

Exemplo: Determine se f(x) = Exp(3x) e Exp(3x - 3) são linearmente


independentes ou .linearmente dependentes.

Primeiramente iremos definir a função wronskiano, que terá como entrada uma
lista de funções(listas serão discutidas em detalhes no próximo capitulo) e nos retornará
o wronskiano das funções dadas. Uma lista é definida como um conjunto de
dados(funções, números, etc) que são delimitados por chaves{}. Por enquanto apenas
tecle sem se preocupar muito com o significado dos novos comandos.
wronskiano[list_]:=Module[{n,r,matrix},
n=Length[list];
r[1]=list;

108
r[k_]:=r[k]=D[r[k-1],x];
matrix=Table[r[i],{i,1,n}];
Det[matrix]];

Definido a função wronskiano basta digitar

wronskiano[{Exp[3 x],Exp[3 x - 3]}]


0

e teremos que o wronskiano das funções é zero ou seja elas são linearmente
dependentes.

Seja agora o problema de encontrar uma solução particular para uma equação
diferencial da forma y´´+ p(x) y´+ q(x) y = g(x), teremos que a solução particular será
dada por:
y 2( x ) g ( x ) y1( x ) g ( x )
Y ( x )   y1( x )  dx  y 2( x )  dx
W ( y1, y 2)( x ) W ( y1, y 2)( x )
onde y1(x) e y2(x) são as soluções da equação diferencial homogênea associada
e W(y1,y2)(x) é o wronskiano como definido acima.
Desta forma a solução da equação diferencial será
y=C1y1(x) + C2y2(x) + Y(x).

Exemplo: Encontre a solução geral para a equação y´´ + y = tan(x).

Primeiramente iremos definir e resolver a equação homogênea associada a esta


equação que é y’’ + y = 0

eqhom=y''[x] + y[x]
DSolve[eqhom==0,y[x],x]
y[x] + y''[x]

{{y[x] -> C[2] Cos[x] - C[1] Sin[x]}}

Feito isto podemos definir as duas soluções como sendo y1 e y2.

y2[x]=Cos[x]
y1[x]=-Sin[x]

Cos[x]
-Sin[x]

109
Agora podemo calcular o wronskiano que será utilizado na obtenção da equação
particular e que aqui recebeu o nome de W[x].

W[x]=wronskiano[{y1[x],y2[x]}]

2 2
Cos[x] + Sin[x]

Finalmente calculando a solução particular conforme a fórmula mostrada


anteriormente teremos:

Y[x]=-y1[x] Integrate[y2[x] Tan[x]/W[x],x] + y2[x]


Integrate[y1[x] Tan[x]/W[x],x]//Simplify

x x x x
Cos[x] (Log[Cos[-] - Sin[-]] - Log[Cos[-] + Sin[-]])
2 2 2 2

A solução geral é encontrada somando-se y1, y2 e Y[x]:

solgeral=C[1] y1[x]+C[2] y2[x]+Y[x]

C[2] Cos[x] +
x x x x
Cos[x] (Log[Cos[-] - Sin[-]] - Log[Cos[-] + Sin[-]])-
C[1] Sin[x]
2 2 2 2

4.5.6.3 - Soluções Numéricas para equações diferenciais de ordem superior.

Para acharmos uma solução numérica para uma equação diferencial de ordem
superior quando não conseguimos encontrar uma solução explicita com o comando
DSolve devemos utilizar o comando NDSolve. Para tanto devemos proceder como o
mostrado para equações de primeira ordem, não esquecendo de colocar todas as condições
iniciais necessárias.

Exemplo: Encontre a solução para y’’ + .75 y’ = Exp[Sin[1.25x + 1]]. Faça um


gráfico da .solução encontrada.

Definindo a equação acima como sendo eq teremos(passando a exp para o


primeiro membro) :

eq=.75 y'[x] + y''[x] - Exp[Sin[1.25 x+1]]

110
Sin[1 + 1.25 x]
-E + 0.75 y'[x] + y''[x]

Utilizando as condições iniciais e o comando NDSolve obteremos a solução:

sol=NDSolve[{eq==0,y[1]==1,y'[1]==2},y[x],{x,1,10}]

{{y[x] -> InterpolatingFunction[{1., 10.}, <>][x]}}

Finalmente fazendo o gráfico teremos:

Plot[y[x] /. sol,{x,1,10}]
14
12
10
8
6
4
2

2 4 6 8 10
-Graphics-

4.6 - Exercícios

4.01 - Calcule os seguintes limites:


x x 2  3x  2
a) lim b) lim
x  2 ( x  2) 2 x 1 x2  1
x3 3
x 1
c) lim d) lim
x  3 x 3 x 1 x 1
7x 2  2x  1 x4  1
e) lim 2 f) lim
x  3x  8x  5 x  2 x 2  3

Solução: a)  , b) -0.5, c) 2 3 , d) 2/3, e) 7/3. f) 1/2.

4.02 - Encontre os seguintes limites unilaterais:


4 2s
a) lim b) lim
x  2 x  2 s 1 (1  s)
3

x Exp( x 5 )  x
c) lim d) lim
x 1 x  1 x  0 2x
Sec( x)  Cos( x) sen x
e) lim f) lim 2
x  0 Sin( x)  2Tg( 2 x) x  0 3x  2 x

111
Solução: a), b) -, c) -, d) 0, e) 0, f) 1/2.

df ( x )
4.03 - Encontre as seguintes derivadas onde f(x) é igual a:
dx
x 4  4 x 2  3x  2 Ln(2 x 3 )
a) b)
x3 Tg(3x  ln( x))
x x 1
d) 3 c) ln 3
x 13
x2  1

3x 4  12x 3  4 x 2  24x  7
Solução:a)
( x  3) 2
3Co tan(3x  ln x)  (1  3x) * Co sec(3x  ln( x)) 2 * ln(2 x 3 )
b)
x
1  2x 3
x  2x  x 2
c) d)
3x 2 / 3 ( x 3  1) 4 / 3 3( x  1)( x 2  1)

4.04 - Encontre os valores das seguintes somatórias:

i  20 i9
a)  i 2 (2i  3)
i0
b)  i  3i
i3
3
mas pegando só i ímpares.
i  5, j  6 , k  4 j 7 , i  8
c)  jik 2  j2 i  ji 2
i  0. j  0 , k  0
d)  ji  2 j
j 3 , i  0
3
mas pegando i pares e j

ímpares.

Solução: a) 79.590, b) -3648, c) 8400, d) -4650.

4.05 - Econtre as seguintes integrais indefinidas:


3  2 sen t
a)  x 1  x x dx b)  dt
cos2 t
4x 3  1 4 ln 1/ x
c)  dx d)  dx
2x  1 x
1
e)  (  10 2 x )dx f)  tg 5 x sec 3 xdx
x x 5
2

4(1  x 3/ 2 ) 3/ 2
Solução: a) +c, b) sec(t)(2 + 3 sen (t))+c, c)
9
x x 2 2 x 3 ln(1  2 x)
   +c
2 2 3 4
5
ln(1/ x )
Tan 1 ( )
d) (
4
) +c, e)  x 2
 5 
10 2 x
+c,
ln(4) 5 2 ln(10)
(57  28 cos(2 x)  35 cos(4 x)) sec 7 ( x)
f) +c onde c é uma constante.
840

112
4.06 - Encontre um valor aproximado para as seguintes integrais definidas:

/4 /4
a) 
0
tg 4 x sec 6 xdx b)  Exp(3x) sen(4x)dx
0
5 x 7 arccos( x)
c) 
0
5 x 4
dx d) 
0
1  x3
dx

188
Solução: a) , b) 1.84812, c) 1.55465, d) 4.70246.
315

4.07 - Encontre as áreas delimitadas pelas seguintes curvas:

a) y= Exp(x), x=2, y=Sin(2x)*x3.


b) y = x2sin(x), cos(Exp(x))*x1/3, retas x=3.5, eixo y.
c) y = 2 x - 1, eixo x e x=1 e x=5.

Solução: a) 37.6841, b) -7.26145

4.08 - Encontre a solução para as seguintes equações diferenciais:


a) y’ - 2y = 2 Exp(2 x - 3)
b) x3y’ + 4 x2 y = Exp(2 x)
dy x  Exp( 5x)
c) 
dx y  2 y 2  Sinx
d) Sen 2x dx + Cos2y dy = 0

Exp(2 x)(2 x  1) c[1]


Solução: a) 2xExp(2x  3)  CExp(2x) , b)  4 ,
4x 4 x
x 2
6Cosy  4 y  3y
3 2
c) 5Exp( 5x)   C
2 6
d) Sen(2 y) - Cos(2 x) = C

4.09 - Encontre a solução numérica para as equações diferenciais, faça o gráfico


das soluções. Para todas elas considere y(1) = 1.
a) y´ + Cos y = x2y
b) x y´ + Exp(y) = 3 x - 4
c) y´ + Exp(x y) = Cos x - Sen y.

4.10 - Encontre a solução para as equações diferenciais de 2 ordem.

113
a) y’’ + 10 y’ - 2 y = 0
b) 4 y’’ + 4 y’ = 0
c) 2 y’’ + 2 y = 0 , y(0) =1, y’(0)=0.
d) 2 y’’ - 5 y’ + y = Exp[2 x] Sin[ 3 x -2]
Cos(2 x)
e) y’’ + y =
Sec(3x)
Solução: a) y = C[1] Exp(-10.1962 x) + C[2] Exp(0.196152 x)
b)C[1] Exp( -x) + C[2]
c)Cos[x]
d) C[1] Exp(0.212022 x) + C[2] Exp(2.28078 x) -
0.0408332 Exp(2x) Cos(2 - 3 x) + 0.08581 Exp(2 x) Sin(2 - 3 x)
e) C[2] Cos[x] -C[1] Sin[x] - 0.0208333 Cos[5x] + 0.25 x Sin[x] + 0.125
Cos[x]

4.11 - Encontre a solução para as seguintes equações diferenciais.

a) y’’’ -10 y’’+ 31y’ -30 y = 0

b) yIV - 3 y’’’ + 2y’’ = 0, y(0) = 0, y’(0)=0, y’’(0)=0, y’’’(0)=1

c) yV - 2yIV - y’’’ + 2 y’’=0.

Solução:

a) Exp(2 x)*[ C[1] +


C[2] Exp[x] + C[3] Exp(3x)]

b)
3 Exp(2 x) x
 Exp( x)  
4 4 2

c) C[1]
Exp(-x) + C[2] + x C[3] + C[4] Exp(x) + C[5] Exp(2x).

4.12 -Encontre a solução numérica para as seguintes equações diferencias,


fazendo o gráfico das soluções no intervalo 1< x < 10. Considere y(1) = 0, y’(1) = 0, ...
yn(1) = 0.

a) y’’’ - y’ + 5 y = Cos(3 y)

b) yIV - y’’ + y’ = Exp(0.1x) + Cos(y)

c) yIV - 3 y’’ = Cos(y)

114
Solução: a) Utilize MaxSteps->3000.
b) Utilize MaxSteps->2000.

115
CAPÍTULO 5 - LISTAS, VETORES E MATRIZES

5.1 - Introdução

Neste capítulo falaremos sobre listas, matrizes e vetores. Mostraremos algumas


operações bastante interessantes tanto com listas como com matrizes tais como cálculo
de determinantes, manipulação de listas, resolução de sistemas lineares, etc.
Mostraremos também como criar tabelas de valores, fazer gráficos a partir de uma
lista de valores bem como interpolar estes valores.

5.2 - Listas

5.2.1 -Introdução

No Mathematica uma lista é um conjunto de elementos delimitados por chaves


({}).
Muitas funções tem como entrada uma lista (como por exemplo Plot,
ParametricPlot onde o intervalo é uma lista), outras dão como resposta uma lista
como Solve, DSolve, NDSolve, etc. Portanto torna-se importante saber manipulá-
las, isto é saber inserir elementos em uma lista, retirar elementos, etc.
Listas também são úteis quando queremos fazer o gráfico de um conjunto de
pontos como veremos adiante.

5.2.2 - Criando e manipulando listas

Para criar uma lista basta digitar


{el1, el2, ... eln}
onde el1, el2, ... eln são os n elementos que comporão a lista. Estes elementos
podem ser números, uma função matemática, nomes, etc.

Exemplo: Crie uma lista com os números 1, 2, 3, 4, 5, chamando-a de num. Crie


também uma lista com os nomes renato, ana, fabricio chamando-a de nomes.

Definindo as listas como explicado acima teremos:

num={1,2,3,4,5}
momes={renato,ana,fabricio}

{1, 2, 3, 4, 5}
{renato, ana, fabricio}
Para manipular uma lista podemos por exemplo somar um número a cada
elemento da lista, multiplica-los por uma constante, soma-los com outra lista, etc.
Vejamos o exemplo abaixo.

116
Exemplo: Com a definição de num acima some 5 a cada elemento, multiplique a
lista por 2 e chame o resultado de mult, some mult com num termo a termo. Aplique
também f(x) = x2 a cada elemento de num.

Utilizando a definição de num feita acima teremos:

5 + num
{6, 7, 8, 9, 10}

onde estamos somando 5 a cada elemento de num.


Fazendo

mult=2*num
{2, 4, 6, 8, 10}

estaremos multiplicando cada elemento de num por dois e criando ao mesmo


tempo uma nova lista chamada mult. Finalmente podemos somar os elementos de mult e
num um a um fazendo:

mult + num
{3, 6, 9, 12, 15}

Para aplicar uma função a uma lista basta definir a função e colocar como
argumento da função a lista, assim sendo :

f[x_]:=x^2
f[num]

{1, 4, 9, 16, 25}

Para retirar um elemento de uma lista podemos utilizar nomelista[[n]] que


retira o n-ésimo elemento da lista que esta definida por nomelista.
Desde modo se quiséssemos retirar o 2º elemento da lista nomes teríamos que
digitar

nomes[[2]]
ana

A várias outras funções que manipulam posições de elementos em uma lista tais
como as listadas abaixo:

First[lista] - Retira o primeiro elemento de uma lista.


Last[lista] - Retira o último elemento de uma lista.
Rest[lista] - Retorna a lista sem o primeiro elemento.
Part[lista,n] - Retira o n-ésimo elemento de uma lista.
Part[lista,-n] - Retira o n-ésimo elemento de uma lista, contando do final
para o começo.

117
Take[lista, n] - Retira os primeiros n elementos de uma lista.
Take[lista, -n] - idem começando do final para o começo.
Take[lista,{m,n}] - Retira os elementos de m a n.
Drop[lista, n] - Apaga os n primeiros elementos de uma lista.
Drop[lista,{n}] - Apaga o n-ésimo elemento da lista.
Prepend[lista, elem] - coloca o elem no inicio da lista.
Append[lista, elem] - coloca o elem no final da lista.
Insert[lista,elem,n] - coloca o elem na posição n da lista.
Delete[lista,n] - Apaga o n-ésimo elemento da lista.
Union[lista1,...,listan] - cria uma única lista com todos os
elementos de
lista1,lista2,...,listan. Não repete elementos.
Intersection[lista1,...,listan] - Faz a intersecção das n listas.
Complement[lista1,...,listan] - Encontra o complementar das
listas.
Partition[lista,n] - Transforma a lista em uma nova lista na qual cada
elemento é uma lista com n elementos.

Exemplo: Defina uma lista composta por

2.34 3.76 9.79 3.44 1.00 3.55 18.90 34.22 0.99 -2.33
Pede-se:
a)Determine o 1° e o ultimo elemento, b) O tamanho desta lista , c)Coloque os
elementos em ordem crescente, d) Extraia o 7° elemento desta nova lista, e)A localização
do elemento 3.76
nesta lista, f) Reparta esta lista em 5 listas.

Definindo a lista teremos:

lista={2.34,3.76,9.79,3.44,1.00,3.55,18.90,34.22,
0.99, -2.33}
{2.34, 3.76, 9.79, 3.44, 1., 3.55, 18.9, 34.22, 0.99,
-2.33}

Digitando

First[lista]
2.34
Last[lista]
-2.33
estaremos pegando o primeiro e o último elementos da lista( 2.34 e -2.33
respectivamente).

Para saber o tamanho de uma lista basta digitar

Length[lista]

118
10

que retorna o número de elementos que a lista contém.


Chamando a lista ordenada de novalista teremos:

novalista=Sort[lista]
{-2.33, 0.99, 1., 2.34, 3.44, 3.55, 3.76, 9.79, 18.9,
34.22}

Digitando

Position[novalista,3.76]
{{7}}

Saberemos que 3.76 ocupa a 7° posição na lista ordenada.

Como a lista tem 10 elementos cada nova lista devera conter 2 elementos para que
tenhamos cinco listas logo fazendo

Partition[novalista,2]
{{-2.33, 0.99}, {1., 2.34}, {3.44, 3.55}, {3.76, 9.79},
{18.9, 34.22}}

obteremos a resposta desejada.

Exemplo: Resolva a equação x2 - 2 x + 5 = 0.

Para resolver esta equação basta digitar:

sol=Solve[x^2 - 2 x + 5 ==0 ,x]


{{x -> 1 - 2 I}, {x -> 1 + 2 I}}

Perceba que o comando Solve retorna uma lista com as soluções da equação. Na
verdade ele retorna uma lista que contém duas listas(uma matriz). Para termos acesso a
primeira das duas listas basta fazer

sol[[1]]
{x -> 1 - 2 I}

Para acessar x -> 1 - 2 I que é o primeiro elemento da primeira lista devemos


fazer(note que esta lista na realidade é formada de um único elemento).

sol[[1,1]]
x -> 1 - 2 I

Se quiséssemos utilizar o “1 - 2 I” deveríamos teclar

119
sol[[1,1,2]]

1 - 2 I

pois ele é o segundo elemento da primeira lista que esta contida na lista principal.
Caso quiséssemos ter acesso ao “x” deveríamos digitar

sol[[1,1,1]]

já que ele é o primeiro elemento da primeira lista que esta contida na lista
principal.

5.2.3 - Gerando listas com o comando Table

O comando Table serve para gerar listas(que podem ser consideradas tabelas)
a partir de uma regra de formação, que pode ser uma seqüência, uma função matemática,
etc.
A sintaxe do comando é a seguinte
Table[expressão,{var,varmin,varmax}]
onde expressão representa a regra de formação e a lista {v ar,varmin,varmax}
representa a variação da variável var da qual e composta a expressão. Desta forma o passo
da variável var é tomado como sendo 1, se desejarmos podemos alterar este passo para
um outro passo qualquer fazendo {var,varmin,varmax, passo}.
Vejamos o exemplo abaixo:

Exemplo: Forme uma tabela com os valores de x2 para x no intervalo de 1,2..10.


Faça o mesmo mas com variação de ½ em ½ .

Utilizando o comando Table sendo que neste caso a expressão é x 2 e estamos


interessados nos valores de x2 para valores de x no intervalo de 1 até dez teremos:

Table[x^2,{x,1,10}]
{1, 4, 9, 16, 25, 36, 49, 64, 81, 100}

que nos retorna uma lista com os valores de x2 para o intervalo especificado.
Identicamente para um passo de ½ teremos:

Table[x^2,{x,1,10,1/2}]

9 25 49 81 121 169 225


289
{1, -, 4, --, 9, --, 16, --, 25, ---, 36, ---, 49, ---
, 64, ---,

120
4 4 4 4 4 4 4
4

361
81, ---, 100}
4

Exemplo: Crie uma tabela com os 10 primeiros números primos.

No Mathematica existe uma função que se chama Prime[n] onde n é um


número natural. Esta função retorna o n-ésimo número primo.
Para que a lista gerada fique com a forma de uma tabela utilizaremos a função
//TableForm que pode ser acrescida ao final do comando Table como o //N.
Assim sendo

Table[{n,Prime[n]},{n,1,10}]//TableForm

1 2

2 3

3 5

4 7

5 11

6 13

7 17

8 19

9 23

10 29

Caso desejássemos poderíamos colocar legendas na tabela para isto faríamos por
exemplo:

TableForm[Table[{n,n^2,n^3},{n,1,7}],
TableHeadings->{None,{"x","Quadrado","Cubo"}},
TableAlignments->Center]

x Quadrado Cubo
1 1 1

2 4 8

121
3 9 27

4 16 64

5 25 125

6 36 216

7 49 343

Onde temos uma tabela com os valores de x, x2 e x3 respectivamente. A opção


TableHeadings->{None,{“nome1 col”, “nome 2 col”, .... ,
“nome n col”}} faz com que sejam colocados os títulos das n colunas que formam
a tabela. O comando TableAlignments->Center diz que os dados estarão
alinhados ao centro.
Até agora temos utilizado apenas um índice para o comando Table, entretanto
ele também pode ser utilizado com dois ou mais índices como veremos no exemplo
abaixo.

Exemplo: Encontre a2n para valores de a entre 1 e 4 e valores de n entre 1 e 5.

Utilizando o comando Table e definindo os dois intervalos das variáveis teremos:

Table[a^(2 n), {a,1,4},{n,1,5}]//TableForm

1 1 1 1 1

4 16 64 256 1024

9 81 729 6561 59049

16 256 4096 65536 1048576


Note que na primeira linha o valor de a é mantido constante em 1, na segunda em
2 e assim por diante. Isto acontece por que o intervalo da variável a foi definido antes do
da variável n por isso a tem uma variação mais lenta do que o de n.
Desta forma teremos

Table[expressão,{v1,v1min,v1max},{v2,v2min,v2max},
...{vn,vnmin,vnmax}]

onde vn mudará “mais rápido” de valor do que vn-1 e assim por diante.

5.2.4 - Criando gráficos a partir de listas

122
Muitas vezes nós não dispomos de uma equação matemática para que possamos
criar um gráfico. Pode ser que os dados de que dispomos foram obtidos
experimentalmente e que não façamos idéia de que tipo de equação matemática eles são
originados. Assim a única coisa de que dispomos é uma lista dos dados e então não
podemos utilizar o comando Plot.
Quando isto acontecer deveremos utilizar o comando ListPlot que gera um
gráfico a partir de pontos de uma lista. Sua sintaxe básica é a seguinte
ListPlot[lista]
onde a lista contém os dados que queremos fazer o gráfico.

Exemplo: Construa o gráfico dos valores de Cos(2 x) no intervalo de 0 ate 500.

Inicialmente criaremos uma lista que irá conter os valores de Cos(2x) no intervalo
dado. A esta lista daremos o nome de valores.

valores=Table[N[Cos[2 x]],{x,0,500}];

Note que esta é uma lista um tanto quanto grande, por isso nós incluímos o ; no
final da expressão para que nada fosse mostrado. Para ver uma parte do conteúdo de
valores podemos digitar:

Short[valores,2]
{1., -0.416147, -0.653644, 0.96017, -0.1455, <<8>>2,

<<492>>, -0.99338, 0.517847, 0.562379}

Onde nos é mostrado 2 linhas do conteúdo de valores. Finalmente para fazer o


gráfico dos valores basta digitar:

ListPlot[valores]

0.5

100 200 300 400 500


-0.5

-1
-Graphics-

123
Note que a cada um dos valores da tabela o comando ListPlot esta associando a
sua posição, isto é, ele esta fazendo o gráfico dos pares ordenados (1,cos(2)), (2,cos(4)),
...(500,cos(1000) se quiséssemos que ele associasse valores de modo diferente teríamos
que proceder como no exemplo seguinte.

Exemplo: Seja a tabela abaixo a distribuição da produção de aço em uma usina


siderúrgica. Faça o gráfico dos anos com a respectiva produção.

Ano Produção em toneladas.


1992 2.56
1993 3.65
1994 7.01
1995 5.45
1996 7.88

Perceba que aqui teremos que definir uma lista com os valores que formarão os
pares ordenados já que estamos interessados em fazer o gráfico de (1992,2.56) e não
(1,2.56). Inicialmente iremos definir uma lista que conterá os anos e as respectivas
produções. Nos chamaremos esta lista de dados para simplificar. Desta forma teremos:

dados={{92,2.56},{93,3.65},{94,7.01},{95,5.45},{96,7.8
8}}
{{92, 2.56}, {93, 3.65}, {94, 7.01}, {95, 5.45}, {96,
7.88}}

Onde definimos os dados com os quais será feito o gráfico. Utilizando o comando
ListPlot teremos:

ListPlot[dados]
8

93 94 95 96
-Graphics-

O gráfico acima não ficou tão interessante quanto desejávamos pois os pontos
estão demasiadamente pequenos. Para que os pontos não pareçam tão pequenos em
comparação com o restante do gráfico podemos incluir a opção PointSize->[n] onde n

124
representa uma porcentagem do total do gráfico assim para ter um gráfico em que os
pontos ocupem 3% do total do gráfico teremos:

ListPlot[dados,PlotStyle->PointSize[0.03]]

93 94 95 96
-Graphics-

E então teremos um gráfico onde os pontos estão mais nítidos.

Também podemos encontrar uma curva por mínimos quadrados, obtendo assim
uma função que se aproxima dos pontos. O comando necessário para fazer isto é Fit que
tem a seguinte sintaxe
Fit[lista,{funções},vars]

onde lista são os dados de que dispomos, {funções} é uma lista que contém as
funções que constituirão a aproximação por exemplo 1, x, x2, cosx , etc, isto é a função
gerada por Fit será uma combinação linear das funções em {funções} e finalmente vars
são as variáveis das quais as funções dependem.

Exemplo - Faça o gráfico de

-1.45 6.32 28.47 70.55 38.78 38.96 76.00 58.11 90.55 78.65 28.66
46.57

mas antes coloque os valores em ordem crescente.

Definindo a lista teremos:

lista={-1.45,6.32,28.47,70.55,38.78,38.96,76.00,
58.11,90.55,78.65,28.66,46.57}

{-1.45, 6.32, 28.47, 70.55, 38.78, 38.96, 76.,


58.11, 90.55, 78.65, 28.66, 46.57}

Colocando a lista em ordem crescente e chamando-a de listaok ficaremos com:

125
listaok=Sort[lista]

{-1.45, 6.32, 28.47, 28.66, 38.78, 38.96, 46.57,


58.11, 70.55, 76., 78.65, 90.55}

Inicialmente iremos encontrar uma função que se aproxima dos pontos dados,
utilizando o comando Fit. Note que escolhemos func como sendo um polinômio de grau
menor ou igual a quatro, por isso ela se torna uma combinação linear de funções do grau
0, 1, 2, 3 e 4. Assim teremos:

func=Fit[listaok,{1,x,x^2,x^3,x^4},x]
2 3
4
-26.0283 + 27.7226 x - 5.32686 x + 0.551038 x -
0.0194351 x

Agora iremos fazer o gráfico da função func, utilizando o comando Plot e o


gráfico dos pontos utilizando ListPlot. Deixaremos para mostrar ambos os gráficos
juntos abaixo, por isso chamaremos um de gr1 e o outro de gr2 respectivamente.

gr1=Plot[func,{x,1,12},DisplayFunction->Identity]
gr2=ListPlot[listaok,PlotStyle->PointSize[0.02],
DisplayFunction->Identity]

-Graphics-
-Graphics-

Finalmente mostrando ambos os gráficos

Show[gr1,gr2,DisplayFunction->$DisplayFunction]

80

60

40

20

2 4 6 8 10 12

-Graphics-

126
Exemplo: Faça o gráfico de
0.3 -0.57 -0.67 0.47 1.23 1.74 0.55 -0.462 -0.77 0. 1.2
1.45 0.983 -0.192 -0.684 -0.3 0.9 1.47 1.35 0.128
Encontre também uma curva que se aproxime dos pontos dados. Obs: os pontos
dados formam os pares ordenados (1,0.3), (2,-0.57)... (20,0.128).

Inicialmente iremos apagar as definições anteriores de lista e de fun pois elas serão
utilizadas novamente. Feito isto iremos definir lista como sendo os pontos dados.

Clear[lista,func,gr1,gr2]

lista={.30,-.57,-.67,.47,1.23, 1.74, .55, -.462,


-.77, .0, 1.20, 1.45, .983, -.192, -.684, -.3,
.9, 1.47,1.35, .128}

{0.3, -0.57, -0.67, 0.47, 1.23, 1.74, 0.55, -0.462, -


0.77, 0.,
1.2, 1.45, 0.983, -0.192, -0.684, -0.3, 0.9, 1.47,
1.35,
0.128}

Agora faremos o gráfico dos pontos dados utilizando o comando ListPlot,


chamando-o de gr1 para posterior utilização. Caso quiséssemos que os pontos fossem
ligados por retas poderíamos incluir a opção PlotJoined->True. Para saber mais
opções sobre o comando ListPlot digite Options[ListPlot].

gr1=ListPlot[listaok,PlotStyle->PointSize[.01]]

1.5

0.5

5 10 15 20
-0.5

-Graphics-

Olhando para o gráfico podemos perceber que os pontos tem o aspecto de uma
senóide, ou uma senóide e uma cosenóide somadas. Assim sendo tentaremos encontrar
uma combinação linear de senos e cosenos que melhor se ajuste aos pontos dados.
Chamando esta função de func e utilizando o comando Fit encontraremos

func=Fit[lista,{Cos[x],Sin[x],1},x]

127
0.416789 + 0.9349 Cos[x] - 0.718534 Sin[x]

Fazendo o gráfico de func com o comando Plot teremos (Lembre-se que a


inclusão de DisplayFunction->Identity faz com que nada apareça na tela de
seu computador).

gr2=Plot[func,{x,1,20},DisplayFunction->Identity]
-Graphics-

Mostrando gr1 e gr2 teremos:

Show[gr1,gr2,DisplayFunction->$DisplayFunction,]

1.5

0.5

5 10 15 20
-0.5

-Graphics-

5.3 - Matrizes

5.3.1 - Introdução

Uma matriz é uma lista de listas, desta forma para definirmos uma matriz devemos
utilizar
{{a[1,1],a[1,2]...a[1,n]},{a[2,1],..., a[2,n]}, ...,
{a[m,1],a[m,2], ..., a[m,n]}}
onde estaremos definindo uma matriz m x n com os elemento a[1,1],
a[1,2], ... a[m,n]. Desta forma estaremos definindo uma lista que contém todas as
linha da matriz(que também são listas). Para que esta lista seja mostrada em forma
de matriz deveremos incluir o comando //MatrixForm ou então utilizar
MatrixForm[m] para obter a forma matricial de m.

 a[11, ] a[1,2] a[1,3] 


Exemplo: Defina a seguinte matriz a[2,1] a[2,2] a[2,3] .

 a[3,1] a[3,2] a[3,3]

128
Procedendo da maneira descrita acima teremos:

m={{a[1,1], a[1,2],a[1,3]},{a[2,1],a[2,2],a[2,3]},
{a[3,1],a[3,2],a[3,3]}}//MatrixForm

a[1, 1] a[1, 2] a[1, 3]

a[2, 1] a[2, 2] a[2, 3]

a[3, 1] a[3, 2] a[3, 3]

Uma outra forma seria utilizar a função Array que gera uma lista simples ou uma
matriz. Para fazer uma matriz de m linhas por n colunas utilizando Array deveremos
utilizar Array[a, {m, n}] assim podemos digitar:

Array[a,{3,3}]//MatrixForm

a[1, 1] a[1, 2] a[1, 3]

a[2, 1] a[2, 2] a[2, 3]

a[3, 1] a[3, 2] a[3, 3]

Outra forma seria utilizar o comando Table, sendo que os índices variariam de
1 até 3.

Table[a[i,j],{i,1,3},{j,1,3}]//MatrixForm

a[1, 1] a[1, 2] a[1, 3]

a[2, 1] a[2, 2] a[2, 3]

a[3, 1] a[3, 2] a[3, 3]

Também é possível gerar uma matriz na qual os elementos dependam da sua


posição na matriz isto é para uma matriz Aij teremos que a[i,j] = f(i,j). Vejamos o exemplo
abaixo.

Exemplo: Crie uma matriz 2x3 tal que seus elementos sejam dados por a[i,j] = 3
2
ij-j

Para criarmos esta matriz utilizaremos o comando Table, sendo que utilizaremos
como argumento a função de formação dos elementos da matriz. Perceba que i varia de 1
até 2(índice das linhas) e j varia de 1 até 3(índice das colunas). Assim

Table[3 i j - j^2, {i,1,2},{j,1,3}]//MatrixForm

129
2 2 0

5 8 9

 2 2 0
então a matriz procurada é  .
 5 8 9

Exemplo: Encontre a matriz 3x3 tal que seus elementos são definidos por:
0 se i<j;
7 se i>j;
3 j-5i2 caso contrário.

Novamente iremos utilizar o comando Table entretanto teremos que impor


condições para que os elementos da matriz obedeçam a regra de formação especifica para
sua posição.
Para isso teremos que utilizar o comando condicional If[cond, comv,
comf] que testa a condição cond, se ela for verdadeira executa o comando comv caso
contrário executa o comando comf. Assim neste exemplo teremos:

Table[If[i<j,0, If[i>j,7,3 j- 5 i^2]], {i,1,3},


{j,1,3}]//MatrixForm

-2 0 0

7 -14 0

7 7 -36

5.3.2 - Operações básicas

Para realizar as operações de adição, subtração, multiplicação basta definir as


matrizes e realizar as operações como se elas fossem números comuns, devendo-se tomar
cuidado com as regras para estas operações com matrizes.

1 2  0 2  1 2 3
Exemplo: Definindo ma=   ,mb=   e mc=   realize as
7 5  1 3  4 5 6
seguintes .operações: ma + mb, mb- 2 ma, (ma*mb)*mc e (mb*ma)*mc.

Inicialmente iremos definir as matrizes para ficar mais fácil de trabalhar com elas.

ma={{1,2},{7,5}};
mb={{0,2},{1,3}};

130
mc={{1,2,3},{4,5,6}};

Para realizar as operações de soma, subtração e multiplicação por um escalar basta


proceder da mesma maneira como fazemos com os números comuns. Assim teremos:

ma+mb//MatrixForm

1 4

8 8

mb - 2*ma//MatrixForm
-2 -2

-13 -7

onde estamos calculando ma + mb e mb -2ma.

Entretanto é de grande importância notar que a multiplicação de matrizes não é


denotada por um espaço ou por *. A multiplicação de matrizes sempre é realizada
utilizando-se um . (ponto) entre as matrizes assim para realizar ma*mb deveremos digitar
ma.mb.
Vale a pena lembrar que para que duas matrizes (por exemplo mc= ma*mb)
possam ser multiplicadas sendo ma de ordem m x n então mb terá que ser de ordem n x k
ou seja o número de colunas da primeira terá que ser idêntico ao número de linhas da
segunda.
A matriz resultante mc será de ordem m x k. Além disso geralmente ma*mb não
produz o mesmo que mb*ma, desta forma é importante prestar atenção quanto a ordem
dos fatores.
Assim em nosso exemplo teremos:

(ma.mb).mc//MatrixForm

34 44 54

121 155 189

e trocando a ordem dos fatores encontraremos(note a diferença da resposta


anterior!):

(mb.ma).mc//MatrixForm

54 78 102

90 129 168

Outro ponto importante é o fato de que ma/mb não produz o resultado que nós
esperávamos pois caso digitarmos ma/mb estaremos encontrando uma matriz m tal que
nela o elemento m[1,1]=ma[1,1]/mb[1,1], m[1,2]=ma[1,2]/mb[1,2] e assim por diante.

131
Para encontrar ma/mb onde estamos dividindo toda a matriz ma por toda a matriz
mb é necessário que façamos ma.mb-1 onde mb-1 e a inversa de mb. Veremos como
inverter matrizes no próximo exemplo.

 1 2 3  0 2 1
a b 
Exemplo: Seja A=   , B= 4 5 6 e C = 0 2 0 encontre o
 
c d  7 8 9  1 0 0
-1
determinante de A, a transposta de b(B ) e a inversa de C.

Definindo a matriz a como sendo a matriz dada teremos:

matriza={{a,b},{c,d}};
matriza//MatrixForm
Det[matriza]
a b

c d
-(b c) + a d

Onde o comando Det[m] calcula o determinante da matriz m.


Para encontrar a transposta da matriz B basta utilizar o comando
Transpose[m] onde obteremos como resposta a transposta da matriz m. Assim
definindo a matriz B como sendo mb teremos:

mb={{1,2,3},{4,5,6},{7,8,9}};

%//MatrixForm

1 2 3

4 5 6

7 8 9

MatrixForm[Transpose[mb]]

1 4 7

2 5 8

3 6 9

Finalmente para encontrar a inversa da matriz c definiremos esta matriz como


sendo mc e verificaremos se seu determinante é diferente de zero (lembre-se que para
uma matriz ser inversível seu determinante tem que ser diferente de zero).

mc={{0,2,1},{0,2,0},{1,0,0}};

132
Det[mc]

-2

Como o determinante vale -2, poderemos encontrar a inversa da matriz utilizando


o comando Inverse[mc].

Inverse[mc]//MatrixForm

0 0 1

1
0 - 0
2

1 -1 0

 1 0 0
 
Exemplo: Defina a matriz  0 1 0 ou seja uma matriz identidade 4x4.
 
 0 0 1

O comando IdentityMatrix[n] gera uma matriz identidade de ordem n,


desta forma

IdentityMatrix[4]//MatrixForm

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

Também poderíamos ter utilizado o comando DiagonalMatrix[{lista}]


que cria uma matriz onde todos os elementos da diagonal são especificados numa lista e
os elementos que não pertencem a diagonal são tomados como zeros.

DiagonalMatrix[{1,1,1,1}]//MatrixForm

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

133
 1 0 0
 
Por exemplo, para criarmos a matriz ma=  0 2 0 poderíamos digitar
 
 0 0 3

DiagonalMatrix[{1,2,3}]//MatrixForm

1 0 0

0 2 0

0 0 3

Exemplo: Autovalores e Autovetores - Encontre os autovalores e os autovetores


1 0 2 
associados a matriz A = 1 1 3 .
3 0 0

Inicialmente iremos definir a matriz A como sendo ma.

Clear[ma]
ma={{1,0,2},{1,1,3},{3,0,0}};

O comando para encontrar os autovalores é Eigenvalues[matriz]


enquanto que para encontrar os autovetores devemos utilizar
Eingenvector[matriz]. Assim para encontrar os autovalores faremos:

Eigenvalues[ma]//Timing
{0.02 Second, {-2, 1, 3}}

e para encontrar os auto vetores faremos:

Eigenvectors[ma]//Timing
{0.031 Second, {{-6, -7, 9}, {0, 1, 0}, {1, 2, 1}}}

Em ambos os casos o comando Timing foi incluído para que o programa nos
mostrasse quanto tempo foi necessário para executar cada uma das funções. Entretanto
quando estivermos precisando de ambos, isto é, tanto dos autovalores quanto dos
autovetores, é melhor utilizar a função Eigensystem[matriz] que retorna os
autovalores seguidos dos autovetores da matriz dada mas que gasta um tempo
relativamente menor do que se utilizássemos Eigenvalues[matriz] e
Eingenvector[matriz].

Eigensystem[ma]//Timing

{0.03 Second, {{-2, 1, 3}, {{-6, -7, 9}, {0, 1, 0}, {1,
2, 1}}}}

134
No exemplo seguinte mostraremos como elevar uma matriz a uma potência, isto
é, como calcular mn onde n é um número inteiro qualquer.

 1 3 0
 a b  
Exemplo: Encontre (ma) e (mb) onde ma= 
2 3
 e mb=  1 2 1 .
 c d  
 3 0 1

Apagando a definição de ma e definindo a nova matriz teremos:

Clear[ma]
ma={{a,b},{c,d}};
ma^2//MatrixForm

2 2
a b

2 2
c d

Note que o resultado obtido não é o desejado pois estamos interessados em fazer
ma.ma(ma2) e não em elevar cada elemento de ma ao quadrado. Isto acontece por causa
de uma matriz ser definida como uma lista de listas e logo Mathematica interpreta o
comando ma^2 como se estivéssemos elevando cada elemento da lista ao quadrado. Para
encontrarmos mn devemos utilizar o comando MatrixPower[m,n] que devolve
como resposta uma matriz que equivale a m.m
...
m . Assim
nvezes

MatrixPower[ma,2]//MatrixForm

2
a + b c a b + b d

2
a c + c d b c + d

nos calcula corretamente ma.ma como desejávamos. Utilizando este mesmo


comando para calcular mb.mb.mb teremos

Clear[mb]
mb={{1,3,0},{1,2,1},{3,0,1}};
MatrixPower[ma,3]//MatrixForm

22 30 12

22 32 10

135
18 36 10

5.3.3 - Resolução de sistemas lineares

Nesta seção mostraremos mais alguns métodos de resolver um sistema linear alem
dos apresentados no capítulo 2. Aqui estaremos interessados em resolver o sistema linear
que pode ser definido como A.x = b onde A é a matriz dos coeficientes, x representa o
vetor das incógnitas e b é um outro vetor. Sendo assim a solução deste sistema será x =
A-1.b onde A-1 é a inversa da matriz A. Vejamos o exemplo seguinte.

Exemplo: Encontre a solução do sistema linear


3x1  4 x 2  3x 3  1

3x1  7 x 2  x 3  3
1x  3x  2
 1 3

Para este sistema poderíamos escrever as matrizes A e b como sendo A=


 3 4 3  1
    -1
 3 7 1 e b=  3 assim definindo estas matrizes e calculando A .b encontraremos a
   
 1 0 3  2
solução.

Clear[ma,x,mb]
ma={{3,4,3},{3,7,1},{1,0,3}};
mb={1,3,2};
{x1,x2,x3}=Inverse[ma].mb

49 11 23
{-(--), --, --}
10 5 10

Para verificar a solução encontrada podemos fazer ma.x ou seja

ma.{x1,x2,x3}

{1, 3, 2}

que coincide com o vetor b o que significa que nossa resposta está correta.

Vale a pena lembrar que o cálculo de matrizes inversas requer em geral um grande
número de operações, por isso este método de solução de sistemas lineares não é o mais
recomendado. Em geral é melhor utilizar o comando Solve.

Exemplo: Encontre a solução do sistema linear

136
x  2 y  z  1

2 x  3y  5
3y  2 z  0

Inicialmente iremos definir alista que conterá as equações e a que irá conter as
variáveis.

Clear[eqs,vars,sols,x,y,z]
eqs={x - 2y + z==1, 2 x - 3 y ==5,3 y - 2 z ==0};
vars={x,y,z};

Assim chamando a soluções de sols teremos

sols=Solve[eqs,vars]

1 9 3
{{x -> -, z -> -(-), y -> -(-)}}
4 4 2

Para testarmos a solução colocaremos em eqs os valores de sols.

eqs /. sols

{{True, True, True}}

como a resposta foi {{True, True, True}} nossa resposta está correta.

Uma outra forma de encontrar a solução para um sistema linear é utilizando o


comando RowReduce[mamp] que faz com que a matriz ampliada que representa o
sistema linear seja escalonada, solucionando o sistema linear.

137
Exemplo: Resolva o seguinte sistema linear
x  2 y  4 z  7

2 x  3y  5z  0
2 x  5y  9 z  3

 1 2 4 7
 
Para este sistema linear a matriz ampliada é dada por amp=  2 3 5 0 assim
 
 2 5 9 3
definindo esta matriz teremos:

amp={{1,2,4,7},{-2,3,5,0},{2,5,9,3}};
%//MatrixForm

1 2 4 7

-2 3 5 0

2 5 9 3

Utilizando RowReduce para encontrar a solução faremos:

RowReduce[amp]//MatrixForm
4
-(-)
1 0 0 3

157
-(---)
0 1 0 6

91
--
0 0 1 6

4 157 91
Ou seja a solução para o sistema linear proposto é x  ,y  ,z  para
3 6 6
verificar estas soluções podemos fazer:

Clear[x,y,z,eq1,eq2,eq3];
eq1=x + 2 y + 4 z == 7;
eq2=-2 x + 3 y + 5 z ==0;
eq3=2 x + 5 y + 9 z ==3;

138
onde estamos definindo as equações que formam o sistema linear. Definindo os
valores de x, y e z como sendo os valores acima teremos:

x = -4/3 ; y = -157/6 ; z = 91/6;

Digitando a lista que forma as inequações teremos

{eq1,eq2,eq3}

{True, True, True}

ou seja, os valores estão corretos.

5.3.4 - Máximos e mínimos utilizando programação linear

Um outro caso importante para utilizarmos listas é quando estamos interessados


em saber quais os valores que maximizam (ou minimizam) uma função que está sujeita a
algumas condições. No capítulo anterior nos calculávamos derivadas, solucionávamos
algumas equações, etc para fazer isto.
Neste capítulo utilizaremos o comando ConstrainedMax que encontra os
valores para os quais uma função atinge seu máximo. O comando ConstrainedMax
tem a seguinte sintaxe:

ConstrainedMax[func,condições,var]

onde func especifica a função para a qual estamos querendo encontrar o valor
máximo, condições é uma lista que contém as equações e/ou inequações que a solução
tem que satisfazer. Var é uma lista que contém as variáveis da função func. Como resposta
encontraremos os valores de var para os quais func é máxima sujeita as condições dadas.
É bom salientar que estes valores são sempre tomados como valores positivos.
Para encontrarmos os valores para os quais a função e mínima basta utilizar
ConstrainedMin que tem a mesma sintaxe de ConstrainedMax.Vejamos o
seguinte exemplo:

Exemplo: Encontre o valores de x, y e z para os quais a função x + 3 z - 2 y atinge


o valor máximo quando submetida as condições x+ 2 z -7 y <=-5, z - y - 2 x<=2 e 3 x +
2 y<=11.

Utilizando a função ConstrainedMax encontraremos

Clear[z,x,y]
ConstrainedMax[x + 3 z - 2 y, {x+ 2 z -7 y <=-5,z - y
- 2 x<=2,
3 x + 2 y<=11},{x,y,z}]

491 37 82 206

139
{---, {x -> --, y -> --, z -> ---}}
25 25 25 25

37 82 206
Ou seja para x  ,y  ,z  a função atinge seu valor máximo que é
25 25 25
491
para as condições impostas.
25

Exemplo: Encontre os valores de máximo e mínimo para a função w(x,y,z) = x2


- 3 x y + 2 z sujeita as condições x - y <=3, 2 y - z > 3 e x - z =2.

Definindo a funções w e a lista cond que irá conter as condições teremos:

w[x_,y_,z_]:= 3 x - 3 y + 2 z;
cond={x - y<=3, 2 y - z < 3, x - z==2};

Utilizando ConstrainedMax encontraremos os valores para os quais a função


w é máxima.

ConstrainedMax[w[x,y,z],cond,{x,y,z}]

{19, {x -> 7, y -> 4, z -> 5}}


Ou seja quando x=7, y=4 e z=5 a função w atinge seu valor máximo(sujeita as
condições acima é claro). Note que este valor é fornecido por ConstrainedMax e é
19. Para encontrar o mínimo da função w utilizaremos ConstrainedMin.

ConstrainedMin[w[x,y,z],cond,{x,y,z}]
3 3
{-, {x -> 2, y -> -, z -> 0}}
2 2

Assim para x=2, y=3/2 e z=0 w atinge o valor mínimo que é 3/2.

5.4 - Cálculo Vetorial

5.4.1 - Introdução

Nesta seção daremos algumas noções de como trabalhar com cálculo vetorial
utilizando o Mathematica. Mostraremos como calcular divergentes, gradientes,
rotacional, funções estas disponíveis no pacote Calculus`VectorAnalysis`.
Introduziremos o conceito de campo vetorial conservativo.

140
Mostraremos também como construir gráficos de funções vetoriais e de gradientes
de uma função escalar tanto no plano como no espaço.

5.4.2 - Sistemas de coordenadas, gradiente, divergente, rotacional e laplaciano

O Mathematica trabalha com vários sistemas de coordenadas, dentre os quais os


principais utilizados que são os sistemas de coordenadas cartesianas, cilíndricas e
esféricas. Para saber qual é o sistema de coordenadas que você esta utilizando basta digitar
CoordinateSystem.
Para mudar de sistema de coordenada basta digitar
SetCoordinates[sistema]
por exemplo para utilizar o sistema de coordenadas esféricas devemos fazer :

Needs["Calculus`VectorAnalysis`"]

Inicialmente que carregamos o pacote Calculus`VectorAnalysis` com


Needs[“Calculus`VectorAnalysis`”] que é necessário para que o
Mathematica manipule estes assuntos.
Normalmente para carregar um pacote pode-se digitar os seguintes comandos:
<<Diretorio`Arquivo`
ou então
Needs[“Diretorio`Arquivo`”]
É melhor utilizar o comando Needs pois este evita que carreguemos um mesmo
pacote pela segunda vez já que isto pode trazer problemas.
Em nosso exemplo acima o diretório era Calculus e o arquivo chama-se
VectorAnalysis.m, note que o diretório Calculus esta dentro do diretório Packages
entretanto não a necessidade de especificá-lo pois o programa automaticamente procura
os diretórios dentro deste diretório. Perceba que o primeiro ` vai separando o diretório do
arquivo e que o segundo ` vai no lugar do .m.
Tome cuidado para não utilizar um comando que esta definido em um pacote antes
de carregar este pacote. Caso isto ocorra quando você carregar o pacote o comando não
irá funcionar adequadamente e você precisará executar o seguinte comando:

Remove[comando_dado_ antes_de_carregar]

para então poder utilizar o comando corretamente.

Finalmente para escolher um novo sistema de coordenadas devemos fazer


SetCoordinates[sisnome] que faz com que seja utilizado o sistema sisnome.
Assim

SetCoordinates[Spherical]
Spherical[r, theta, phi]

141
define o sistema esférico como sendo de uso atual. Para saber qual é o intervalo
nos quais as variáveis estão definidas basta fazer

CoordinateRanges[]
{0 <= r < Infinity, 0 <= theta <= Pi, -Pi < phi <= Pi}
que dá como resposta os intervalos para o sistema de coordenadas atual.

Passemos agora a estudar um pouco mais sobre gradiente divergente rotacional e


laplaciano. Todas as fórmulas serão dadas no sistema de coordenadas cartesianas, e
omitiremos as fórmulas para os outros sistemas de coordenadas.
O gradiente de uma função escalar é definido, no sistema cartesiano de
coordenadas, como
f ( x, y, z) f ( x, y, z) f ( x, y, z)
f = grad f(x,y,z) = ( , , )
x y z
e o vetor gradiente tem a propriedade de sempre apontar na direção de maior
crescimento da função. Para encontrar o vetor gradiente basta utilizar o comando
Grad[f[vars]].
O Divergente de uma função vetorial é definido como sendo
f ( x, y, z) f ( x, y, z) f ( x, y, z)
  f = div f(x,y,z) =  
x y z
para encontrar o divergente devemos utilizar o comando Div[f[vars]].
O rotacional de uma função vetorial é definido mnemonicamente como sendo o
a x a y a z 
  
determinante da matriz   onde os “produtos” são tomados como derivadas
 x  y  z 
 f x f y f z 
parciais. Para encontrar o rotacional de uma função podemos utilizar a função
Curl[f[vars]]. Uma das principais utilizações do rotacional é para determinar se
um campo é conservativo ou não. Ele também será útil no cálculo de integrais de linha
pelo teorema de Stokes como veremos mais para frente.
Para encontrar o laplaciano de uma função f (também chamado de  2 f ) devemos
utilizar a função Laplacian[f[vars]].
Vejamos o exemplo abaixo:

Exemplo: Dadas as funções f(x,y,z) = (x2 - 2 z x y)ax + (2 y - 3 x)ay + (4 x z y)az


e g(x,y)= x 2  3x  3x  2 y . Encontre: g ,   f , Rot f e 2 g .

Começaremos da maneira errada, ou seja tentaremos utilizar a função Grad[g]


sem ter carregado previamente o pacote Calculus`VectorAnalysis`. Assim
definiremos a função g e tentaremos utilizar a função Grad.

g[x_,y_]:=x^2 - 3 x + Sqrt[3 x - 2 y]

Grad[g[x,y]]

142
2
Grad[-3 x + x + Sqrt[3 x - 2 y]]

Note que a resposta é a própria entrada pois não existe uma função Grad definida
fora de Calculus`VectorAnalysis` e então e como se estivéssemos criando um
objeto chamado Grad, como se fosse uma definição de uma função. Para encontrarmos
o gradiente da função g deveremos carregar o pacote Calculus`VectorAnalysis`
utilizando Needs teremos:

Needs["Calculus`VectorAnalysis`"]

Grad::shdw: Warning: Symbol Grad appears in multiple


contexts
{Calculus`VectorAnalysis`, Global`}; definitions
in context
Calculus`VectorAnalysis`
may shadow or be shadowed by other definitions.
x::shdw: Warning: Symbol x appears in multiple contexts
{Calculus`VectorAnalysis`, Global`}; definitions
in context
Calculus`VectorAnalysis`
may shadow or be shadowed by other definitions.
y::shdw: Warning: Symbol y appears in multiple contexts
{Calculus`VectorAnalysis`, Global`}; definitions
in context
Calculus`VectorAnalysis`
may shadow or be shadowed by other definitions.

Você pode perceber que o programa retorna várias mensagens, alertando-nos


sobre a existência da definição de Grad em outros contextos. Vamos tentar novamente
utilizar a função Grad. Além disso iremos definir o sistema de coordenadas como o
sistema de coordenadas cartesiano.

SetCoordinates[Cartesian]
Grad[g[x,y]]

Cartesian[x, y, z]

2
Grad[-3 x + x + Sqrt[3 x - 2 y]]

Novamente não obtivemos a resposta esperada. O que está acontecendo é que


quando damos o comando Grad o programa começa a procurar a definição de Grad para
então executa-la, só que ele começa a procura-la primeiro no contexto `Global e depois
passa aos outros contextos se não a encontra-la e se algum outro contexto estiver
carregado. Como ele acha aquela antiga definição de Grad ( a de antes de utilizarmos o
comando Needs) ele não encontra a correta definição de Grad que está em
Calculus`VectorAnalysis`. Assim para que ele encontre a correta definição da
função devemos utilizar a função Remove[simb1,simb2,...] que remove os

143
símbolos sim1, simb2 completamente. Como Grad no contexto
Calculus`VectorAnalysis` está protegida ela não é apagada.

Remove[Grad,x,y]
Finalmente:

Grad[g[x,y]]
3 1
{-3 + 2 x + -----------------, -(---------------), 0}
2 Sqrt[3 x - 2 y] Sqrt[3 x - 2 y]

Encontra o gradiente da função g(x,y) no sistema de coordenadas cartesianas.


Para encontrar o divergente de f basta utilizar Div[f[x,y,z]], após definir a função
f(x,y,z). Note que f(x,y,z) é na verdade um vetor. Assim

f[x_,y_,z_]:={x^2 -2 z x y, 2 y - 3 x, 4 x z y};
Div[f[x,y,z]]

2 + 2 x + 4 x y - 2 y z

ou seja o   f = 2 + 2 x + 4 x y - 2 y z. Para encontrar o rotacional de f(x,y,z)


utilizaremos a função Curl. Perceba que a resposta também é um vetor.

Curl[f[x,y,z]]

{4 x z, -2 x y - 4 y z, -3 + 2 x z}

Finalmente para encontrar 2 g utilizaremos o Laplacian.

Laplacian[g[x,y]]
13
2 - ----------------
3/2
4 (3 x - 2 y)

No exemplo seguinte utilizaremos outros sistemas de coordenadas

Exemplo: Seja f(r,theta,phi) = r theta phi e g(r,theta,phi)= (r Sen(phi))ar + 3 r aphi


definidas no sistema de coordenadas esféricas. Encontre: f ,   g , Rot g e  2 f .

Inicialmente iremos carregar o pacote Calculus`VectorAnalysis`

Needs["Calculus`VectorAnalysis`"]

Agora iremos escolher o sistema esférico como default utilizando


SetCoordinates[sist.coordenadas].Assim

144
SetCoordinates[Spherical]
Spherical[r, theta, phi]

Apagando as definições anteriores de 𝑓 𝑒 𝑔 e definindo corretamente as funções


teremos:

Clear[f,g]
f[r_,theta_,phi_]:=r theta phi
g[r_,theta_,phi_]:={r Sin[phi], 0, 3 r}

Finalmente procedendo como no exemplo anterior teremos identicamente:

Grad[f[r,theta,phi]]
{phi theta, phi, theta Csc[theta]}

Div[g[r,theta,phi]]

3 Sin[phi]

Curl[g[r,theta,phi]]

Csc[theta] (r Cos[phi] - 6 r Sin[theta])


{3 Cot[theta], ---------------------------------------
-, 0}
r

Laplacian[f[r,theta,phi]]//Simplify//Together
2 phi theta + phi Cot[theta]
----------------------------
r

Um detalhe muito importante é quanto a notação, pois muitos livros adotam uma
notação diferente para o sistema de coordenadas esféricas, isto é, colocam o valor de phi
no lugar de theta e vice-versa. Desta forma tome cuidado para não cometer enganos. No
Mathematica as variáveis no sistema de coordenadas esféricas são r, theta e phi. sendo
que para descobrir o intervalo para os quais estas variáveis estão definidas basta digitar

CoordinateRanges[]

{0 <= r < Infinity, 0 <= theta <= Pi, -Pi < phi <= Pi}

ou CoordinateRanges[sist.coor] para saber para um outro sistema de


coordenadas que não o que você estiver utilizando no momento, já que quando você digita
[] você esta pegando como sistema de coordenadas o que você esta utilizando naquele
momento.

145
146
Exemplo: Teorema de Stokes no plano(teo. de Green) - Calcule  F( r )  dr no
sentido anti-horário ao longo de um caminho C numa região R , onde F = (x2 + y2) ax +
(x2 - y2) ay e R : 1  x 3 e 0  y  1/x.

De acordo com o teorema de Green a  F( r )  dr =  Rot ( F)  ndS onde n é o vetor


S
normal a superfície. Assim carregando o pacote Calculus`VectorAnalysis` e
utilizando o sistema de coordenadas cartesianas faremos:

Needs["Calculus`VectorAnalysis`"]
SetCoordinates[Cartesian]
Cartesian[x, y, z]

Definindo a função f e calculando o seu rotacional teremos:

Clear[f]
f[x_,y_,z]:={x^2 + y^2, x^2 - y^2, 0}
Curl[f[x,y,z]]//Simplify
{0, 0, 2 (x - y)}

Note que o rotacional só possui componente na direção do vetor normal a


superfície delimitada por R. Finalmente integrando 2(x - y) ao longo da superfície
delimitada por R encontraremos:

Integrate[2 (x - y), {x,1,3},{y,0,1/x}]

10
--
3

10
Portando  F( r )  dr = 3
.

Exemplo: Teorema de Gauss - Calcule  F  ndA onde F = (x2 + y2 )ax + (


S

x 2  y 2 )ay + (x y z)az e S é a superfície do cubo 0  x 1, 0  y  1 e 0  z  1.

De acordo como o teorema da divergência ou de Gauss a  F  ndA =


S

 DivFdxdydz logo para encontrarmos a integral pedida podemos fazer:


V

Needs["Calculus`VectorAnalysis`"]

147
SetCoordinates[Cartesian]

Cartesian[x, y, z]

para carregar o pacote e definir o sistema de coordenadas que será utilizado.


Novamente definindo a função F e desta vez calculando o divergente de F teremos:

Clear[F]
F[x_,y_,z]:={x^2 + y^2, Sqrt[x^2+2 y],x y z}
divergente=Div[F[x,y,z]]//Simplify

1
2 x + x y + --------------
2
Sqrt[x + 2 y]

Integrando o resultado no cubo definido teremos a resposta final:

Integrate[divergente, {x,0,1},{y,0,1},{z,0,1}]

3 Sqrt[3] 1
- + ------- + ArcSinh[-------]
4 2 Sqrt[2]

5.4.3- Gráficos de funções vetoriais no plano

Para fazermos o gráfico de uma função vetorial tal como F(x, y) = A(x,y) ax +
B(x,y) ay devemos utilizar a função PlotVectorField. Está função está definida
dentro do pacote Graphics`PlotField`. Assim antes de utilizá-la deveremos
carregar o pacote. Esta função tem a seguinte sintaxe:

PlotVectorField[{A(x,y),B(x,y)},{x,xmín,xmáx},{y,
ymín,ymáx},opções]

onde A(x,y) e B(x,y) definem as funções que o campo satisfaz nas direções ax e
ay respectivamente. As opções são muito parecidas com as opções da função Plot
descrita no capítulo 3(tais como Axes, AxesOrigin, Frame, etc). Uma outra função
também importante é a função PlotGradientField, que dada uma função escalar
f(x,y) faz o gráfico do vetor gradiente em cada ponto para está função ou seja a partir de
f(x,y) ela calcula o f e faz o seu gráfico no plano xy. O comando tem a seguinte sintaxe:

PlotGradientField[f(x,y),{x,xmín,xmáx},{y,
ymín,ymáx},opções]

É bom salientar que ambos os comandos também podem ser utilizados em outros
sistemas de coordenadas tais como coordenadas cilíndricas ou esféricas por exemplo.
Vejamos o exemplo abaixo:

148
Exemplo: Faça o gráfico do campo vetorial definido por F(x,y) = xax + yay e
y x
G(x,y) = 2 ax + 2 ay .
x  y 1
2
x  y2  1
Faça também o gráfico do vetor gradiente da função f(x,y) = x y - 2.

Inicialmente iremos carregar o pacote Graphics`PlotField` que é onde


se encontram as funções que iremos utilizar:

Needs["Graphics`PlotField`"]

Agora utilizando a função PlotVectorField e sendo o intervalo um quadrado 3 x 3


com centro na origem teremos:

PlotVectorField[{x,y},{x,-3,3},{y,-3,3}]

-Graphics-

Para fazer o gráfico de G(x,y) iremos inicialmente definir a função G(x,y):

g[x_,y_]:={-y/(x^2 +1+ y^2),x/(x^2 +1+ y^2)}

Novamente utilizando a função PlotVectorField no mesmo intervalo


anterior teremos:
PlotVectorField[g[x,y],{x,-3,3},{y,-3,3},Axes->True]

149
3

-3 -2 -1 1 2 3

-1

-2

-3
-Graphics-
Perceba que a inclusão de Ases->True faz com sejam mostrados os eixos.
Finalmente fazendo o gráfico do vetor gradiente da função f(x,y) teremos:
PlotGradientField[x y - 2,{x,-3,3},{y,-3,3},Axes-
>True]

-3 -2 -1 1 2 3

-1

-2

-3

-Graphics-

Se ao invés disso tivéssemos calculado o gradiente de f(x,y) e utilizássemos


PlotVectorField obteríamos o mesmo resultado porém teríamos muito mais trabalho já
que a função Grad está definida em outro pacote e teríamos que carregar este pacote
também.

150
5.4.4 - Gráficos de funções vetoriais no espaço

Da mesma forma que pudemos fazer o gráfico de funções vetoriais em 2


dimensões também podemos fazer os gráficos de funções em 3 dimensões. Para isso
basta utilizar as funções PlotVectorField3D e PlotGradientField3D que são
muito semelhantes as funções em duas dimensões. Entretanto é bom frisar que estas
funções se encontram no pacote Graphics`PlotField3D`.

Exemplo: Faça o gráfico da função vetorial F(x,y,z) = yxax + xaz e do gradiente


da função escalar g(x,y,z) = xy + 2xz.

Carregando o pacote e fazendo o gráfico teremos:

Needs["Graphics`PlotField3D`"]
PlotVectorField3D[{0,y x,x},{x,-1,2},{y,-1,2},
{z,-1,1},VectorHeads->True]

-Graphics3D-

A inclusão de VectorHeads->True faz com que os vetores sejam mostrados


com suas respectivas orientações. Finalmente fazendo o gráfico do vetor gradiente
teremos:

PlotGradientField3D[x z + x y + z x,{x,-2,2},{y,-
2,2},{z,-2,2}]

151
-Graphics3D-

5.5 - Exercícios

5.01 - Defina uma lista contendo os números:


0.497 0.814 0.49 0.5 0.511 0.347 0.201 0.918 0.602 0.581
Encontre: a) o 1° e o último elemento, b) A quantidade de números presente na
lista, c) Coloque a lista em ordem crescente de valor, d) A localização do elemento 0.602
nesta nova lista.

5.02 - Faça uma tabela com os valores de sen x para x no intervalo 0 - 2Pi com x
variando de 0.25 em 0.25. Idem para cos(2 x2).

5.03 - Faça o gráfico de


a) 0.446 0.656 0.297 0.123 0.837 0.0982 0.477 0.539 0.711 0.628
b) (0, 1.), (0.5, 0.18), (1., -0.234), (1.5, -0.318), (2., -0.104)
(2.5, 0.385), (3., 1.14), (3.5, 2.14), (4., 3.38)

5.06 - Faça o gráfico e ache uma curva que se ajuste aos seguintes dados:
a) {0, 1.76, 3.74, 5.76, 6.87, 7.05, 7.86, 6.45, 4.39, 1.96, -2.37}
b) (0, -0.14), (0.5, -0.11), (1., 0.15), (1.5, 0.195), (2., 0.238), (2.5, 0.222),
(3., 0.15), (3.5, 0.14), (4., -0.34), (4.5, -0.24), (5., -0.231)

Solução: a) -2.23439 + 2.06405 x + 0.0597902 x2 - 0.0225971 x3


b) -0.0329321 - 0.0133813 cos x + 0.25007 sen x.

152
1 2  1 9  3 2 1
5.05 - Definindo as matrizes A =  , B= 7 6  e C = 6 7 5 encontre
9 7     
:
a) A + 2 B b) A*B c) B*A
d) A*C e) Determinante de 2 A f) Inversa de A*B
g) Transposta de A - 3 A*B

5.06 - Encontre as seguinte matrizes 3 x 3.

a) A[i,j] tal que A[i,j] = i - 3 j i2 - 3 j3


b) B[i,j] tal que B[i,j] = -i se i  j e B[i,j] = j - i caso contrário.

 5 29 89   1 1 2 
Solução: a)  13 46 115 b) 2 2 1 
27 75 159   3 3 3

5.07 - Encontre os autovalores e os autovetores das seguintes matrizes:

11 24 25
15 23
a)   b)  5 8 42
21 11  2 1 0 

5.08 - Resolva os seguintes sistemas lineares:


2 x  3y  4 z  w  0
x  3y  2 z  3 3y  4 z  3w  3
 
a) 3x  2 y  6z  2 b) 
2 y  4 z  6 x  y  2 z  3w  1
 3x  z  3w  9

Solução: a) x = 4, y = -1, z = -2 b) x = 2.25, y = -0.125, z = -1.12, w = 0.375.

5.09 - Ache o gradiente e o laplaciano de


a) x y - x
b) x2 - 2 y + 3 z y
c) 2 theta - 4 r phi

Solução: a) gradiente = ( -1 + y2, 2 x y , 0 ), laplaciano = 2 x .


b) gradiente = ( 2 x, -2 + 3 z, 3 y), laplaciano = 2.
c) gradiente = ( - 4 phi, 2/r , - 4 Csc(theta)), laplaciano =
8phi 2Cot ( theta )

r r2
5.10 - Ache o rotacional e o divergente de
a) x y ax + 2 x y z2 az
b) theta ar + 2 phi theta atheta

Solução: a) rotacional = (2 x z2, - 2 y z2, -x) , divergente = y + 4 x y z

153
2 thetaCsc( theta ) 2 phi * theta  1
b) rotacional = ( ,0, ),
r r
2( phi  theta  phi * thetaCot ( theta ))
divergente =
r

5.11 - Faça os seguintes gráficos:


yx x
a) Campo vetorial definido por ax  ay
x  y 1
2 2
x  y2  1
2

b) O gradiente de f(x) = 2 x y2 + x.
c) Campo vetorial x y ax - 2 y z ay.

154

Potrebbero piacerti anche