Trimestre 20 I uea Programacin Estructurada 1151038 Grupo

  • Slides: 4
Download presentation
Trimestre: 20 -I uea: Programación Estructurada (1151038) Grupo CTG 03; Horario: Lu-Mie-Vie 8: 30—

Trimestre: 20 -I uea: Programación Estructurada (1151038) Grupo CTG 03; Horario: Lu-Mie-Vie 8: 30— 10: 00 Prof. Gueorgi Khatchatourov, ayudante Alejandra Valencia RESUMENES DEL CURSO Tema : 15 implementación de un método de sacar √ 15 Resumen de la presentación: • Se propone un algoritmo intuitivo para sacar raíz cuadrada • Se programa dicho algoritmo mediante ciclo do…while • La serie de preguntas de control ayuda entender varios aspectos del algoritmo y su implementación

La idea del algoritmo • Si y= √x entonces, obviamente, se cumple y= (x/y

La idea del algoritmo • Si y= √x entonces, obviamente, se cumple y= (x/y +y) /2 • En base de la última ecuación podemos implementar un algoritmo de aproximaciones sucesivas. Es decir, imaginemos que en cada instante i , que representa tiempo discreto, tenemos una aproximación yi al valor de √x. Mediante yi queremos construir una aproximación mejor, yi+1. Para ello interpretemos la fórmula anterior no como una ecuación, sino como la expresión que transforma valor anterior de yi al valor siguiente yi+1: yi+1 = (x/ yi + yi) /2 • Si en el proceso de aplicar muchas veces esta formula, para i=0, 1, 2, … los valores de las aproximaciones sucesivas se tienden a un cierto valor, este se pronuncia como resultado. • Aunque no tenemos la prueba matemática que tal proceso de las aproximaciones sucesivas converge, podemos programarlo y hacer experimentos. • La siguiente diapositiva contiene un código que implementa este método

Código para sacar raiz cuadrada mediante aproximaciones #include "stdafx. h" int main() { char

Código para sacar raiz cuadrada mediante aproximaciones #include "stdafx. h" int main() { char control; do{ float z; // <-- es la entrada, debe ser >=0, //el programa buscara su raíz cuadrada printf("dame zn"); scanf("%f", &z); // <- inicio del código aux = raiz_z; raiz_z = 0. 5 f*(aux + z / aux); } while (aux != raiz_z); printf("raiz cuadrada de %g es %gn", z, raiz_z); printf(" para terminar/continuar oprime 't‘/no 't'n"); control=getch(); float raiz_z = z / 2. f, aux; }while(control!='t'); do{ return 0; } //continuación ->

Comentarios y preguntas de control • ¿Qué variable en el código representa las aproximaciones?

Comentarios y preguntas de control • ¿Qué variable en el código representa las aproximaciones? • ¿Cómo se detecta en el programa la estabilización del proceso de las aproximaciones sucesivas? • ¿Cómo se construye la aproximación inicial? Hagan experimentos con aproximación inicial que se asigna de otras maneras • Modifiquen el código de tal manera que el imprima el número de iteraciones necesarias hasta estabilización de las aproximaciones sucesivas • Modifiquen el código para comparar la salida del algoritmo con la salida de la función sqrt