Anterior
Índice

Soluções de Polinômios de uma Única Variável

Continuação


Prosseguindo vamos examiar um polinômio de grau 3:

 poli: x^3 + x^2 - 8*x - 12;

O cálculo das raízes está adiante:

sol: solve (poli=0, x);
   [x = 3, x = - 2]

A resposta é novamente escrita como uma lista de duas equações. Sabemos que para uma equação de terceiro grau podemos experar três soluções, então assumimos que uma das soluções é uma raíz duplicada. Qual delas?

Para responder àquela questão, digitamos multiplicities e obtemos essa lista:

m: multiplicities;
    [1, 2]

Isso significa que a primeira equação na lista de soluções tem multiplicidade um, enquanto a segunda solução tem multiplicidade dois.

Para prosseguir, reescrevemos as equações como termos:

termos: map( lambda( [eq], lhs(eq) - rhs(eq)),  sol);
  [x - 3, x + 2]

Agora temos que usar as multiplicidades para formar os fatores corretos:

map(lambda ( [term, exponent], term^exponent), termos, m);
	          2
[x - 3, (x + 2) ]

Dessa vez usamos map com uma função simbólica com dois argumentos. Para tal função, temos também que fornecer duas listas de argumentos.

Agora podemos aplicar multiplicações:

apply("*", %);
                    2
(x - 3) (x + 2)

Isso é um polinômio na forma fatorada. Uma expansão nos fornece o polinômio inicial:

expand(%);
     3    2
x + x - 8 x - 12

É certamente possível colocar todos esses cálculos em uma expressão simples:

expand(apply("*", map( lambda( [eq, exponent], (lhs(eq) - rhs(eq))^exponent),
sol,
multiplicities
) ) );

A expressão mais interna (aqui é o map) é avaliada em primeiro lugar. Isso não ;e surpresa: O resultado do map é necessário para executar o apply e o resultado do apply é necessário para executar o expand.

O que aprendemos:



Anterior
Índice