Enunciado:


Utilizar la relación dada para estimar el valor del número e, sumando los primeros 30 términos de la serie de la siguiente forma:

ejer1


     A) Utilizando los comandos .*, ./, .^  (poco eficiente, recalcula el factorial).
                  
     B) Mediante un bucle for end (poco eficiente ya que recalcula el factorial).
 
     C) Modificando el bucle anterior para sea más eficiente (calcula el factorial iterativamente).

     D) Repetir el bucle anterior pero de forma que el bucle termine (break) si el término a sumar es menor que 10^(-18). ¿Cuántas iteraciones del bucle se hacen? ¿Hay diferencias entre ambas soluciones?

     E) Implementar de forma más elegante el problema anterior usando un bucle while, con la condición de que el término a sumar sea mayor que 10^(-18). Calcular el número de iteraciones.



Solución:


A) n=[0:29]; fact=factorial(n); s=sum(1./fact)

 s =
2.7183

B) s=1; for k=1:29, s=s+1/factorial(k); end

>> s
s =
2.7183

C) s=1; temp=1; for k=1:29, temp=temp/k; s=s+temp; end

>> s
s =
2.7183

D) s=1; temp=1; for k=1:29, temp=temp/k; s=s+temp; if temp<1e-18; break; end; end
>> s
s =
2.7183

 

E) s=0; temp=1; k=1; while(temp>1e-18), s=s+temp; temp=temp/k; k=k+1; end
>> s
s =
2.7183

>> k
k =
21

Se realizan 21 iteracciones

[Cerrar]