Utilização do MAXIMA

Utilização do MAXIMA

(Parte 1 de 2)

Universidade Estadual de Campinas Trabalho de MA311

Utilização do

Software Maxima

Cristina Marioni Torres
Filipe Ricardo PolizelRA:043583
Letícia Andréa Bocchi SilvaRA:048060
Luís Fernando L. SatoRA:044865
Natália do Carmo Carvalho
Thiago de Moraes SfredoRA:046708

Tiago Bonatto de Lima RA:046769

1) Introdução3
1.1) Histórico e modo de obtenção3
1.2) Conceitos básicos do Maxima4
2) Solução de equações diferenciais7
2.1)Definição de equação diferencial7
2.2) Solução de equações diferenciais de primeira ordem8
2.2.1) Equações lineares8
2.2.2) Equações separáveis9
2.2.3) Equações exatas9
2.3) Solução de equações diferenciais de segunda ordem:10
2.3.1) Equações Homogêneas com Coeficientes Constantes1
2.3.2) Raízes Complexas da Equação Característica1
2.3.3) Raízes Repetidas12
2.4) Equações Não-Homogêneas;12
2.4.1) Método dos Coeficientes Indeterminados12
2.4.2) Variação dos Parâmetros13
2.5) Resolvendo sistema de EDOs:14
3) Apresentação de Campo de Direções e Trajetórias14
4) Solução de equações diferenciais por transformada de Laplace18
4.1) Definição da transformada de Laplace18
4.2) Resolvendo equações diferenciais com transformada de Laplace19
5) Séries21
5.1) Função sum( ):21
5.2) Função taylor( ):2
5.3) Função diff( ):23
5.4) Função solve_rec( ):24
5.5)Resolvendo um EDO por séries:25
6) Osciladores amortecidos:27
7) Função Degrau ou Função de Heaviside30
7.1) Definição:30
8) Bibliografia32
8.1)Sites:32

1) Introdução

1.1) Histórico e modo de obtenção

O Maxima é um software livre para cálculos matemáticos, semelhante ao MatLab e ao Mathematica. Trata-se de um sistema de álgebra computacional para manipulação de expressões simbólicas e numéricas, incluindo a diferenciação, integração, série de Taylor, transformações de La Place, equações diferenciais ordinárias, sistemas de equações lineares, polinomiais, e séries, listas, vetores, matrizes. O Maxima produz resultados precisos usando seu sistema especial de “floating” e pode trabalhar com funções e dados em duas ou três dimensões.

O código fonte do Maxima pode ser compilado em muitos sistemas, incluindo

Windows, Linux, e MacOS X. O código fonte para todos os sistemas e pré-compilado binário para Windows e Linux, e está disponível no GNU General Public License. O download do sotware pode ser feito pelo link http://sourceforge.net/project/showfiles.php?group_id=4933 .

Maxima é derivado do sistema Macsyma, o sistema legendário da álgebra do computador desenvolvido nos anos de 1968 a 1982 no Instituto de Tecnologia de Massachusetts como parte do Projeto MAC. MIT remanejou uma cópia do código fonte do Macsyma para o Departamento de Energia em 1982; aquela versão é agora conhecida como Macsyma DOE. Uma cópia do Macsyma DOE (Departamento de Energia) foi mantida pelo Professor William F. Schelter da Universidade do Texas de 1982 até sua morte em 2001. Em 1998, Schelter obteve permissão do Departamento de Energia para liberar o código fonte do Macsyma DOE sob a Licença Pública GNU, e em 2000 ele iniciou o projeto Maxima no SourceForge para manter e desenvolver o Macsyma DOE, agora chamado Maxima.

Maxima é o único sistema baseado nesse esforço ainda publicamente disponível e com uma comunidade de usuário ativa, graças a sua natureza aberta da fonte. Macsyma era revolucionário em seu dia, e muitos sistemas mais atrasados, tais como o Bordo e o Mathematica, foram inspirados por ele.

1.2) Conceitos básicos do Maxima

Inicie o Maxima com o comando "maxima". Maxima mostrará a informação de versão e uma linha de comando. Termine cada comando noMaxima com um ponto e vírgula. Termine uma sessão com o comando "quit();".

Aqui está um exemplo de sessão:

(%o1)2 3 5 7
65 2 4 3 3 4 2 5 6
22
(%o3)(x - 1) (x + 1) (x - x + 1) (x + x + 1)

[wfs@chromium]$ máxima Maxima 5.9.1 http://maxima.sourceforge.net Using Lisp CMU Common Lisp 19a Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. This is a development version of Maxima. The function bug_report() provides bug reporting information. (%i1) factor(10!); 8 4 2 (%i2) expand ((x + y)6); (%o2) y + 6 x y + 15 x y + 20 x y + 15 x y + 6 x y + x (%i3) factor (x6 - 1); (%i4) quit(); [wfs@chromium]$

Maxima pode procurar as páginas info. Use o comando describe para mostrar todos os comandos e variáveis contendo uma dada seqüência de caracteres, e opcionalmente sua documentação. O ponto de interrogação ? é uma abreviatura para describe:

0: (maxima.info)Introduction to Elliptic Functions and Integrals. 1: Definitions for Elliptic Integrals. 2: Integration. 3: Introduction to Integration. 4: Definitions for Integration. 5: askinteger :Definitions for Simplification. 6: integerp :Definitions for Miscellaneous Options. 7: integrate :Definitions for Integration. 8: integrate_use_rootsof :Definitions for Integration. 9: integration_constant_counter :Definitions for Integration. Enter space-separated numbers, all' or none': 6 5

Info from file /usr/local/info/maxima.info:

- Function: integerp (<expr>) Returns true' if <expr> is an integer, otherwise false'.

- Function: askinteger (expr, integer) - Function: askinteger (expr)

- Function: askinteger (expr, even)

- Function: askinteger (expr, odd) askinteger (expr, integer)' attempts to determine from the assume' database whether expr' is an integer. askinteger' will ask the user if it cannot tell otherwise, and attempt to install the information in the database if possible. askinteger (expr)' is equivalent to askinteger (expr, integer)'.

askinteger (expr, even)' and askinteger (expr, odd)' likewise attempt to determine if expr' is an even integer or odd integer, respectively.

(%o1)false

Para usar um resultado em cálculos posteriores, você pode atribuir esse valor a uma variável ou referir-se a esse mesmo valor através de seu rótulo gerado automaticamente.

Adicionalmente, % refere-se ao mais recente resultado calculado:

65 2 4 3 3 4 2 5 6
54 2 3 3 2 4 5
(%o3)6 (y + x)

Maxima tem conhecimento sobre números complexos e constantes numéricas:

(%o1)- 1
(%o2)- 1

(%i1) cos(%pi); (%i2) exp(%i*%pi); Maxima pode fazer cálculos diferenciais e integrais:

65 2 4 3 3 4 2 5 6
54 2 3 3 2 4 5
2atan(-------)
log(x - x + 1)sqrt(3) log(x + 1)
(%o3)- --------------- + ------------- + ----------
6sqrt(3) 3

Maxima pode resolver sistemas lineares e equações cúbicas:

7 a - 5225
(%o1)[x = --------, y = -------]
3 a - 83 a - 8
(%o2)[x = - sqrt(5) %i, x = sqrt(5) %i, x = 3]

Maxima pode resolver sistemas de equações não lineares. Note que se você não quer um resultado impresso, você pode encerrar seu comando com $ em lugar de encerrar com ;.

3 sqrt(5) + 7sqrt(5) + 3
22
3 sqrt(5) - 7sqrt(5) - 3
22
3 sqrt(5) + 7sqrt(5) + 3
22
3 sqrt(5) - 7sqrt(5) - 3
22
(%o0)done

*Nota:

Para a função Degrau Unitário Maxima não é capaz de desenhar os gráficos nem calcular sua transformada de La Place, apesar de estar inclusa em sua biblioteca.A Função Degrau Unitário é implementada como unit_step[x].

2) Solução de equações diferenciais

2.1)Definição de equação diferencial

Uma equação diferencial é qualquer equação na qual esteja presente a derivada de alguma variável. Um exemplo simples é:

Note que dt dy também pode ser escrito como y′. A variável y é chamada de variável dependente e t é a variável independente.

Equações diferenciais são divididas em várias classificações, sendo a mais básica a ordem. A ordem de uma equação diferencial é dada pela derivada de maior grau encontrada nela. No exemplo acima, a única derivada é de primeiro grau, portanto, trata-se de uma equação diferencial de primeira ordem.

2.2) Solução de equações diferenciais de primeira ordem

Não existe um método universal para resolver equações de primeira ordem.

Portanto, estas equações foram divididas em várias subclasses com métodos de solução diferentes. As mais importantes subclasses são equações lineares, equações separáveis e equações exatas.

2.2.1) Equações lineares Equações lineares são normalmente encontradas na forma

e representam uma relação linear entre a variável dependente e a independente.

Para resolver uma equação linear de primeira ordem no Maxima usa-se o comando ode2(equação, variável dependente, variável independente).

Exemplo 1:

out: tecty2 2

O Maxima retorna a solução geral da equação diferencial, por isso o uso da constante c. Isto possibilita desenhar o campo vetorial e trajetorial da equação (assumindo arbitrariamente valores para a constante). O valor da constante depende das condições iniciais do problema (exemplo logo a seguir).

Observe que o comando para solução, tanto de equações de primeira ordem quanto para segunda, é o mesmo no Maxima. Este comando examina a equação e aplica vários métodos de solução até encontrar a solução geral. Para descobrir qual método foi utilizado pelo Maxima na resolução da equação, existe o comando method. Para a equação resolvida acima, method retorna linear, o que quer dizer que o maxima obteve a solução geral da equação diferencial tratando-a como uma equação linear.

Aplicando as condições iniciais t = 1 e y = 0 para a equação resolvida no exemplo acima, podemos determinar o valor da constante c através da função ic1. Esta função deve ser usada da seguinte forma ic1(solução, valor inicial de t, valor inicial de y)

Exemplo 2:

Esta é a solução do problema de valor inicial apresentado.

2.2.2) Equações separáveis Equações separáveis são geralmente da forma

ou seja, a função N que multiplica a derivada depende apenas da variável dependente e o termo M depende apenas da variável independente. Estas equações podem ser resolvidas por integração direta, pois podem ser escritas na formadyyNdxxM)()(−=, e a solução pode ser encontrada integrando-se ambos os lados da equação.

Exemplo 3:

out: c

Para esta equação a função method retorna separable.

Aplicando as condições iniciais x = 2 e y = 0 nesta solução geral, encontramos a seguinte solução particular:

2.2.3) Equações exatas

A definição de uma equação exata de primeira ordem é, para uma equação 0),(),( =+ dx dyyxNyxM, tem-se que:

),(),(yxNyxMxy= Cumprida esta condição, a solução geral da equação é dada pela função F, sendo

Nem sempre uma equação diferencial encontra-se na forma exata. Para transformála em uma equação exata, pode se multiplicar a equação por um determinado fator integrante u, que depende apenas de uma das variáveis. Comumente, utiliza-se u(x). A equação transformada é então du xy − =

Exemplo da solução de uma equação exata com o uso de fator integrante:

dy xxy

Out: c yxyx =

Neste exemplo a função method retorna exact.

Para avaliar se o Maxima usou um fator integrante para transformar a equação diferencial acima em uma equação exata, use-se a função intfactor.

Neste caso a função intfactor retorna x, ou seja, houve a necessidade de multiplicar a equação diferencial por xxu=)(.

A equação exata resolvida pelo Maxima então foi dx dyxyx.

2.3) Solução de equações diferenciais de segunda ordem:

Como já visto anteriormente, equações de segunda ordem são aquelas em que o maior grau de suas derivadas é 2. Nesta seção veremos os diversos métodos de resolução destas equações, aplicados a cada tipo de equação.

Podemos ainda definir uma equação diferencial de segunda ordem pela forma:

dyytf dt

Onde f é alguma função dada.

2.3.1) Equações Homogêneas com Coeficientes Constantes

Esse tipo de equação é dado na forma: ay’’+ by’+cy = 0, onde a, b e c são constantes.

O método de resolução de tais equações é bem simples, basta realizarmos a troca de variável rtey=, aplicando as derivadas a cada fator e dividindo toda a equação porrte, chegaremos a uma equação do segundo grau.

Seja r1 e r2 as raízes dessa equação, então teremos como solução geral do problema:

trtr

Note que as constantes c1 e c2 podem ser encontradas dado um problema de valor inicial.

Neste caso a função method retorna constcoeff.

2.3.2) Raízes Complexas da Equação Característica

Este é um caso particular de equação homogênea com coeficientes constantes. Onde obtemos raízes complexas da equação de segundo grau, ou seja, 04<−acb.

As raízes da equação de segundo grau, neste caso, são dadas por onde 1−=i. Neste problema, s solução para a equação diferencial se apresenta na forma:

tsenectecy t µ λλ −+= 21 cos Exemplo 5:

ecx senecy

Neste caso a função method retorna constcoeff.

2.3.3) Raízes Repetidas

Este é mais um caso particular de equação homogênea com coeficientes constantes. Onde as raízes r1 e r2 da equação de segundo grau obtida da equação diferencial são iguais.

Neste problema, a solução geral para a equação diferencial se apresenta na forma:

Exemplo 6:

Neste caso a função method retorna constcoeff.

2.4) Equações Não-Homogêneas;

2.4.1) Método dos Coeficientes Indeterminados

Equações não-homogêneas são da forma )()(')('' tgytqytpy =++ , onde p, q e g são funções contínuas no intervalo considerado.

Toda equação não-homogênea tem uma equação homogênea associada, que é da forma:

0)(')(''=++ytqytpy A solução geral de uma equação não-homogênea pode ser escrita na forma:

onde y1 e y2 formam um conjunto de soluções da equação homogênea associada e Y é uma solução específica da solução da equação original (não-homogênea).

O Maxima não utiliza este método, por sua falta de generalidade.

2.4.2) Variação dos Parâmetros

Este é um método mais geral para a solução de equações diferenciais nãohomogêneas, já que não são necessárias hipóteses detalhadas sobre a forma da solução.

A idéia básica do método da variação dos parâmetros é substituir as constantes c1 e c2 por funções u1(t) e u2(t), respectivamente, determinando essas funções de forma que a expressão resultante para a solução geral seja:

Do método da variação de parâmetros, conclui-se que uma solução particular da equação particular é:

tgty tydt

tyyW tgty onde W(y1,y2) é o Wronskiano aplicado às funções y1(t) e y2(t). Temos ainda que a solução geral para é:

Podemos notar que

Neste caso a função method retorna variationofparameters.

2.5) Resolvendo sistema de EDOs:

O software Maxima possui um comando que facilita muito a resolução de um sistema de equações diferenciais. Esse comando é o “desolve”. Ele calcula o sistema utilizando a transformada de La Place. É um método parecido a resolução de um sistema linear comum, mas utiliza a transformada de La Place para transformar um sistema de EDOs em um de equações algébricas e depois faz a inversa da transformada de La Place para encontrar o resultado final.

Inserindo as equações do sistema:

Colocando algumas condições iniciais.

Resolvendo o sistema:

3) Apresentação de Campo de Direções e Trajetórias

Campo de Direções é uma ferramenta importante para a avaliação de equações diferenciais, pois dão uma noção dos valores que as soluções dessas equações tendem. Eles são compostos por vetores tangentes às soluções nos pontos do plano xy.

Para desenhar campos de direções no Maxima, devemos primeiramente carregar a biblioteca “plotdf” utilizando o comando “load(plotdf);”.

A função que desenha os campos de direções é “plotdf”, para utilizá-la, passamos como argumento a função

*Note que tal função só desenha campos de direções para equações diferenciais ordinárias de primeira ordem.

Exemplo 1: Traçar o campo de direções para a equação diferencial 0135'=++−xy

*Note que temos 135' −+== xy dx

Agora veremos alguns dos argumentos da função “plotdf”:

Argumento Parâmetros Valor Padrão Papel xradius 1 (real) 0 Magnitude do eixo x. yradius 1 (real) 0 Magnitude do eixo y. xcenter 1 (real) 0 Centro do eixo x. ycenter 1 (real) 0 Centro do eixo y. tinitial 1 (real) 0 Valor inicial do parâmetro “t” . nsteps 1 (inteiro) 100 Número de passos p/ traçar a trajetória. tracjetory_at 2 (real, real) vazio Ponto em que é traçado a trajetória. tstep 1 (real) 0,01 Valor adicionado a “t” a cada passo.

Exemplo 2: Traçar o campo de direção de yxy5.02'−+= mostrando a trajetória de uma possível solução.

*Note que traçamos a solução para o ponto (1, 1), além de definir a magnitude dos eixos x e y, o número de passos e o incremento de t.

Exemplo 3: Para o exemplo anterior, mostrar várias soluções.

Para mostrarmos diversas soluções no Maxima, devemos traçar o campo de direções; clicando em “Config” podemos ver o campo “Trajectory at”, ao inserirmos os valores da coordenada do ponto desejado mostramos soluções adicionais, como mostrado abaixo:

Exemplo 4: A aceleração )'(v de um corpo em queda satisfaz a seguinte equação: vv2.08.9'−=, onde v é a velocidade do corpo.Desenhe o campo de direções para o problema dado, e estime a velocidade limite de queda.

Primeiramente, desenhemos o campo de direções: plotdf(9.8 –0.2*y);

Olhando as soluções traçadas no campo de direções acima, notamos que para um tempo muito longo, todas tendem a um número próximo de 50. Disto podemos estimar que a velocidade limite de queda é aproximadamente 50.

Analisando o caso v(0) = 49, notamos que a velocidade não se altera com o tempo, ou seja, v’(t) = 0 para qualquer t, disso podemos concluir que a velocidade limite é de 49.

4) Solução de equações diferenciais por transformada de Laplace

(Parte 1 de 2)

Comentários