quarta-feira, 21 de outubro de 2009

Declarando variáveis no maxima

Em funções, vimos que a declaração delas se dá com F(variável independente):=[expressão];
Por exemplo:
F(y):=y^3+5*x;
No caso de variáveis, a declaração delas é assim:
variável:valor;
Por exemplo:
a:2*%pi;

terça-feira, 20 de outubro de 2009

Plotando Gráficos com o Wxmaxima

No último post, eu esqueci de avisar que para chamar o wxmaxima, era necessário digitar:
$wxmaxima

Bom, feito isso, e depois de ter escrito as funções com as quais quer trabalhar (você poderá chamá-las através da linha em que foram escritas), você quererá plotar alguns gráficos.
o comando para isso é: wxplot2d!
Sintaxe para uma função só:
wxplot2d([expressão], [variável,valor inicial, valor final], [xlabel, "rótulo para o eixo-x"], [ylabel, "rótulo para o eixo-y"]);
A expressão pode ser o número para alguma função que você digitou antes, ou criou, ou explicitamente, uma função que você colocou lá na hora.
Exemplos:
1) %i1 sin(x);%o1 sin(x);
%i2 wxplot2d([%o1],[x,0,2*%pi],[xlabel, "ângulo (radianos)"], [ylabel, "sen(ângulo")]); --> plota a função sin(x) no intervalo de 0 a 2pi, rotulando o eixo x de ângulo... e o y de sen(ângulo).
2) wxplot2d([sin(x)],[x,0,2*%pi],[xlabel, "x (rad)"],[ylabel, "sen(x)"]);
Caso queiramos graficar mais de uma função com um único comando, a sintaxe muda só um pouco:
wxplot2d([expressão1, expressão2], [variável, valor inicial, valor final], [xlabel, "rótulo"],[ylabel, "rótulo"]); Lembrando que os rótulos são sempre opcionais.
Aproveitarei para mostrar como definir funções:
Exemplo:
F(x):=sin(x)-x^2;
G(x):=cos(x)+x^3 + e^(-2*x);
wxplot2d([F,G],[x,-100,100],[xlabel," velocidade (m/s)"]);

Maxima e Yacas - Softwares de Apoio Computacional à Álgebra

Depois de passar mais de uma semana desesperado com a prova de Física Nuclear que o professor pediu para fazer em casa, eu entendi o que era para fazer e notei que seria fortemente recomendável utilizar programas como o maxima e o yacas.
Estes programas fazem maravilhas, embora possam ser até limitados dependendo do cálculo.
Eles podem resolver uma integral, uma derivada, achar os zeros de uma equação/função tanto numericamente quanto analíticamente (este último, se possível), e são suficientemente inteligentes para lidar com linguagem simbólica.
Para instalá-los, se seu /etc/apt/sourcs.list estiver configurado, e se sua distribuição for Debian, ou uma Debian-like fazemos:
#apt-get install yacas -->Instala o yacas
#apt-get install maxima wxmaxima xmaxima -->Instala o maxima, e duas interfaces gráficas para ele: wxmaxima e xmaxima
O wxmaxima é uma interface cheio de menus e botões meio auto-explicativos para ficar parecido com concorrentes no Windows, tipo o Maple® e o Mathematica®, embora não seja bonito.
O xmaxima é uma interface feita em tcl/tk mais bonita, embora mais espartana. Ela abre junto com o ambiente onde são digitados os comandos uma espécie de tutorial disponívels na documentação do máxima, estimulando o aprendizado para poder mexer no programa.

Uma interface permite que você mexa "no estilo Windows", ou seja, já faça as coisas sem se aprimorar muito, sem nem saber o que está fazendo, até, de forma intuitiva. A outra faz você apanhar um pouco mas lhe força a aprender mais, o que pode facilitar no futuro, pois você começará a pensar em programar na linguagem e a resolver as coisas de maneira mais complicada, desenvolvendo certa habilidade.
Como eu estava desesperado para fazer a prova do Robilotta, eu fiquei com o wxmaxima, mesmo.

Mesmo assim, há alguns comandos que não aparecem, senão sutilmente nos menus, e dos quais você pode precisar.
Primeiro alguma sobre o ambiente:
%in --> É o prompt, aguardando que você dê algum comando. No wxmaxima, você não precisa se preocupar muito com isso. Há uma caixa de texto onde você coloca os comandos.
O 'i' quer dizer entrada, e o n, é o número da linha em que você está.
Quando você digita um comando, aparece: %on , que quer dizer saída, acompanhada do resultado do comando.
Para escrever expressões matemáticas, simplesmente, escreva-as!
Por exemplo: sin(x)
O resultado será informado como sin(x).
Você pode usar a linha %on nos cálculos da linha n+1 , por exemplo. Até pode definir novas funções e variáveis.

Para achar os zeros de uma função analítica, pode-se fazer:
solve([expressão], [variável]); (colchetes não obrigatórios, utilizei apenas para mostrar a sintaxe.

Ex:
solve(x^2-a,x); As raízes da equação serão retornadas, e a é qualquer valor. Entendeu porque é legal? Não é só para cálculo numérico.

E quando só dá para resolver numericamente?
find_root([expressão],[variável],["chute inicial], ["chute final"]);

Ex:
find_root(exp(-5*r)-5*cos(15*r),r,0.001,1000);