Acciones

Diferencia entre revisiones de «Ejercicios 4: Sucesiones y recursión»

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

(Ejercicio 2.1.)
(Ejercicio 2.3.)
 
(No se muestran 18 ediciones intermedias de 2 usuarios)
Línea 21: Línea 21:
 
  (%i1) f[0] : 0$
 
  (%i1) f[0] : 0$
 
  (%i2) f[1] : 1$
 
  (%i2) f[1] : 1$
  (%i3) f[n] : f[n-1]+f[n-2]$
+
  (%i3) f[n] := f[n-1]+f[n-2]$
  
 
=== Ejercicio 1.2. ===
 
=== Ejercicio 1.2. ===
Línea 36: Línea 36:
  
 
'''Solución:'''
 
'''Solución:'''
 +
(%i52) f[20];
 +
(%o52) 6765
  
 
=== Ejercicio 1.4. ===
 
=== Ejercicio 1.4. ===
Línea 41: Línea 43:
  
 
'''Solución:'''
 
'''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 (<nowiki>a<b</nowiki>) then (a:a+b)
 +
        else (b:a+b))$
 +
        if (a>b) then (a) else (b)$
 +
(%065) 6765
  
 
=== Ejercicio 1.5. ===
 
=== Ejercicio 1.5. ===
Línea 64: Línea 78:
  
 
'''Solución:'''
 
'''Solución:'''
 +
s[1];
 +
s[2];
 +
s[5];
 +
s[9];
  
 
=== Ejercicio 2.3. ===
 
=== Ejercicio 2.3. ===
Línea 69: Línea 87:
  
 
'''Solución:'''
 
'''Solución:'''
 +
(%i98) float(s[20]);
 +
(%o98) 0.63212055882856
 +
 
 +
(%i99) float(s[50]);
 +
(%o99) 0.63212055882856
  
 
=== Ejercicio 2.4. ===
 
=== Ejercicio 2.4. ===
Línea 74: Línea 97:
  
 
'''Solució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 ==
 
== Ejercicio 3 ==
Línea 84: Línea 109:
  
 
'''Solución:'''
 
'''Solución:'''
 +
c[n]:=(1+t)*c[n-1]-x;
  
 
=== Ejercicio 3.2. ===
 
=== Ejercicio 3.2. ===
Línea 94: Línea 120:
  
 
'''Solución:'''
 
'''Solución:'''
 +
solve_rec(c[n]=(1+0.055)*c[n-1]-x,c[n],c[0]=100000);
  
 
== Ejercicio 4 ==
 
== Ejercicio 4 ==
Línea 101: Línea 128:
  
 
'''Solución:'''
 
'''Solución:'''
 +
f[x]:=x/(3-2*x);
  
 
=== Ejercicio 4.2. ===
 
=== Ejercicio 4.2. ===
Línea 106: Línea 134:
  
 
'''Solución:'''
 
'''Solución:'''
 +
u[0]:2$
 +
u[n]:=f[u[n]];
  
 
=== Ejercicio 4.3. ===
 
=== Ejercicio 4.3. ===
Línea 111: Línea 141:
  
 
'''Solución:'''
 
'''Solución:'''
 +
u[1];
 +
u[2];
 +
u[9];
  
 
=== Ejercicio 4.4. ===
 
=== Ejercicio 4.4. ===
Línea 116: Línea 149:
  
 
'''Solución:'''
 
'''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. ===
 
=== Ejercicio 4.5. ===
Línea 121: Línea 156:
  
 
'''Solución:'''
 
'''Solución:'''
 +
limit(u[n],n,inf);
  
 
=== Ejercicio 4.6. ===
 
=== Ejercicio 4.6. ===
Línea 131: Línea 167:
  
 
'''Solución:'''
 
'''Solución:'''
 +
w[n]:=(u[n]-a)/(u[n]-b);
  
 
=== Ejercicio 4.8. ===
 
=== Ejercicio 4.8. ===
Línea 136: Línea 173:
  
 
'''Solución:'''
 
'''Solución:'''
 +
makelist([n,v[n]],n,0,9);
  
 
=== Ejercicio 4.9. ===
 
=== Ejercicio 4.9. ===
Línea 141: Línea 179:
  
 
'''Solución:'''
 
'''Solución:'''
 +
solve_rec(w[n]=(u[n]-a)/(u[n]-b),w[n]);
  
 
=== Ejercicio 4.10. ===
 
=== Ejercicio 4.10. ===
Línea 146: Línea 185:
  
 
'''Solución:'''
 
'''Solución:'''
 +
ratsimp(%);

Revisión actual del 13:07 30 abr 2011

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(%);