# Tema CS4. Sucesiones
(Soluciones de los ejercicios propuestos)

En esta relación se usan las siguientes funciones: define, float, 
for...do, if...then...elseif...else, join, makelist, plot2d, rhs, 
simplify_sum, solve, solve_rec y sum. 

## Ejercicio 1

Ejercicio 1.1. La sucesión de Fibonacci está definida como 
   F[0]   = 0,
   F[1]   = 1, 
   F[n+2] = F[n+1]+F[n].
Definir f[n] como la sucesión de Fibonacci. 

f[0] :   0$ 
f[1] :   1$
f[n] := f[n-1]+f[n-2]$

Ejercicio 1.2. Definir la lista l1 cuyos elementos son los 20 primeros
términos de la sucesión de Fibonacci.

l1: makelist([n,f[n]],n,0,20);

Ejercicio 1.3. Calcular el término que ocupa la posición 20 en la sucesión
de Fibonacci. 

f[20];

Ejercicio 1.4. Calcular el término de posición 20 de la sucesión de 
Fibonacci de forma iterativa, usando sólo dos variables: a y b.

a:0$
b:1$
for i:1 thru 20 do (c:a, d:b, a:d, b:c+d)$
b;

Ejercicio 1.5. Definir la sucesión g, que calcule el término n-ésimo de 
la sucesión de Fibonacci de forma iterativa, usando sólo dos variables:
a y b. Usando la función g, calcular el término de posición 20 de la 
sucesión de Fibonacci.

g[n]:= block ([a:0,b:1,c,d], 
   for i:1 thru n do (c:a, d:b, a:d, b:c+d),
   a)$

g[20];

Ejercicio 1.6. Comprobar si se puede  obtener el término 800 de la 
sucesión de Fibonacci mediante alguna de las dos funciones f ó g.

g[800];

f[800];

## Ejercicio 2

Ejercicio 2.1. Definir s[n] como la suma de los n primeros términos de la
sucesión (-1)^(k+1)/k!

s[n] := sum((-1)^(k+1)/k!,k,1,n);

Ejercicio 2.2. Calcular los valores exactos de s[1], s[2], s[5] y s[9].

makelist('s[i]=s[i],i,[1,2,5,9]);

Ejercicio 2.3. Calcular los valores decimales aproximados de s[20] y s[50].

makelist('s[i]=s[i],i,[20,50]), numer;

Ejercicio 2.4. Cargar el paquete simplify_sum y calcular la suma de la 
serie s[n].

load(simplify_sum)$ 
'sum((-1)^(k+1)/k!,k,1,inf) = simplify_sum(sum((-1)^(k+1)/k!,k,1,inf));

## Ejercicio 3

Un banco presta un capital K al t por ciento aunual, que se reembolsa en 
N años, con anualidades x constante. Sea c[0]=K y sea c[n] el capital
pendiente de pagar después de la n-ésima anualidad. Entonces,
c[n+1] = (1+t)*c[n]-x

Ejercicio 3.1. Expresar c[n] de manera explícita en función de n, K, t y x.

load(solve_rec)$
kill(c)$
solve_rec(c[n]=(1+t)*c[n-1]-x,c[n],c[0]=K);

ratsimp(%);

Ejercicio 3.2. Se sabe que c[N]=0. Deducir el valor de x en función de
K, t y N.

 define(c[n],rhs(%));

solve(c[N],x);

Ejercicio 3.3. Calcular el importe de una anualidad, cuando
K = 100000, t = 5,5% y  N = 15.

subst([K=100000,t=5.5,N=15],%);

## Ejercicio 4

Ejercicio 4.1. Definir la función f(x) = x/(3-2x).

f(x) := x/(3-2*x);

Ejercicio 4.2. Definir la sucesión u[n] tal que
   u[0]   = 2
   u[n+1] = f(u[n]) 

u[0] : 2$
u[n] := f(u[n-1])$

Ejercicio 4.3. Calcula u[1], u[2] y u[9].

makelist('u[i]=u[i],i,[1,2,9]);

Ejercicio 4.4. Dibujar, en la misma gráfica, la función f, la recta de 
ecuación y=x y los puntos de coordenada (u[k],f(u[k])) para 0<=k<=15.

puntos : makelist([u[k],f(u[k])],k,0,15)$

wxplot2d([f(x),x,[discrete,puntos]],[x,-9,9],[y,-9,9],
                [style, lines,lines,linespoints],
                [gnuplot_preamble, "set key left top"]);

wxplot2d([f(x),x,[discrete,puntos]],[x,-3,3],[y,-3,3],
                [style, lines,lines,linespoints],
                [gnuplot_preamble, "set key left top"]);

wxplot2d([f(x),x,[discrete,puntos]],[x,-0.5,0.5],[y,-0.5,0.5],
                [style, lines,lines,linespoints],
                [gnuplot_preamble, "set key left top"]);

Ejercicio 4.4. Conjeturar la monotonía de la sucesión u[n] y su limite.

Solución: La sucesión u[n] es monótona decreciente y su límite es 0.

Ejercicio 4.5. Resolver la ecuación f(x)=x. Llamar a las raices a y b.

solve(f(x)=x,x);

a:0$ b:1$

Ejercicio 4.6. Definir la sucesión w[n] = (u[n]-a)/(u[n]-b)

w[n] := (u[n]-a)/(u[n]-b);

Ejercicio 4.7. Calcular los 10 primeros términos de la sucesión w[n].

makelist(w[n],n,0,9);

Ejercicio 4.8. Comprobar que w[n] es una progresión geométrica y calcular
su razón.

Solución: se observa que w[n] es la progresión geométrica de término 
inicial 2 y razón 1/3.

Ejercicio 4.9. Deducir la expresión de u[n] en función de n.

solve((x-a)/(x-b)=2/3^n,x);

Por tanto, u[n] = -2/(3^n-2). Puede comprobarse como sigue

makelist([u[n],-2/(3^n-2)],n,0,5);