Ejemplo complementario sobre funciones
Transcription
Ejemplo complementario sobre funciones
Ejercicio. El exponencial de un número real a se puede aproximar con la serie: a e = 1 + a + 2 (a) 2 + 3 (a) 3! +…+ k (a) k! +… Elabore una función que calcule esa sumatoria. El número a (la potencia a la cual elevamos el número e) y el número k (la cantidad de términos de la serie) los suministra el usuario. Debe validarse que a sea mayor que 1 y k sea mayor a 2. Ejemplo. Para calcular el valor de quedaría: 1 De modo que e 2 + e2 usando 5 términos de la serie tenemos que a=2 2 + (2)2 2 + (2)3 3! + y k=5. Y la serie (2)4 4! sería igual a la suma de esos términos Necesito elevar el valor a en una determinada potencia (que va en el numerador del término); en el tercer término necesito elevarla a la segunda potencia, en el cuarto término necesito elevarla a la tercera potencia, y así sucesivamente. También necesito calcular el factorial (que va en el denominador del término); en el tercer término necesito el factorial de 2, en el cuarto término necesito el factorial de 3, y así sucesivamente. De modo que necesito crear esas 2 funciones para que me ayuden a calcular el exponencial. Como veremos, una función puede hacer uso de otras funciones. El proceso de dividir un problema en problemas menores (o subproblemas) para encontrar y estructurar soluciones a esos problemas más pequeños se denomina MODULARIZACIÓN. 1 real funcion potencia (E real: x; E entero: n) var entero: i, z, y=1; inicio si (n<0) entonces z = n*(-1) si_no z = n fin_si Para (i=1 hasta z) hacer y = y * x Fin_para si (n<0) entonces y = 1 / y fin_si devolver(y) fin_funcion entero funcion factorial(E entero: x) var entero: i , r=1 Inicio para (i=1 hasta i<=x) hacer r = r * i fin_para devolver (r) Fin_funcion Y ahora procedemos a armar la función exponencial Y un programa que la usa puede ser: ayudándome en esas 2 funciones: real funcion exponencial (E entero: a, k) var entero: i real: suma_terminos, num, den, termino inicio suma_terminos = 1 para (i=1 hasta k-1) hacer num = potencia(a,i) den = factorial(i) termino = num / den suma_terminos = suma_terminos + termino fin_para devolver(suma_terminos) fin_funcion Algoritmo Principal var entero: potencia, terminos real: exp inicio Leer potencia, terminos si ((potencia>1)y(terminos>2)) entonces exp = exponencial(potencia,terminos) Imprimir “el exponencial vale :” , exp si_no Imprimir “parámetros no válidos” Fin_si fin 2