Considere-se a solução da seguinte equação
> solve(x^3=x,x);
Como se pode ver, o resultado é uma sequência de valores separados por vírgulas. Mais geralmente, considere-se a seguinte equação:
> so:=solve(x^3=x+a,x);



Se se quer saber quais são as raízes quando, por exemplo, a=2, basta fazer
> eval(so,a=2);



Em termos numéricos, isto dá
> evalf(%);
Um problema com este tipo de respostas reside no facto de que, por vezes, se quer apenas uma solução e não uma sequência delas (tal como na ilustração do teorema de Lagrange). Para obter isso, é conveniente considerar um objecto básico do Maple: as listas. São sequêncas de expressões enquadradas por parêntesis rectos. Por exemplo:
> lista:=[1,2,4,8,16];
Um elemento de uma lista (o terceiro, por exemplo) pode ser obtido fazendo
> lista[3];
e o número total de elementos de uma lista obtém-se com
> nops(lista);
Por exemplo, a soma dos elementos da lista anterior pode ser obtida fazendo
> sum(lista[i],i=1..nops(lista));
Isto pode ser sistematizado, definindo a função:
> soma:=l->sum(l[k],k=1..nops(l));
![soma := proc (l) options operator, arrow; sum(l[k],...](../imagens/m16/aula1613.gif)
> soma(lista);
Registe-se que existe um comando para produzir sequências:
> seq(2^n,n=0..4);
A lista acima definida também poderia ter sido obtida fazendo
> lista:=[%];
Voltando à questão das soluções de equações: é agora fácil de ver que a primeira das três soluções da equação anterior se obtém fazendo
> evalf(eval([so][1],a=2));
Vai-se agora voltar à ilustração geométrica do teorema de Lagrange. Considere-se a definição:
> Lagrange:=(f,p)->[fsolve(D(f)(x)=(f(p[2])-f(p[1]))/(p[2]-p[1]),
x,p[1]..p[2])][1];

Se se definir
> f:=x->x*sin(x*Pi);
então
> Lagrange(f,[1/2,5/2]);
produz
A função Lagrange também pode ser definida por
> Lagrange:=(f,p)->fsolve(D(f)(x)=(f(p[2])-f(p[1]))/(p[2]-p[1]),
x,p[1]..p[2],maxsols=1);
