Você está na página 1de 18

Fevereiro de 2008

[MAXIMA PROJETO: INFORMTICA SOLIDRIA]



Autores: Anderson Tavares Neres
Pgina 1
Adriana dos Santos Morais

UNIVERSIDADE FEDERAL DO PAR
CAMPUS DE SANTARM
FACULDADE DE MATEMTICA













PROJETO DE EXTENSO:


Uso de software livre como ferramenta de apoio ao ensino da Matemtica, Cincia e Fsica nas
Escolas Pblicas de Ensino Fundamental e Mdio.




COORDENADOR DO PROJETO DE EXTENSO:


Professor: Jos Antonio Oliveira Aquino



APOSTILA: MAXIMA



AUTORES DA APOSTILA:


Aluna: Adriana dos Santos Morais
Aluno: Anderson Tavares Neres









Fevereiro de 2008
[MAXIMA PROJETO: INFORMTICA SOLIDRIA]

Autores: Anderson Tavares Neres
Pgina 2
Adriana dos Santos Morais

Esta apostila foi criada baseada no manual do Software Maxima. (Este manual encontra-se
disponvel no site: http://maxima.sourceforge.net/docs/manual/pt_BR/maxima.html#SEC_Top
Para fazermos download do programa ou obtermos outras informaes, visite o site oficial do
Maxima. (http://maxima.sourceforge.net).
O Maxima um Sistema de Computao Algbrica, de cdigo aberto sob a licena GPL (General
Public License), desenvolvido por Willian F. Shelter, implementado em Lisp. , baseado na implementao
original do MacSyma no MIT.
Nesta apostila estaremos utilizando a verso (Maxima 5.14.0) para Linux.
O Programa Maxima pode ser acessado pelo konsole do Linux digitando-se maxima. Um ambiente
um pouco mais amigvel tambm pode ser acessado no Linux pelo comando xmaxima
Na tela principal do maxima veremos informao da verso e uma linha de comando. Termine cada
comando Maxima com um ponto e vrgula e pressione enter. No maxima comentrios so comandos
constitudos de textos e nmeros contidos entre os caracteres /* e */ ou entre aspas ( ) nesse caso os
comentrios sero exibidos na tela. Termine uma sesso com o comando "quit();



















CONSIDERAES SOBRE A FIGURA ACIMA:
(%i nmero) (%o nmero) so etiquetas. A letra i indica uma entrada de dados e o nmero, os
passos j executados ou as linhas j utilizadas no programa que serviro como referncia para uso posterior. A
letra o indica a sada. Para usar um resultado em clculos posteriores, pode-se atribuir esse valor a uma
varivel ou referir-se a esse mesmo valor atravs de seu rtulo gerado automaticamente. Temos que o
smbolo % refere-se ao mais recente resultado calculado. Caso no for desejado mostrar o resultado da
operao pode-se usar o $ (cifro) ao final da sentena a ser processada.
DEFININDO VARIVEIS
Variveis: Uma varivel corresponde ao nome simblico de um espao de memria que armazena um valor.
O operador usado para definir variveis o : (dois pontos). A lgica a seguinte:

Comando O que ele faz?
x:a; Atribui o valor a varivel x
kill(x); Apaga o valor atribudo varivel x.
Veja o exemplo:
(%i1) x:3.75; (%o2) 3.75 (%i4) x;
(%o1) 3.75 (%i3) kill(x); (%o4) x
(%i2) x; (%o3) done

Obs.: No MAXIMA, os nmeros decimais no so escritos com o uso de vrgula como aprendemos na escola
e sim com ponto. Por exemplo: 3,75 para ns so 3.75 no MAXIMA como vimos acima.
Fevereiro de 2008
[MAXIMA PROJETO: INFORMTICA SOLIDRIA]

Autores: Anderson Tavares Neres
Pgina 3
Adriana dos Santos Morais

(%i1) a:2; b:3; c:1; d:5;e:4; f:0;
Como vemos ao lado, podemos definir vrias
variveis em uma mesma linha de comando.

Podemos atribuir outros valores e no apenas nmero s variveis. Vamos a um exemplo:












EXERCCIO
Atribua os seguintes valores para as variveis: a=12; b=37; c=43; d=169; e=4; f=0 e calcule o
valor das expresses a seguir.

Expresso


Resultado

+ a b


25

( ) + 2 a 3 ( ) + d 1


4590

a
|
\

|
|
+ d
b
2 a
2
b
2
4 a c
4 a



349028

+ + a d
2
b d c


349028

+ d 27 e + c 6


5

|
\

|
||
+ 1 a + 1 b
1 c + d 1
f



1


DICAS

Se colocarmos uma expresso, o MAXIMA conservar a forma simblica: Para que a operao seja
executada utiliza-se o comando numer.

%,numer;

Em casos que voc definiu os valores para variveis e no quer ver o resultado de uma expresso,
utilize o sinal de apstrofe antes da expresso.
Fevereiro de 2008
[MAXIMA PROJETO: INFORMTICA SOLIDRIA]

Autores: Anderson Tavares Neres
Pgina 4
Adriana dos Santos Morais

FUNES BSICAS DO MAXIMA
Sintaxe no Maxima Funo Sintaxe no Maxima Funo
abs(x) |x| acsc(x) arccosec(x)
exp(x)
e ee e
x

acot(x) arccotg(x)
sign(x) x
x

sinh(x) senh(x)
sqrt(x)
x

cosh(x) cosh(x)
sin(x) sen(x) tanh(x) tgh(x)
cos(x) cos(x) sech(x) sech(x)
tan(x) tg(x) csch(x) csch(x)
sec(x) sec(x) coth(x) cotgh(x)
csc(x) cosec(x) asinh(x) arcsenh(x)
cot(x) cotg(x) acosh(x) arcosh(x)
acos(x) arccos(x) atanh(x) arctanh(x)
asin(x) arcsen(x) asech(x) arcsech(x)
atan(x) arctan(x) acsc(x) arccosech(x)
asec(x) arcsec(x) acoth(x) arccotgh(x)
factorial (x) x! Ou calcule o fatorial de nmero n por n!
max(a,b,c) Calcula o mximo entre os valores dados.
min(a,b,c) Calcula o mnimo entre os valores dados.
binomial (x, y) O coeficiente binomial x!/(y! (x - y)!). Se x e y forem inteiros, ento o valor
numrico do coeficiente binomial calculado. Se y, ou x - y, for um inteiro, o
coeficiente binomial expresso como um polinmio.
divsum (n, k)
divsum (n)
- divsum (n, k) retorna a adio dos divisores de n elevados k'sima
potncia.
- divsum (n) retorna a adio dos divisores de n.
fib (n) Retorna o n'simo nmero de Fibonacci. fib(0) igual a 0 e fib(1) igual a 1, e
fib (-n) igual a (-1)^(n + 1) * fib(n).
Aps chamar fib, prevfib iguala fib (x - 1), o nmero de Fibonacci anterior
ao ltimo calculado.
ifactors (n) Para um inteiro positivo n retorna a fatorao de n. Se n=p1^e1..pk^nk for a
decomposio de n em fatores primos, ifactors retorna [[p1, e1], ... , [pk, ek]].
inrt (x, n) Retorna a parte inteira da n'sima raz do valor absoluto de x.
lcm (expr_1, ...,
expr_n)
Retorna o menor mltiplo comum entre seus argumentos. Os argumentos
podem ser expresses gerais tambm inteiras.
next_prime (n) Retorna o menor primo maior que n.
load ("functs") chama essa funo.
prev_prime (n) Retorna o maior primo menor que n.
Fevereiro de 2008
[MAXIMA PROJETO: INFORMTICA SOLIDRIA]

Autores: Anderson Tavares Neres
Pgina 5
Adriana dos Santos Morais

primep (n) Teste de primalidade. Se primep (n) retornar false, n um nmero compostro
e se esse teste retornar true, n um nmero primo com grande probabilidade.
totient (n) Retorna o nmero de inteiros menores que ou iguais a n que so relativamente
primos com n.
log(x) Representa o
logartmo natural (base e) de
x.
ln(x)
Maxima no possui uma
funo
interna para logartmo de
base 10 ou de outras bases.
Sugesto de funo para calculo de log em outras bases.
logaritmo(base,antilog):= solve (base ^ logaritmo = antilog ,
logaritmo);

CONSTANTES ESPECIAIS
H trs constantes especiais que so listados na tabela abaixo e sua respectiva representao dentro
do MAXIMA.
Constante (smbolo) Nome Representao no MAXIMA
e

Nmero de Euler %e


Pi %pi


Infinito inf

Constante de Euler %gamma

DEFININDO FUNES NO MXIMA

A forma de definio de funo no MXIMA uma das mais simples que existe. Para criar uma
funo, por exemplo, f(x) voc apenas tem que digitar f(x):= expresso; Vamos a um exemplo:
















IDENTIFICADORES: Os identificadores (nomes de variveis, nomes de funes, ...) podem ser
formados por letras, dgitos decimais e o caractere "sublinhado" ( _ ). Um identificador deve comear com
uma letra e no podem conter espaos, letras acentuadas ou cedilhadas.

RESULTADOS EXATOS E APROXIMADOS
O MAXIMA possui por padro um nmero de casas decimais igual a 16. Este nmero pode ser
modificado mudando o valor da varivel fpprec. Um nmero real como
e
,

, 2 ,
ln(3)
e outras podem
ser aproximados por nmeros decimais ( o que se chama dentro do MAXIMA de ponto flutuante). O
comando para isto bem simples: float (<nmero>); ou bfloat (<nmero>);
Vejamos alguns exemplos:

Fevereiro de 2008
[MAXIMA PROJETO: INFORMTICA SOLIDRIA]

Autores: Anderson Tavares Neres
Pgina 6
Adriana dos Santos Morais



RESOLVENDO SISTEMAS LINEARES E EQUAES
O mtodo mais utilizado para resolver equaes o comando solve, ele capaz de resolver equaes
lineares, no lineares e sistemas com essas equaes, veja a definio abaixo.
solve(expresso = expresso,varivel)









Se o sistema for incompatvel, o Maxima retorna: Inconsistent equations: ( )

ATRIBUINDO VALORES (NUMRICO OU NO) A VARIVEIS
O comando que faz esta atribuio o subst(<a>,<b>,<c>);. Este comando faz o seguinte: substitui
<a> por <b> em <c>. Veja os exemplos:


















Obs.:

1. Naturalmente que esta substituio pode ser por outras expresses e no somente por nmeros como
vimos acima.
2. Outra maneira de dizer ao maxima para re-avaliar uma funo inserindo o smbolo apostrofe duas
vezes antes do nome da funo a ser reavaliada.



Fevereiro de 2008
[MAXIMA PROJETO: INFORMTICA SOLIDRIA]

Autores: Anderson Tavares Neres
Pgina 7
Adriana dos Santos Morais

COMO EXPANDIR, FATORAR E SIMPLIFICAR COM O MAXIMA.
Comando O que faz?
expand Expanso simples
factor Fatora (polinmios)
ratsimp Simplifica expresses polinomiais
radcan Simplifica expresses que contenham radicais

Ex.:
















NMEROS COMPLEXOS
Nmeros complexos podem ser definidos utilizando o operador %i ou %I para o i (nmero
complexo tal que i
2
= -1) da parte imaginria. Os comandos realpart e imagpart fornecem respectivamente a
parte real e a parte imaginria de um nmero complexo.
Vejamos o exemplo a seguir:





















Fevereiro de 2008
[MAXIMA PROJETO: INFORMTICA SOLIDRIA]

Autores: Anderson Tavares Neres
Pgina 8
Adriana dos Santos Morais

DIVISIBILIDADE
Dados dois inteiros d e n dizemos que d divide n (ou que d divisor de n; ou que n mltiplo de d)
se existir um inteiro q tal que n = dq. A q chamamos quociente da diviso de n por d. Quando d divide n
escrevemos:
d|n.

QUOCIENTE E RESTO
Para todo o d e n o existe um nico q e um nico r tais que
n = dq + r; 0 r < d;
O q chamado de quociente e r de resto.
O quociente e resto da diviso inteira so obtidos, respectivamente, pelas funes quotient e
remainder. As funes do Mxima tambm aceitam argumentos negativos.
O resto negativo sempre que n negativo; o quociente negativo se n e d tm sinais opostos:

















Outra forma de obter o quociente e o resto atravs da funo divide cujo resultado uma lista em que o
primeiro elemento o quociente e o segundo elemento o resto da diviso.

















FUNES DO MXIMA ASSOCIADAS DIVISIBILIDADE
O mximo divisor comum e mnimo mltiplo comum esto implementados em Mxima pelas
seguintes funes:
* gcd(p1, p2, var1,...) - calcula o mximo divisor comum de p1 e p2;
Fevereiro de 2008
[MAXIMA PROJETO: INFORMTICA SOLIDRIA]

Autores: Anderson Tavares Neres
Pgina 9
Adriana dos Santos Morais

* ezgcd(p1, p2,...) - devolve uma lista cujo primeiro elemento o m.d.c. dos polinmios p1, p2,..., e os
restantes elementos so os polinmios divididos pelo m.d.c.;
A funo ezgcd devolve uma lista, em que o primeiro elemento o m.d.c. Se pretendermos obter apenas este
valor podemos usar a funo part para nos devolver um elemento da lista.
* lcm(exp1, exp2,...) - calcula o mnimo mltiplo comum dos seus argumentos. Fazer load(functs)$ para
acessar esta funo.
O mnimo mltiplo comum entre 12 e 21 84. Como vemos a seguir:




















Ex.: - 1 divisvel por 383? Uma maneira de responder a questo atravs do seguinte comando no
Maxima:















PRIMOS

Um inteiro positivo n > 1 diz-se primo se ele tem precisamente 2 divisores: 1 e n (ou seja, se no tiver
divisores prprios). Um nmero no primo diz-se composto.
O Teorema Fundamental da Aritmtica diz que qualquer inteiro n maior que 1 pode ser expresso
como um produto:
x x... x
Fevereiro de 2008
[MAXIMA PROJETO: INFORMTICA SOLIDRIA]

Autores: Anderson Tavares Neres
Pgina
10
Adriana dos Santos Morais

Onde os pi's so nmeros primos distintos e os ei's so inteiros positivos. Mas, afirma que esta
factorizao nica a menos da ordem dos fatores.
Pretende-se determinar se 31418506212244678577 , ou no, primo. Uma maneira muito pratica de
saber a resposta consiste em usar o factor:
Tambm possvel decidir se um nmero primo ou no sem calcular a sua fatorizao!
Em Maxima usamos a funo primep:























TIPOS DE OBJETOS INTERNOS
Um objeto representado como uma expresso. Os mais importantes tipos de objetos internos so
listas, matrizes, e conjuntos.
Listas:
Uma lista indicada dessa forma: [a, b, c].
Se L uma lista, L[i] seu i simo elemento. L[1] o primeiro elemento.

FUNES DEFINIDAS PARA LISTAS
A funo map: constri e avalia uma expresso usando itens individuais de uma lista de argumentos.
Os argumentos de uma expresso so sempre avaliados (mesmo se eles no puderem ser avaliados de outra
forma). O resultado uma lista.

map(f , L) aplica f a cada elemento de L.
map ("+", [1, 2, 3], [a, b, c]);
map("=",[a,b],[-0.5,3]);

A funo apply: constri e avalia uma expresso. Os argumentos da expresso so sempre avaliados
(mesmo se eles no puderem ser avaliados de outra forma).
apply("+",L:[a,b,c,d,e]); a soma dos elementos de L.
A funo lambda: constri uma expresso lambda (uma funo sem nome).
A expresso lambda pode ser usada em alguns contextos como uma funo comum que possui nome.
lambda no avalia o corpo da funo.
f: lambda ([x, y], (x + y)*(x - y));
A funo length(L): o numero de elementos em L.

Fevereiro de 2008
[MAXIMA PROJETO: INFORMTICA SOLIDRIA]

Autores: Anderson Tavares Neres
Pgina
11
Adriana dos Santos Morais

INTRODUO A CONJUNTOS
Um conjunto uma coleo de objetos. A ordem na qual os elementos so listados irrelevante e,
por conseguinte, dois conjuntos so iguais se contm os mesmos elementos.
Maxima fornece funes de conjunto, tais como interseco e unio, para conjuntos finitos que so
definidos por enumerao explcitamente. Maxima trata listas e conjuntos como objetos distintos. Esse
recurso torna possvel trabalhar com conjuntos que possuem elementos que so ou listas ou conjuntos.
Para construir um conjunto com elementos a_1, ..., a_n, escreva set(a_1, ..., a_n) ou {a_1, ..., a_n};
para construir o conjunto vazio, escreva set() ou {}. Para insero de dados, set(...) e { ... } so equivalentes.
Conjuntos so sempre mostrados entre chaves ({ ... }).Se um elemento listado mais de uma vez, a
simplificao elimina o elemento redundante.
Obs: Para construir um conjunto dos elementos de uma lista, use setify.
setify ([b, a]);

FUNES PARA CONJUNTOS.
union(A, B) : a unio dos conjuntos A e B.

intersection(A, B) ou intersect(A,B) : a interseco dos conjuntos A e B.

cardinality(A) : o nmero de elementos no conjunto A.

setdifference(A,B): a diferena entre conjuntos A e B.

cartesian_product (b_1, ... , b_n) Retorna um conjunto de listas da forma [x_1, ..., x_n], onde x_1,
..., x_n so elementos dos conjuntos b_1, ... , b_n, respectivamente.
cartesian_product ({0, 1}, {0, 1});

divisors (n): Representa o conjunto dos divisores de n. divisors(n) simplifica para um conjunto de
inteiros quando n for um inteiro no nulo. O conjunto dos divisores inclui os elementos 1 e n. Os divisores de
um inteiro negativo so os divisores de seu valor absoluto.

Para verificar quando um elemento pertence, ou no, a um conjunto, usamos a funo elementp, que
uma funo Booleana.
A:{- 4, 1, 3}; elementp(0,A);

O Maxima permite tambm determinar um subconjunto de um dado conjunto:
subset (a, f): Retorna o subconjunto de um conjunto a que satisfaz o predicado f.
Por exemplo, se pretender determinar o subconjunto dos nmeros pares de um dado conjunto, faz-se:
subset({1,2,7,8,9,14},evenp);
Obs.: Em Maxima, existe a funo evenp para avaliar se uma expresso par, e a funo oddp para
avaliar se uma expresso mpar.

Para vermos se um conjunto subconjunto de outro conjunto, usamos a funo subsetp
subsetp (a, b): Retorna true se e somente se o conjunto a for um subconjunto de b.
subsetp ({1, 2, 3}, {a, 1, b, 2, c, 3});
symmdifference (a_1, ..., a_n): Retorna a diferena simtrica, isto , o conjunto dos elemetnos que
ocorrem em exatamente um conjunto a_k.
symmdifference ({1, 2, 3}, {a, 1, b, 2, c, 3});
permutations (a): Retorna um conjunto todas as permutaes distintas dos elementos da lista ou do
conjunto a. Cada permutao uma lista, no um conjunto. Quando a for uma lista, elementos duplicados de
a so includos nas permutaes.
permutations ([a, a, b]);

powerset (a): Retorna o conjunto de todos os subconjuntos de a, ou um subconjunto de a.
powerset(a) tem 2^cardinality(a) elementos.
powerset (a, n): retorna o conjunto de todos os subconjuntos de a que possuem cardinalidade n.
Fevereiro de 2008
[MAXIMA PROJETO: INFORMTICA SOLIDRIA]

Autores: Anderson Tavares Neres
Pgina
12
Adriana dos Santos Morais

powerset ({a, b, c});
powerset ({w, x, y, z}, 3);

MATRIZES
A introduo de uma matriz no Maxima pode ser feita da seguinte forma: Seja a matriz nm
A
, ento:
Matrix([vetor da 1 linha],[vetor da 2 linha],...,[ vetor da nsima linha];
Exemplo:
|
|
|

\
|

1 1 1
1 0 5
3 1 2

A: matrix([2,1,3],[-5,0,1],[1,1,-1]);

TRABALHANDO COM MATRIZES:
O que faz? Comandos
Definindo matrizes

A: matrix([1,2],[0,1]);
B: matrix([1,1],[1,1]);
Soma ou subtrao de matrizes A+B; ou A-B;
Produto de matrizes, elemento por elemento; A * B;
Diviso de matrizes A/B;
Matriz para um expoente escalar A ^ 3; ou B ^ 3;
Base escalar para um expoente matriz, elemento
por elemento.
exp(A); ou exp(B);
Base matriz para um expoente matriz. Essa no
realizada elemento por elemento.
A ^ B; ou B ^A;
Multiplicao no comutativa de matrizes. A.B; ou B.A;
Exponenciao no comutativa de matrizes A ^^ 3; ou B ^^ 3;
Inversa invert(A); ou A^^-1;
Determinante determinant(A);
Posto da matriz A rank(A);
Transposta da matriz A transpose(A);
Polinmio caracterstico charpoly(A,x);
Auto-valores da matriz A eigenvalues (A);
Auto-vetores da matriz A eigenvectors (A);
Forma triangular da matriz A triangularize (A);
Forma escalonada da matriz A echelon (A);
Forma adjunta da matriz A adjoint (A);
Retorna o nmero de linhas de A. length(A);
Retorna o nmero de colunas de A. length(transpose(A));
Retorna a i'sima coluna da matriz A col (A, i);
Cpia da matriz A. copymatrix (A);
Retorna uma matriz diagonal de tamanho n por
n com os elementos da diagonal todos iguais a x.
diagmatrix (n, x);
Retorna uma matriz identidade (o mesmo que
ident (n)).
diagmatrix (n, 1);
Retorna uma matriz m por n, todos os elementos
da qual so zero exceto para o elemento [i, j]
que x.
ematrix (m, n, x, i, j);
Retorna uma matriz com elemento i,j igual a
f(A[i,j])
matrixmap (f, A);
Retorna true se expr uma matriz, de outra
forma retorna false.
matrixp (expr);

Retorna o i, j menor do elemento localizado na
linha i coluna j da matriz A.
minor (A, i, j);
Fevereiro de 2008
[MAXIMA PROJETO: INFORMTICA SOLIDRIA]

Autores: Anderson Tavares Neres
Pgina
13
Adriana dos Santos Morais

OPERADORES ESPECIAIS E OUTRAS FUNES.

print (expr_1, ..., expr_n)
Avalia e mostra expr_1, ..., expr_n uma aps a outra, da esquerda para a direita, iniciando no lado
esquerdo do console. O valor retornado por print o valor de seu ltimo argumento. print no gera rtulos de
expresso intermediria.
Obs.: timedate () Retorna uma seqncia de caracteres representando a data e hora atuais. A
seqncia de caracteres tem o formato HH:MM:SS Dia, mm/dd/aaaa (GMT-n), Onde os campos so horas,
minutos, segundos, dia da semana, ms, dia do ms, ano, e horas que diferem da hora GMT.
d: timedate ()$
print ("timedate mostra o tempo atual", d)$

Operadores Relacionais,operadores diversos e funes de avaliao
Operador: <
Operador: <=
Operador: >=
Operador: >

Operador: # Representa a negao da igualdade sinttica =.

Operador and: O operador lgico de conjuno.

Operador or: O operador lgico de disjuno.

Operador not: O operador lgico de negao.

Funo compare (x, y): Retorna um operador de comparao op (<, <=, >, >=, =, ou #) tal que is (x
op y) avalia para true; quando ou x ou y dependendo de %i e x # y, retorna notcomparable; Quando no existir
tal operador ou Maxima no estiver apto a determinar o operador, retorna unknown.

Funo is (expr): Tenta determinar se a expr predicada (expresses que avaliam para true ou false)
dedutvel de fatos localizados na base de dados de assume. Se a dedutibilidade do predicado for true ou false,
is retorna true ou false, respectivamente. De outra forma, o valor de retorno governado atravs do
sinalizador global prederror. Quando prederror for true, is reclama com uma mensagem de erro. De outra
forma, is retorna unknown.

Funo maybe (expr): Tenta determinar se a expr predicada dedutvel dos fatos na base de dados
de assume. Se a dedutibilidade do predicado for true ou false, maybe retorna true ou false, respectivamente.
De outra forma, maybe retorna unknown. maybe funcionalmente equivalente a is com prederror: false, mas
o resultado computado sem atualmente atribuir um valor a prederror.

OPERADOR ESPECIAL: IF

Representa avaliao condicional. A estrutura de if.em sua forma mais simples :
IF condio THEN expressao1 ELSE expressao2;
Se condio resulta true, ento a expressao1 executada; se ela resulta false, ento a expressao2
executada. O valor da condio determinado automaticamente.
H(x):= if x <= 0 then x^2 else x - 5 $

A estrutura do if em sua forma geral a seguinte.
if cond_1 then expr_1 elseif cond_2 then expr_2 elseif ... else expr_0 avalia para expr_k se
cond_k for true e todas as condies precedentes forem false. Se nenhuma das condies forem true,
a expresso avalia para expr_0.

Fevereiro de 2008
[MAXIMA PROJETO: INFORMTICA SOLIDRIA]

Autores: Anderson Tavares Neres
Pgina
14
Adriana dos Santos Morais

OPERADOR ESPECIAL: DO
A declarao do usada para executar iterao. Existem trs variantes do que diferem somente por
suas condies de encerramento. So elas:
1. for Varivel: valor_inicial step incremento thru limite do corpo
2. for Varivel: valor_inicial step incremento while condio do corpo
3. for Varivel: valor_inicial step incremento unless condio do corpo
Obs. (Alternativamente, o step pode ser dado aps a condio de encerramento ou limite.) valor
inicial, incremento, limite, e corpo podem ser quaisquer expresses. Se o incremento for 1 ento "step 1"
pode ser omitido.
A execuo da declarao do processa-se primeiro atribuindo o valor inicial para a varivel (chamada
varivel de controle). Ento: (1) Se a varivel de controle excede o limite de uma especificao thru, ou se a
condio de unless for true, ou se a condio de while for false ento o do ser encerrado. (2) O corpo
avaliado. (3) O incremento adicionado varivel de controle. O processo de (1) a (3) executado
repetidamente at que a condio de encerramento seja satisfeita. Pode-se tambm dar muitas condies de
encerramento e nesse caso o do termina quando qualquer delas for satisfeita.
Exemplos do uso do operador do.
for a:-3 thru 26 step 7 do display(a)$
s: 0$
for i: 1 while i <= 10 do s: s+i;
s;
Dica: a funo display (expr_1, expr_2, ...). Mostra equaes cujo lado esquerdo expr_i no
avaliado, e cujo lado direito o valor da expresso centrada na linha. Essa funo til em blocos e em for
declaraes com o objetivo de ter resultados intermedirios mostrados.

PLOTANDO GRFICOS 2D
Os grficos 2D so feitos com o comando plot2d, de acordo com a seguinte sintaxe:
plot2d([expr1, expr2, ...,exprn],[x, mn,mx],[y,mn,mx],...,[opes]);

Antes de nos aprofundarmos em plotagem de grficos devemos saber que a elaborao e visualizao
dos grficos podem ser aperfeioadas com as opes a seguir:
[varivel, mn,mx]: podemos delimitar o domnio e a imagem da funo. Se no atribudo este
intervalo, o comando plot possui um tamanho padro.
[grid, divises do intervalo1, ...]: esta opo, em plotagem 3D, divide o intervalo em n partes,
possibilitando a diminuio ou aumento da malha.
[view_direction, xi, yi, zi]: controla a direo da exibio da plotagem.
[Nticks, n]: controla o nmero de pontos usados para desenhar um grfico 2D. Obs. O padro para
nticks 10.
[xlabel, ]: exibe o rtulo para o eixo horizontal em um grfico bidimensional.
[ylabel, ]: exibe o rtulo do eixo vertical em grficos bidimensionais.
[legend, , , ..., ]: Os rtulos para vrias expresses em um grfico bidimensional com muitas
expresses. Se houverem mais expresses que o nmero de rtulos fornecidos, eles iro ser repetidos. Por
padro, os nomes das expresses ou funes iro ser usados, ou as palavras discrete1, discrete2, ..., para
conjuntos discretos de pontos.
[logx]: Essa opo faz com que o eixo horizontal de um grfico bidimensional seja desenhado em
proporo logartmica. Essa opo no precisa de quaisquer parmetros adicionais.
[logy]: Essa opo faz com que o eixo vertical de um grfico bidimensional seja desenhado em
proporo logartmica. Essa opo no precisa de quaisquer parmetros adicionais.
plot2d (exp(3*s), [s, -2, 2], [logy])$
[grid, x,y]: Escolhe o nmero de pontos da grade para usar nas direes x e y para montagem de
grficos tridimensionais. A grade padro 30 por 30.
[colourz,false ou true]: controla a sada de cor das curvas ou superfcies a serem plotadas. Se
utilizado false a sada de cor ser homognea, se utilizado true haver uma variao de colorao.
[style]: Os estilos que iro ser usados para vrias funes ou conjuntos de dados em um grfico
bidimensional. A palavra style deve ser seguida por um ou mais estilos. Se houverem mais funes e
conjuntos de pontos que estilos fornecidos, os estilos iro ser repetidos. Cada estilo pode ser um entre os
Fevereiro de 2008
[MAXIMA PROJETO: INFORMTICA SOLIDRIA]

Autores: Anderson Tavares Neres
Pgina
15
Adriana dos Santos Morais

seguintes lines para segmentos de reta, points para pontos isolados, linespoints para segmentos e pontos, ou
dots para pequenos pontos isolados. Gnuplot aceita tambm o estilo impulses.
Cada um dos estilos pode tambm ser fechado dentro de uma lista com alguns parmetros adicionais.
lines aceita um ou dois nmeros: a largura da linha e um inteiro que identifica uma cor. points aceita um ou
dois parmetros; o primeiro parmetro o raio dos pontos e o segundo parmetro um inteiro que para o
Gnuplot seleciona diferentes ajustes e cores para os pontos e em Openmath modifica a cor usada para os
pontos. linesdots aceita at quatro parmetros; os primeiros dois possuem o mesmo significado que em lines e
os ltimos dois possuem o mesmo significado que em points.

Agora vamos construir grficos em 2D e configur-los utilizando as opes acima:

1. plot2d([cos(x)],[x,-%pi,%pi],[y,-1.5,1.5]);

2. plot2d([sin(x),cos(x),tan(x),x^2],[x,-2*%pi,2*%pi],[y,-2,2]);

3. plot2d ([x^2], [x, -2, 2],[y,-0.2,2],[style,[points,3,5]],[legend,"x"],[xlabel,"Eixo das
abscissas"],[ylabel,"Eixo das ordenadas"])$

4. plot2d ([x^2], [x, -2, 2],[y,-0.2,2],[style,[linespoints,1,6,1,5]],[legend,"x"],[xlabel,"Eixo das
abscissas"],[ylabel,"Eixo das ordenadas"])$

PLOTANDO GRFICOS 3D

A sintaxe para a construo de um grfico 3D a seguinte:
Plot3d([expr1, expr2,...,exprn], [x1, mn, mx],[x2,mn, mx],..,[xn,mn,mx],[opes]]

Montaremos o grfico de z = 2^(-u^2+v^2) com u e v variando no intervalo fechado [-3,3] e no
intervalo fechado de [-2,2] respectivamente, e com u sobre o eixo x, e v sobre o eixo y.
Ex.: plot3d (2^(-u^2 + v^2), [u, -3, 3], [v, -7, 7]);
Nesse caso o mouse pode ser usado para rotacionar a visualizao para olhar na superfcie de
diferentes ngulos.
Outro exemplo de modelo de argumento
plot3d ([cos(x)*(3 + y*cos(x/2)), sin(x)*(3 + y*cos(x/2)),
y*sin(x/2)], [x, -%pi, %pi], [y, -1, 1], ['grid, 50, 15]);
Outro exemplo de grfico em 3 d.
f(x, y) := x^2 + y^2;
plot3d (f, [x, -4, 4], [y, -4, 4], [grid, 40, 40])$

Dica: A funo: contour_plot (expr, x_range, y_range, opes, ...). Monta grficos de contorno
(curvas de nvel) de expr sobre a regio x_range por y_range. Quaisquer argumentos adicionais so tratados
da mesma forma que em plot3d.
Ex. F(x, y) := x^3 + y^2;
contour_plot (F, [u, -4, 4], [v, -4, 4]);

EXEMPLOS ADICIONAIS

Para mostrar alguns exemplos de grficos discretos, iniciaremos por inserir as coordenadas de 12
pontos, por dois diferentes cominhos que podem ser usados:
Os pontos a seguir pertencem ao grfico da funo x + 2x.
x:[-10, -8, -6, -4, -2,-1,0,1,2,4,6,8]$
y:[80, 48, 24, 8, 0,-1,0,3,8,24,48,80]$
xy:[[-10,80],[-8,48],[-6,24],[-4,8],[-2,0],[-1,-1],[0,0],[1,3],[2,8],[4,24],[6,48],[8,80]]$


Fevereiro de 2008
[MAXIMA PROJETO: INFORMTICA SOLIDRIA]

Autores: Anderson Tavares Neres
Pgina
16
Adriana dos Santos Morais

Obs.: Podemos criar listas da seguinte maneira:
create_list ([i - .2, i^2], i, 1, 5);
create_list ([i, i^2], i, -5, 5);
create_list ([i + .2, .7*i^2], i, 1, 5);

Para montar o grfico daqueles pontos, unidos com segmentos de reta, usamos:
plot2d([discrete,x,y])$
Iremos agora mostrar o grfico com somente pontos, e ilustrando o uso do segundo caminho de
fornecer as coordenadas dos pontos:
plot2d([discrete, xy], [style, points])$

Tambm podemos deixar que o computador faa uma avaliao de argumentos repassados e exiba
grficos obedecendo a regras definidas.

H(x):= if x < 0 then x^4 - 1 else 1 - x^5 $
plot2d ([H], [x, -2, 2],[y,-2,2],[xlabel,"Eixo das abscissas"],[ylabel,"Eixo das ordenadas"])$

LEITURA COMPLEMENTAR LIMITES, DERIVADAS E INTEGRAIS.

O MAXIMA calcula Limites, Derivadas e Integrais atravs dos recursos apresentados a seguir. O
limite de uma funo f quando a varivel tende a um determinado valor
0
v obtm-se da seguinte forma:
limit(expresso de f, varivel, valor a que tende);
Exemplo:
) 7 x 2 x 3 ( Lim
3
1 x
+ +

limit (3*x^3 + 2*x + 7,x,-1);
Para o clculo da derivada de uma expresso ou funo qualquer se aplica o comando
diff(expresso, varivel). O exemplo a seguir demonstra sua aplicao:
a) 2 5 3 ) (
2 3
+ = x x x x f diff(x^3 - 3*x^2 + 5*x -2,x);
O clculo de uma integral definida em um intervalo feito pelo comando integrate (expresso,
varivel, limite inferior, limite superior); Exemplo:

+ +
2
0
2 3
) 7 2 3 ( dx x x integrate (-3*x^3 + 2*x + 7,x,0,2);

EXERCCIOS SOBRE MATRIZES E SISTEMAS LINEARES

1. Sejam

Calcule:
a) A + B b) AC c) BC d) CD e) DA f) DB g) 3A h) D i) D(2A + 3B)


2. Qual o valor de c23 na multiplicao das matrizes abaixo?



Fevereiro de 2008
[MAXIMA PROJETO: INFORMTICA SOLIDRIA]

Autores: Anderson Tavares Neres
Pgina
17
Adriana dos Santos Morais

3. Dadas

Mostre que AB = AC.

4. Reduza as matrizes forma escalonada reduzida.
a) b)


5. A soluo do sistema :

6. (UFRN) A soma dos quadrados das solues do sistema :


7. (ITA - SP) Se ento temos:

8. (CESGRANRIO) Resolvendo o sistema vemos que x + 2y + 3z vale:


EXERCCIOS DE FIXAO SOBRE PLOTAGEM DE GRFICOS NO MAXIMA

1- Dada a funo f: R R definida por:




Calcular os valores: f(3), f(1), f(0) e f(-10) e exiba os grficos em um mesmo plano obedecendo ao domnio
proposto e o estilo de pontos e linhas.
Fevereiro de 2008
[MAXIMA PROJETO: INFORMTICA SOLIDRIA]

Autores: Anderson Tavares Neres
Pgina
18
Adriana dos Santos Morais

2- Para a funo real f = f(x) definida por:




Esboce os grficos das funes dadas e obedea ao domnio proposto e exiba os grficos com estilo de
pontos.

3. Sejam as funes reais f e g definidas por:

<

=
0 x se cos(x)
0 x se ) (
) (
x sen
x f
E

>
=
2 x se (x) cotag
2 x se (x) tang
) (x g


Esboce o grfico obedecendo s condies apresentadas e com estilo de linhas.














Dicas, dvidas e sugestes sero bem vindas.

Entre em contato com os organizadores da apostila atravs dos emails a seguir:

anderson.primus@gmail.com

drik-morais@hotmail.com

Você também pode gostar