Acciones

Ejercicios 4: Sucesiones y recursión

De Software Libre para la Enseñanza y el Aprendizaje de las Matemáticas (2010-11)

Ejercicio 1

Ejercicio 1.1.

La sucesión de Fibonacci está definida como

<math> f(n) = \left\{

\begin{array}{ll}
  0,             & \mbox{si } n=0, \\
  1,             & \mbox{si } n=1, \\ 
  f(n-1)+f(n-2), & \mbox{si }n>1
\end{array}

\right. </math>

Definir f[n] como la sucesión de Fibonacci.

Solución:

(%i1) f[0] : 0$
(%i2) f[1] : 1$
(%i3) 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.

Solución:

(%i4) l1: makelist ([n,f[n]],n,0,20);
(%o4) [[0,0],[1,1],[2,f[2]],[3,f[3]],[4,f[4]],[5,f[5]],[6,f[6]],[7,f[7]],[8,f[8]],[9,f[9]],
[10,f[10]],[11,f[11]],[12,f[12]],[13,f[13]],[14,f[14]],[15,f[15]],[16,f[16]],[17,f[17]],
[18,f[18]],[19,f[19]],[20,f[20]]]

Ejercicio 1.3.

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

Solución:

(%i52) f[20];
(%o52) 6765

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.

Solución:

Al poder utilizar tan solo dos variables, debemos ir utilizando la de menor valor en cada iteración para almacenar el nuevo 
elemento, de esta forma a y b contienen siempre los dos últimos elementos de la sucesión de forma alterna. 
En todo caso la suma de ambos nos dará el elemento siguiente. El resultado final estará almacenado en la variable de mayor valor.

(%i65) a:0$
       b:1$
       for i step 1 from 2 thru 20 do
       (if (a<b) then (a:a+b)
       else (b:a+b))$
       if (a>b) then (a) else (b)$
(%065) 6765

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.

Solución:

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.

Solución:

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!

Solució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].

Solución: s[1]; s[2]; s[5]; s[9];

Ejercicio 2.3.

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

Solución:

(%i98) float(s[20]);
(%o98) 0.63212055882856
 
(%i99) float(s[50]);
(%o99) 0.63212055882856

Ejercicio 2.4.

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

Solución: load(simplify_sum)$ 'sum((-1)^(k+1)/k!,k,1,n)=simplify_sum(sum((-1)^(k+1)/k!,k,1,n));

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.

Solución: c[n]:=(1+t)*c[n-1]-x;

Ejercicio 3.2.

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

Solución:

Ejercicio 3.3.

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

Solución: solve_rec(c[n]=(1+0.055)*c[n-1]-x,c[n],c[0]=100000);

Ejercicio 4

Ejercicio 4.1.

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

Solución: f[x]:=x/(3-2*x);

Ejercicio 4.2.

Definir la sucesión u[n] tal que <math>u_0 = 2</math> y <math>u_{n+1} = f(u_n)</math>.

Solución: u[0]:2$ u[n]:=f[u[n]];

Ejercicio 4.3.

Calcular u[1], u[2] y u[9].

Solución: u[1]; u[2]; u[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.

Solución: L:makelist([u[k],f(u[k])),k,0,15)$ wxplot2d([f(x),x, [discrete,L]],[x,0,%pi/2],[y,0,2]);

Ejercicio 4.5.

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

Solución: limit(u[n],n,inf);

Ejercicio 4.6.

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

Solución:

Ejercicio 4.7.

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

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

Ejercicio 4.8.

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

Solución: makelist([n,v[n]],n,0,9);

Ejercicio 4.9.

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

Solución: solve_rec(w[n]=(u[n]-a)/(u[n]-b),w[n]);

Ejercicio 4.10.

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

Solución: ratsimp(%);