- TUTORIAL -
MAXIMA 5.9.2 Para Windows
Por Bruno F. Milaré de Macêdo RA 042290 – MA111 – Turma A
1
- INTRODUÇÃO Este tutorial tem como objetivo fornecer informações para que iniciantes possam aprender a manipular o software MAXIMA, desde a instalação e a primeira impressão até manipulação de funções, assim aqui só serão vistos conteúdos que apareceram no curso de Cálculo I, porém não se intimidem com o software, pois ele tem grandes recursos, sendo capaz de realizar a maior parte dos cálculos matemáticos. Como no curso, aqui serão abordadas manipulações do MAXIMA em relação a Limites, Derivadas e Integrais, assim como suas propriedades e representações gráficas em duas e três dimensões.
2
- ÍNDICE
♦ O MAXIMA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 04 ♦ Dowload e instalação. . . . . . . . . . . . . . . . . . . . . . . . 05 ♦ Iniciando o uso do MAXIMA . . . . . . . . . . . . . . . . . 07 ♦ Funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 ♦ Limites. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 ♦ Derivadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 ♦ Integrais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 ♦ Gráficos em duas dimensões. . . . . . . . . . . . . . . . . . 22 ♦ Gráficos em três dimensões. . . . . . . . . . . . . . . . . . . 25
3
- O MAXIMA O MAXIMA é um sistema para a manipulação de expressões simbólicas e numéricas, incluindo diferenciação, integração, equações diferenciais ordinárias, sistemas de equações lineares, vetores, matrizes, entre outros. O MAXIMA produz resultados de precisão elevada, e pode traçar funções e dados em duas e três dimensões. O código de fonte do MAXIMA pode ser compilado em muitos sistemas, incluindo Windows (no caso desse tutorial), Linux, e MacOS X. O MAXIMA é um descendente de Macsyma, o sistema legendário de álgebra do computador desenvolvido nos anos de 1960 no Instituto de Tecnologia de Massachusetts. É o único sistema baseado em Macsyma ainda publicamente disponível e com uma comunidade de usuários ativa. A filial do MAXIMA de Macsyma foi mantida por William Schelter. Em 1998 obteve a permissão liberar o código fonte sob a GNU General Public License (GPL). Eram seus esforços e habilidade que fizeram a sobrevivência do MAXIMA possível. Desde então um grupo dos usuários e de colaboradores deu forma para trazer o MAXIMA a uma maior audiência. Assim sendo o MAXIMA é considerado um software livre, podendo então ser usado sem necessidade de registro e pagamento, isto é, um software gratuito. Um dos poucos nessa área.
4
- DOWLOAD E INSTALAÇÃO A versão do MAXIMA utilizada neste tutorial é a versão 5.9.2 para Windows e seu download pode ser feito através do seguinte link: http://ufpr.dl.sourceforge.net/sourceforge/maxima/maxima-5.9.2.exe
- Tamanho do arquivo: 12.2 MB - Espaço necessário em disco: 60.7 MB Caso se interesse mais pelo software ou deseja ele para outras plataformas, como Linux, acesse o site oficial do MAXIMA: Site Oficial: http://maxima.sourceforge.net Instalando. Após o download ter sido concluído dê um duplo clique no arquivo baixado (maxima-5.9.2), e você vai se deparar com uma tela desse tipo:
5
Prossiga atendendo as recomendações do programa, clicando em Next, não se esqueça de verificar o local de instalação, mude se não for de seu agrado. Ao finalizar a instalação a seguinte mensagem surgirá determinando que a instalação foi concluída com êxito:
Clicando em Finish um arquivo readme.txt será aberto contendo informações sobre o MAXIMA,e o próprio também será aberto. Após o término da instalação você poderá acessar o MAXIMA a qualquer hora a partir do menu Iniciar.
6
- INICIANDO O USO DO MAXIMA Primeira impressão:
7
Logo que iniciado o MAXIMA possui na parte inferior um sistema de ajuda, que poderá ser bem útil, mas não vamos entrar em detalhes nesse tutorial, por isso vamos escondê-lo, clicando em Options > Toggle Browser Visibility. Ficando assim apenas com o terminal, onde serão digitadas as operações.
No terminal, a parte superior acima do ‘(%i1)’ pode ser desconsiderada, pois se tratam de informações sobre o programa. O ‘(%i1)’ representa a posição na memória de cada operação a ser realizada, para recomeçar a memória basta acessar File > Restart.
Iniciando o trabalho com operações. Você sempre digitará a operação a frente do ‘(%ix)’, esse ‘i’ no meio significa INPUT, portanto sempre será entrada de informações. Logicamente a saída do programa será representada por ‘(%ox)’, com ‘o’ sendo OUTPUT. Depois de digitada a operação, para indicar ao 8
programa que a expressão já pode ser resolvida é necessário digitar um ‘; ’(ponto e vírgula) no fim da expressão, por exemplo: (%i1) 1 + 2; (INPUT – representada em azul no MAXIMA). (%o1) 3 (OUTPUT – representada em preto no MAXIMA).
As operações básicas são facilmente representadas por: Adição (+), Subtração (-), Multiplicação (*), Divisão (/), Exponenciação(^). Os espaços não são necessários, apenas auxiliam na leitura. As funções vistas neste tutorial deverão ser escritas em letras minúsculas assim como seus parâmetros, por exemplo: (%i1) cos (%pi); (%o1) –1
Obs. : como é possível observar o número ‘pi’ deve ser escrito desta forma ‘%pi’, como acontece com a maioria das constantes, por exemplo: O número e = exp(1) = %e A constante imaginária i = sqrt(-1) = %i (%i1) (%o1) (%i2) (%o2) (%i3) (%o3)
cos(%pi); - 1 sqrt(-1); %i exp(1); %e
Para obter mais informações sobre determinados comandos, basta você digitar: (%i1) describe (assunto a ser pesquisado);
E seguir as instruções do programa, o resultado será um breve texto sobre o termo procurado, com exibição de funções relacionadas. 9
Outros comandos úteis: abs(x) – retorna o valor absoluto de x. log(x) – logaritmo natural de x. sqrt(x) – raiz quadrado de x. Como naturalmente usado a ordem de preferência das operações deve ser demonstrada através de parênteses ‘( )’. (%i1) (20+10) * 3; (%o1) 90
Um comando bastante usado é o ‘%’, que sozinho, representa o último resultado apresentado. (%i1) (%o1) (%i2) (%o2)
4 * 5; 20 % - 5; 15
O MAXIMA tenta tornar os resultados mais exatos possíveis, porém em alguns casos isso não é possível, pois o resultado é um tipo flutuante, como por exemplo: (%i1) log(10); (%o1) log(10)
Porém se mesmo assim você deseja saber esse valor, basta você forçar o MAXIMA a retornar um ponto flutuante, assim: (%i1) float (log (10)); (%o1) 2.302585092994046
Para atribuir valores a variáveis, basta apenas declarar da seguinte forma: (%i1) x : 2; (%o1) 2;
10
(%i2) (%o2) (%i3) (%o3)
y : 10; 10; x ^ y; 1024;
Para resolver alguma equação, basta utilizar a função ‘solve’, da seguinte maneira: (%i1) solve (3*x^2–6*x-9=0); (%o1) [x = 3, x = - 1]
Esta função é bastante útil e pode ser usada de várias maneiras, como, por exemplo, resolver uma equação de duas incógnitas e deixar em função de uma delas, caso só exista uma equação. (%i1) solve(x+y-2=0, y); (%o1) [y = 2 - x]
Caso contrário se o número de equações for igual ao número de incógnitas, a função ‘solve’ pode dar conta do trabalho também, como por exemplo: (%i2) solve([x+y+4*z=0, y-z+2*x=8, z+3*x-2*y=4]); 18 26 46 (%o2) [[z = - --, y = --, x = --]] 17 17 17
Acima foram descritos os principais comandos para a manipulação dados no MAXIMA, assim sendo a partir daqui abordaremos assuntos mais específicos.
11
- FUNÇÕES É muito simples definir funções no MAXIMA, é muito parecido com o modo normal de se escrever, mudando somente o símbolo de atribuição que no caso é ‘:=’, como pode se observar o exemplo : (%i1) f(x):=x+2; (%o1) f(x) := x + 2 (%i2) f(5); (%o2) 7
Pode-se definir também funções de n variáveis, respeitando a mesma sintaxe da anterior, somente colocando as variáveis entre vírgulas, do seguinte modo: (%i1) g(x,y,z) := x * y + 2 * z; (%o1) g(x, y, z) := x y + 2 z (%i2) g(1,2,3); (%o2) 8
12
- LIMITES Limites são facilmente interpretados pelo MAXIMA, e possui uma sintaxe bastante simples, observe o exemplo: limit(função, variável, valor que tende a variável);
Aplicação: (%i1) limit( (2*x+1)/(3*x+2), 2 (%o1) 3
x,inf );
(%i1) limit(((z^(2/3))/(z - sqrt(2 * z))), z, 8); (%o1) 1 (%i2) limit((t^2 + 6*t + 9)/(9 - t^2), t, -3); (%o2) 0
Limites trigonométricos: (%i1) limit(sin(x)/x, x, 0); (%o1) 1 (%i2) limit((1 - cos(3*x))/(2*x^2), x, 0); 9 (%o2) 4
Limites Laterais: Pela esquerda, basta adicionar um quarto parâmetro ‘minus’: (%i1) limit(sqrt(x * (5-x)), x , 5, minus); (%o1) 0 (%i1) limit(1/x, x, 0, minus); (%o1) minf
Obs. : minf = menos infinito.
13
Pela direita, basta adicionar o quarto parâmetro ‘plus’: (%i1) limit(sqrt((4*x)/(x-4)), x, 4, plus); (%o1) inf
(%i2) limit(1/x, x, 0, plus); (%o2) inf
Obs. : inf = infinito. Como a definição mais rudimentar de derivada provém da aplicação de limites, vamos realizar algumas operações, como introdução às derivadas. Tendo conhecimento de que : f ’(x) = lim ( f(x + h) – f(x) ) / h x->0 Podemos obter, a derivada de uma função, utilizando apenas limites, no caso g(x) = f ’(x), veja: (%i1) f(x):= 2 * x^2 + 3 * x; 2 (%o1) f(x) := 2 x + 3 x
(%i2) g(x) = limit((f(x + h)- f(x)) / h, h, 0);
(%o2) g(x) = 4 x + 3
Outro exemplo: (%i1) f(x):=x - 1/x; 1 (%o1) f(x) := x - x
14
(%i2) g(x) = limit((f(x + h)- f(x)) / h, h, 0);
2 x + 1 (%o2) g(x) = -----2 x
Assim, visto como implementar limites no MAXIMA, passaremos então as derivadas.
15
- DERIVADAS A diferenciação de uma função pode ser rapidamente obtida pela função ‘diff’ : diff ( função, variável );
Aplicação: (%i1) diff((2*x^2+3*x), x); (%o1) 4 x + 3
(%i2) diff((x - 1/x), x); 1 (%o2) -- + 1 2 x
(%i3) diff(sin(x), x); (%o3) cos(x)
Um exemplo prático envolvendo máximos e mínimos. Determinar as dimensões do cilindro circular reto de maior volume que pode ser inscrito em um cone circular reto de raio R e altura h: Primeiramente temos que fazer uma visualização do cilindro inscrito no cone (I), e representá-lo de forma a surgir uma semelhança de triângulos (II).
16
(I)
(II)
Portanto r/d = R/D. Como: (%i1) D : sqrt(R^2 + H^2); 2 2 (%o1) sqrt(R + H ) (%i2) d : sqrt((H-h)^2 + r^2); 2 2 (%o2) sqrt((H - h) + r )
Temos: r^2/((H-h)^2 + r^2) = R^2/(R^2 + H^2);
Isolando r^2 : (%i3)eq1:solve((r^2*(R^2+H^2))=R^2*(Hh)^2+r^2*R^2,r^2);
2 (%o3)[r
2 2 2 (H - 2 h H + h ) R = --------------------] 2 H
Conhecido que o volume de um cilindro é (%pi*r^2)*h. (%i4) V(h):= (%pi * R^2 * (H-h)^2 * h)/H^2;
17
2 2 %pi R (H - h) h (%o4) V(h) := ----------------2 H
Para obtermos o volume máximo, devemos derivar V(h), e igualar a zero. (%i5) eq2:solve(diff(V(h),h)=0,h); H (%o5)[h = H, h = -] 3
Surgiram duas soluções para h, porém a partir de um h positivo, a solução a ser adotada é h = H/3. (%i8) eq1:solve (eq1, r); (H - h) R (H - h) R (%o8) [r = - ---------, r = ---------] H H
Assim substituindo a eq2 em eq1, temos: (%i9) r
: R*(H-H/3)/H; 2 R (%o9) --3
Com isso, podemos concluir que o raio que gera o maior cilindro é: 2 R r = --3
(resposta)
Para obter a segunda derivada, ou a n-ésima derivada basta adicionar um terceiro parâmetro na função indicando quantas vezes a função deve ser diferenciada. diff(função, variável, n);
18
Por exemplo: Achar a primeira e a quarta derivada de: f(x) = 2 * ( x ^ 3 ) + 1 / ( x ^ 2 ) + 16 * ( x ^ ( 7 / 2 ) ) (%i1) f(x) := 2*(x^3)+1/(x^2)+16*(x^(7/2)); 3 1 7/2 (%o1) f(x) := 2 x + -- + 16 x 2 x (%i2) diff(f(x), x); 5/2 2 2 (%o2) 56 x + 6 x - -(primeira derivada) 3 x (%i3) diff(f(x), x, 4); 105 120 (%o3) ------- + --(quarta derivada) sqrt(x) 6 x
19
- INTEGRAIS Para integrar uma função basta utilizar a função: integrate(função, variável) ;
para integrais indefinidas integrate(função, variável, início, fim);
para integrais com intervalos definidos. Exemplos: - Integrais indefinidas (%i1) integrate(x^3*((1 + x^4)^5), x); 4 6 (x + 1) (%o1) --------24
(%i2) integrate(x^2*cos(4*x^3), x); 3 sin(4 x ) (%o2) --------12
- Integrais definidas (%i1) integrate((1+sqrt(t))^2/sqrt(t), t, 1, 4); 38 (%o1) -3
(%i2) integrate(6 - x^2 -x, x, -3, 2); 125 (%o2) --6
20
No caso de funções descontínuas no intervalo dado, o programa acusará o seguinte erro:
(%i6) integrate(1/x, x, -1, 0); Integral is divergent -- an error. Quitting. debugmode(true);
To
debug
this
try
Nesse caso utilize os recursos de limites para verificar a condição de continuidade.
21
- GRÁFICOS EM DUAS DIMENSÕES Os gráficos gerados pelo MAXIMA aparecem em um programa anexo ao MAXIMA o gnuplot graph. A função mais conhecida para traçar gráficos em duas dimensões é a ‘plot2d’, que deve ser implementada da seguinte forma: plot2d(função, [eixo,início,final]);
Exemplos: (%i1) plot2d(sin(x),[x,0,2*%pi]); (%o1)
22
Caso você não goste da escala sugerida pelo programa, ou de uma série de outros fatores como cores, a maioria dessas coisas você pode alterar. Por exemplo, as cores das linhas, basta desativar o sistema de manuseio por mouse, pressionando ‘m’, depois disso clique com o botão direito em qualquer parte do gráfico e surgirá um menu com diversas opções, cores das linhas, tipo de fonte, copiar a imagem do gráfico, etc. Se você deseja realizar maiores operações com os gráficos basta pressionar ‘Espaço’, e você acessará a janela principal do gnuplot, com todas as suas opções disponíveis. Ou senão, na própria linha de comando podem ser feitas algumas operações, veja: - nticks : Número de pontos iniciais usado pela rotina adaptativa de montagem do gráfico. [nticks, 20] O padrão para nticks é 10. - adapt_depth: O número máximo de quebras usada pela rotina adaptativa de montagem do gráfico. [adapt_depth, 5] O padrão para adapt_depth é 10. - grid: Escolhe o número de pontos da grade para usar nas direções x e y para montagem de gráficos tridimensionais. [grid, 50, 50] Escolhe a grade para 50 por 50 pontos. A grade padrão é 30 por 30. Voltando as funções mais básicas, você pode colocar duas funções em um mesmo gráfico, da seguinte forma: (%i1) plot2d([sin(x), cos(x)], [x, -2*%pi, 2*%pi]); (%o1) 23
1
sin(x) cos(x)
0.5
0
-0.5
-1 -8
-6
-4
-2
0
2
4
6
8
(%i1) plot2d([cos(2*x),x^3],[x,-%pi,%pi]); (%o1) 40
cos(2*x) x^3
30 20 10 0 -10 -20 -30 -40 -4
-3
-2
-1
0
1
2
3
4
24
- GRÁFICOS EM TRÊS DIMENSÕES Para implementação de gráficos em três dimensões a função a ser usada é a plot3d, que se assemelha muito com a plot2d. O programa gerador de gráficos, o gnuplot, permite que em gráficos de três dimensões, possa ser feito o manuseamento do gráfico gerado de acordo com o usuário, bastando apenas clicar em cima do gráfico e girá-lo ao seu gosto. Você pode também remanejar a escala de acordo com seu gosto bastando apenas clicar com o botão 3 do mouse, isto é, o do meio. plot3d(função,[eixo1,início1,fim1],[eixo2,início2, fim2]);
Assim, temos: (%i1) plot3d(x^2-y^2,[x,-2,2],[y,-2,2]); (%o1)
x^2-y^2 4 3 2 1 0 -1 -2 -3 -4
4 3 2 1 0 -1 -2 -3 -4
2
1.5
1
0.5
0
-0.5
-1
-1.5
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
25
(%i1) 2*%pi]); (%o1)
plot3d(sin(x)*sin(y),
[x,
0,
2*%pi],
[y,
0,
sin(x)*sin(y) 1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1
1 0.5 0 -0.5
0
-1
1 2 3 4 5 6 7 0
1
2
3
4
5
6
7
Um outro famoso exemplo é o toro: (%i1) expr_1: cos(y)*(10.0+6*cos(x)); expr_2: sin(y)*(10.0+6*cos(x)); expr_3: -6*sin(x); plot3d ([expr_1, expr_2, expr_3], [x, 0, 2*%pi], [y, 0, 2*%pi], [grid, 40, 40]); (%o1) (%i2) (%o2) (6 cos(x) + 10.0) cos(y) (%i3) (%o3) (6 cos(x) + 10.0) sin(y) (%i4) (%o4) - 6 sin(x)
26
Function 6 4 2 0 -2 -4 -6
6 4 2 0 -2 -4 -6
-20
-15
-10
-5
0
5
10
15
20-20
-15
-10
-5
0
5
10
15
20
27