# Una inducción con ayuda de Maxima

  FÓRMULA PARA LA SUMA DE UNA PROGRESIÓN GEOMÉTRICA

## Maxima es capaz de obtener la fórmula, si lo vamos dirigiendo

Le decimos la fórmula del término general a(n)

a(n) := a*r^(n-1);

Le pedimos que haga la suma de a(1)+a(2)+...+a(n);
o sea la suma de a(k) cuando k va tomando los valores desde 1 hasta n. 
Y se limita a escribirla; parece no saber hacer la suma. 

sum( a(k), k,1,n );

Si le hubíeramos dado un valor concreto para: a, r y n
habría obtenido la suma de forma inmediata... pero con letras es más delicado.

sum( 3*(1/2)^k, k, 1, 100);

Le decimos que carge una librería adicional destinada a simplificar sumas "con letras"

load(simplify_sum);   

Le decimos de nuevo que haga la suma, y que simplifique el resultado 
   con ayuda de la librería que hemos cargado

sum( a(k), k,1,n );  

simplify_sum( % );       /* Que simplifique el resultado obtenido */

fullratsimp(%);          /* Que simplifique la función racional resultante  */

MAXIMA HA SIDO CAPAZ DE OBTENER LA FÓRMULA QUE NOS HABÍAN PROPORCIONADO.

PERO... CUIDADO:  ¿QUÉ PASA SI r=1?

## Aplicamos el método de inducción para demostrar la fórmula

### Comprobamos que la fórmula vale para n=1

sum(a*r^(k-1), k, 1,1);

'sum(a*r^(k-1), k, 1,1) = sum(a*r^(k-1), k, 1,1);

### Supuesto que la fórmula vale para n se trata de comprobarla para n+1

print("Suponemos que ")$
'sum(a*r^(k-1), k, 1,n) =(a*r^n-a)/(r-1);

print("y sumamos un término más")$
(a*r^n-a)/(r-1)+ a*r^n;

print("simplificamos el resultado para comprobar si es lo que esperábamos")$
fullratsimp( (a*r^n-a)/(r-1)+ a*r^n );

    JUSTO LO QUE ESPERÁBAMOS. OBJETIVO CONSEGUIDO

# Un reto