/* wxMaxima 0.7.2 http://wxmaxima.sourceforge.net
Maxima 5.12.0 http://maxima.sourceforge.net
Using Lisp GNU Common Lisp (GCL) GCL 2.6.8 (aka GCL)
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.

/*
Curso "Maxima Para Exatas" - 2a Aula parte 2, 04/06/2007

/*
Mais detalhes de definição de funções e cálculo de valores numéricos :

/*
Definição de força usando uma variável "F" em termos de duas outras variáveis
indefinidas, "m" e "a". É uma aplicação da 2a lei de Newton :

(%i1) F: m*a;

Result

/*
Definição de força usando uma variável "F" em termos de duas outras variáveis
indefinidas, "m" e "a". É uma aplicação da 2a lei de Newton :

/*
Se definimos uma valor numérico para "a", global :

(%i2) a:9.81;

Result

/*
Tal definição não repercurte na definição de "F", que continua mostrando "m*a" :

(%i3) F;

Result

/*
O comando '' (apóstrofo seguido de apóstrofo, tal caracter se encontra ao lado da
tecla "1" dos teclados usuais) força a reavaliação de expressões, aqui a definição
global de "a" é usada :

(%i4) ''F;

Result

/*
Aqui definimos "S" como sendo um somatório usando uma função ainda indefinida
"g(i,x)", com i variando de 0 a 6. Vide help de "sum" para maiores detalhes dessa
função que calcula somatórios.

(%i5) S : sum(g(i,x),i,0,6);

Result

/*
Agora definimos a função "g(i,x)", onde na verdade "i" e "x" são variáveis mudas, i.e.,
porém ser outras que não afetariam a definição :

(%i6) g(i,x):=x^i/i!;

Result

(%i7) g(3,x);

Result

(%i8) g(3,sin(y));

Result

(%i9) g(5,g(2,x));

Result

/*
O valor de "S" retorna "g(i,x)" indefinido, pois quando "S" foi definida não havia
definição para "g(i,x)" :

(%i10) S;

Result

/*
A solução é mandar reavaliar "S" usando o comando '' (apóstrofo seguido de apóstrofo) :

(%i11) ''S;

Result

/*
Note que a definição de "S" não foi alterada e a reavaliação ocorreu somente na
linha acima :

(%i12) S;

Result

/*
Agora definimos "S2" como sendo um somatório usando uma função já definida
"g(i,x)", logo a definição de "g(i,x)" será usada :

(%i13) S2 : sum(g(i,x),i,0,6);

Result

/*
Outra forma é definir "S3" usando "S" reavaliada tal que a definição de "g(i,x)"
será usada :

(%i14) S3:''S;

Result

/*
Antes "x" era uma incógnita, agora atribuímos 1 como seu valor :

(%i15) x:1;

Result

/*
"S" continua mostrando "x" como incógnita, pois quando "S" foi definida, "x" não era
definida :

(%i16) S;

Result

/*
Se "S" é reavaliada, as definições de "g(i,x)" e "x" são então utilizadas para
retornar um número :

(%i17) ''S;

Result

/*
O comando "numer" força o cálculo numérico de expressões matemáticas, usando precisão
de ponto flutuante :

(%i18) %,numer;

Result

(%i19) %pi,numer;

Result

(%i20) %e,numer;

Result

/*
O comando "numer" força o cálculo numérico de expressões matemáticas, usando precisão
de ponto flutuante :

/*
Agora definimos uma força usando uma variável "f" (que é diferente de "F" pois no Maxima
a caixa alta ou baixa diferencia os nomes de variáveis e funções) com duas varíaveis
mudas, "m" e "a". Para tanto se usa :
- parênteses para delimitar as variáveis mudas, separadas por vírgulas;
- ":=" entre o nome da função e a definição da mesma.
A varíavel muda "a" é local, não conflita com a variável global "a" que tem valor
numérico definido.

(%i21) f(m,a):=m*a;

Result

/*
Ao chamarmos a função "f(m,a)", agora a variável global "a" é usada :

(%i22) f(m,a);

Result

(%i23) f(5,g);

Result

/*
Se quisermos exibir valores numéricos com precisão grande, é necessário mudar o valor
default de algarismos da variável global "fpprec", que tem valor default igual a 16 :

(%i24) fpprec:100;

Result

/*
"fpprec" não afeta o comando "numer", mas deve sim ser usado com a função "bfloat" que
calcula números grandes em ponto flutuante :

(%i25) %pi,numer;

Result

(%i26) bfloat(10-%pi^2);

Result

/*
Como visto acima, o "wxMaxima" resume números grandes em ponto flutuante, para evitar
isso basta usar "set_display" com "ascii" no lugar do valor default "xml" (vide
documentação "wxMaxima How-To") :

(%i27) set_display(ascii);

Result

(%i28) bfloat(10-%pi^2);

Result

/*
Note que podemos fazer cálculos com elevadíssima precisão e com grande rapidez :

(%i29) fpprec:1000;

Result

(%i30) bfloat(10-%pi^2);

Result

/*
Retornamos "fpprec" a seu valor default :

(%i31) fpprec:16;

Result

(%i32)


Created with wxMaxima.