Title: Algoritmos Numricos II
1Algoritmos Numéricos (II)
- Clase 13
- Introducción a la Programación
2Resumen de la clase anterior
- Conocimos ejemplos de algoritmos numéricos
- Vimos que los algoritmos numéricos iteran hasta
encontrar una solución - Formas tÃpicas para decidir cuando detenerse
- cuando el error es menor que un cierto valor
- cuando hemos convergido a una solución(xn xn-1)
3Calculo de ex
- Hagamos un programa que calcule ex con una
precisión determinada. Notas - 0.01 de precisión, significará que el error será
menor que 0.01 - El cálculo exacto de ex lo entrega exp(x) que
pertenece a la librerÃa math.h
4Programa que calcula ex
int main() int i 1 double
x, y 1.0, exacto, precision
printf("Ingrese el valor de x ")
scanf("lf", x) printf("Ingrese la
precision para el calculo de e(x) ")
scanf("lf", precision) exacto exp(x)
printf("\nValor exp(x) de ltmath.hgt
20.18f\n\n", exacto) do y y
potencia(x,i)/factorial(i) i
while ((exacto - y) gt precision)
printf("Calculo de e(x) con precision e\n",
precision) printf(" 50.48f\n", y)
printf("Se emplearon d iteraciones\n", (int)
i)
5Calculo de ax
6Función que calcula ax
double a_elevado_x(double a, double x)
double res,resa,base,basem int rep base
x logE(a) basem base rep 2
res base printf("valores de a10.5f y
x10.5f\n",a,x) do resa res
basem basem base res ( basem
/ factorial(rep) ) rep while (res
! resa) return(1res)
7Método de Newton para encontrar ceros de funciones
- Existen ecuaciones cuya solución mediante
técnicas algebraicas tradicionales pueden
resultar muy difÃciles de obtener. Ejemploln x
3x 10.8074
8Newton propuso un método iterativo
9Dos trucos para implementar
- La función irá dentro de un define
- Aproximaremos la función asÃ
10Programa que implementa elMétodo de Newton
- define FUNCTION(x) log(x) 3 x - 10.8074
- double f(double x) return(FUNCTION(x))
- int main()
-
- int i 0 / Contador de iteraciones
/ - double xi, / Valor de Xi /
- xi1, / Valor de Xi1 /
- di, / Para calcular el ði una
sola vez / - precision / Precision que se
empleara / - printf("Ingrese el valor de X1 ")
- scanf("lf", xi1)
- printf("Ingrese la precision para el calculo
de x ") - scanf("lf", precision)
- do
- xi xi1
- di 0.0001 xi
- xi1 xi - di ( f(xi) / (f(xidi)-f(xi))
) - i
- while (fabs(xi1 - xi) gt precision)
11Comentarios sobre precisión
- Ejecutar el siguiente programa
- Cambia el valor de CTE a 10.0f, que pasa?
define CTE 1.0f void main() float a0.0f
while (a!CTE) aa0.2
printf(El valor de a es f\n, a)
printf(El valor final de a es f\n, a )