Descripción: Clase 8 de Programación, Prof. Gonzalo Müller
Programación
Clase 8. Aplicaciones Numéricas Prof. Gonzalo Müller
[email protected]
Facultad de Ingeniería Universidad Central de Venezuela
Clase Anterior
Funciones Matemáticas en JavaScript. Tradicionales: seno, coseno,… Números Aleatorios.
Metodología para creación de un programa.
Programación – Prof. Gonzalo Müller – Clase 8 – GM - 2
Primeras aplicaciones Numéricas
Algunas áreas de aplicaciones Numéricas: Geometría. Álgebra. Optimización. Cálculo. Estadística.
Programación – Prof. Gonzalo Müller – Clase 8 – GM - 3
Primeras aplicaciones Numéricas
Resolución Numérica: Métodos Secuenciales. Métodos Iterativos.
Métodos Evolutivos
Programación – Prof. Gonzalo Müller – Clase 8 – GM - 4
Primeras aplicaciones Numéricas
Métodos Secuenciales: Se realiza una secuencia de pasos que obtienen la solución del problema. … …
…
…
Solución Programación – Prof. Gonzalo Müller – Clase 8 – GM - 5
Primeras aplicaciones Numéricas
Métodos Iterativos: Se realiza un proceso de búsqueda cíclica por un número fijo de iteraciones. Solución0 k=0 … … … k=k+1
Búsqueda de nueva solución
Soluciónk
V
k f(x0)) x1 = c0 sino Si (f(d0) > f(x0)) x1 = d0 sino DETENER … ck = xk – δ(∆), dk = xk + δ(∆) Si (f(ck) > f(xk)) xk+1 = ck sino Si (f(dk) > f(xk)) xk+1 = dk sino DETENER
Programación – Prof. Gonzalo Müller – Clase 8 – GM - 36
Búsqueda del Máximo o Mínimo de f(x) Procedimiento: Se genera un sucesión de puntos {xk}, {ck} y {dk}, tal que: c0 = x0 – δ(∆), d0 = x0 + δ(∆) Si (f(c0) > f(x0)) x1 = c0 sino Si (f(d0) > f(x0)) x1 = d0 sino DETENER Maximización
…
ck = xk – δ(∆), dk = xk + δ(∆) Si (f(ck) > f(xk)) xk+1 = ck sino Si (f(dk) > f(xk)) xk+1 = dk sino DETENER
Programación – Prof. Gonzalo Müller – Clase 8 – GM - 37
Búsqueda del Máximo o Mínimo de f(x) Procedimiento: Se genera un sucesión de puntos {xk}, {ck} y {dk}, tal que: ck = xk – δ(∆), dk = xk + δ(∆)
xk
Si (f(ck) > f(xk)) xk+1 = ck
xk+1
sino Si (f(dk) > f(xk)) xk+1 = dk sino DETENER
x0 ∆ M Programación – Prof. Gonzalo Müller – Clase 8 – GM - 38
…
xk
Métodos Iterativos Ejemplo: Construir una pagina web con JavaScript para estimar una raíz dado un valor inicial x por Newton para función f(x)=x2
Fase 1: Análisis y Diseño: DES,DRE ó DF, LV y CF. Fase 2: Codificación: página web con Javascript. Programación – Prof. Gonzalo Müller – Clase 8 – GM - 39
Métodos Iterativos
ak, bk , …
…
Reducción de intervalos Programación – Prof. Gonzalo Müller – Clase 8 – GM - 40
ak+1, bk+1, …
Solución de una ecuación f(x) = 0
Método de bisección: Forma parte de los métodos iterativos. Toma en cuenta los cambios de signo de la función.
A
B
Datos de Entrada: [A, B]: El intervalo de búsqueda. M: El número máximo de iteraciones para la búsqueda. Programación – Prof. Gonzalo Müller – Clase 8 – GM - 41
Solución de una ecuación f(x) = 0
Método de bisección: Forma parte de los métodos iterativos. Toma en cuenta los cambios de signo de la función.
a0
b0
Datos de Entrada: [A, B]: El intervalo de búsqueda. M: El número máximo de iteraciones para la búsqueda. Programación – Prof. Gonzalo Müller – Clase 8 – GM - 42
Solución de una ecuación f(x) = 0
Método de bisección: Forma parte de los métodos iterativos. Toma en cuenta los cambios de signo de la función.
a0
Datos de Entrada:
b0 m0
[A, B]: El intervalo de búsqueda. M: El número máximo de iteraciones para la búsqueda. Programación – Prof. Gonzalo Müller – Clase 8 – GM - 43
Solución de una ecuación f(x) = 0
Método de bisección: Forma parte de los métodos iterativos. Toma en cuenta los cambios de signo de la función.
a0
Datos de Entrada:
b0 m0
[A, B]: El intervalo de búsqueda. M: El número máximo de iteraciones para la búsqueda. Programación – Prof. Gonzalo Müller – Clase 8 – GM - 44
Solución de una ecuación f(x) = 0
Método de bisección: Forma parte de los métodos iterativos. Toma en cuenta los cambios de signo de la función.
a0
Datos de Entrada:
a1
b1 m0 m1
[A, B]: El intervalo de búsqueda. M: El número máximo de iteraciones para la búsqueda. Programación – Prof. Gonzalo Müller – Clase 8 – GM - 45
Solución de una ecuación f(x) = 0
Método de bisección: Forma parte de los métodos iterativos. Toma en cuenta los cambios de signo de la función.
a0
Datos de Entrada:
a1
b1 m1
[A, B]: El intervalo de búsqueda. M: El número máximo de iteraciones para la búsqueda. Programación – Prof. Gonzalo Müller – Clase 8 – GM - 46
Solución de una ecuación f(x) = 0 Solución: x ∈ [aM, bM] Condición de uso: f(A) > 0 y f(B) < 0 o viceversa Garantiza un cruce de f(x) por el eje x Procedimiento: Se genera un sucesión de puntos {ak},{bk} y {mk}, tal que: a0 = A , b0 = B, m0 = (a0 + b0)/2 Programación – Prof. Gonzalo Müller – Clase 8 – GM - 47
Solución de una ecuación f(x) = 0 a1 Si (Signo(f(b0)) == Signo(f(m0))) a1 = a0 , b1 = m0 b1 sino a1 = m0 , b1 = b0 m m1 = (a1 + b1)/2 1
… ak Si (Signo(f(bk)) == Signo(f(mk))) ak+1=ak, bk+1=mk b sino ak+1=mk, bk+1=bk k
mk
mk+1 = (ak+1 + bk+1)/2 … Programación – Prof. Gonzalo Müller – Clase 8 – GM - 48
Solución de una ecuación f(x) = 0 Procedimiento: Se genera un sucesión de puntos {ak},{bk} y {mk}, tal que:
ak bk mk
Si (Signo(f(bk)) == Signo(f(mk)))
ak+1
ak+1=ak, bk+1=mk
bk+1
ak+1=mk, bk+1=bk
mk+1
sino mk+1 = (ak+1 + bk+1)/2
A, B M Programación – Prof. Gonzalo Müller – Clase 8 – GM - 49
…
aM,bM
Solución de una ecuación f(x) = 0 Procedimiento: Se genera un sucesión de puntos {ak},{bk} y {mk}, tal que:
ak bk mk
Si (Signo(f(bk)) == Signo(f(mk)))
ak+1
ak+1=ak, bk+1=mk
bk+1
ak+1=mk, bk+1=bk
mk+1
sino mk+1 = (ak+1 + bk+1)/2
A, B M Programación – Prof. Gonzalo Müller – Clase 8 – GM - 50
…
mM
Búsqueda del Máximo o Mínimo de f(x)
Búsqueda de Sección Dorada: Se realiza proceso de búsqueda iterativa. A
B
Datos de Entrada: [A, B]: El intervalo de búsqueda. M: El número máximo de iteraciones para la búsqueda. Programación – Prof. Gonzalo Müller – Clase 8 – GM - 51
Búsqueda del Máximo o Mínimo de f(x)
Búsqueda de Sección Dorada: Se realiza proceso de búsqueda iterativa. a0 c0 d0
b0
Datos de Entrada: [A, B]: El intervalo de búsqueda. M: El número máximo de iteraciones para la búsqueda. Programación – Prof. Gonzalo Müller – Clase 8 – GM - 52
Búsqueda del Máximo o Mínimo de f(x)
Búsqueda de Sección Dorada: Se realiza proceso de búsqueda iterativa. a0 c0 d0
Datos de Entrada:
a1
b0
b1
[A, B]: El intervalo de búsqueda. M: El número máximo de iteraciones para la búsqueda. Programación – Prof. Gonzalo Müller – Clase 8 – GM - 53
Búsqueda del Máximo o Mínimo de f(x)
Búsqueda de Sección Dorada: Se realiza proceso de búsqueda iterativa. a0
Datos de Entrada:
a1
b0
d1
b1
[A, B]: El intervalo de búsqueda. M: El número máximo de iteraciones para la búsqueda. Programación – Prof. Gonzalo Müller – Clase 8 – GM - 54
Búsqueda del Máximo o Mínimo de f(x) Solución: x ∈ [aM, bM] Condición de uso: f convexa | x ∈ [A, B] Sección Dorada r =
5 − 1 2
2
Programación – Prof. Gonzalo Müller – Clase 8 – GM - 55
Búsqueda del Máximo o Mínimo de f(x) Procedimiento: Se genera un sucesión de puntos {ak},{bk},{ck} y {dk}, tal que: a0 = A, b0 = B, c0 = a0 + r(b0– a0), d0 = b0 – r(b0– a0) … ak Si (f(ck) > f(dk)) ← Maximización bk
ak+1= ak, bk+1= dk, dk+1= ck, ck+1= ak + r(dk– ak)
ck sino d ak+1= ck, bk+1= bk, ck+1 = dk, dk+1= bk – r(bk– ck) k
… Programación – Prof. Gonzalo Müller – Clase 8 – GM - 56
Búsqueda del Máximo o Mínimo de f(x) Procedimiento: Se genera un sucesión de puntos {ak},{bk},{ck} y {dk}, tal que:
ak bk ck dk
Maximización
ak+1
Si (f(ck) > f(dk)) ak+1= ak, bk+1= dk, dk+1= ck, … sino ak+1= ck, bk+1= bk, ck+1 = dk, …
A, B M Programación – Prof. Gonzalo Müller – Clase 8 – GM - 57
bk+1 ck+1 dk+1 …
ak,bk
Búsqueda del Máximo o Mínimo de f(x) Procedimiento: Se genera un sucesión de puntos {ak},{bk},{ck} y {dk}, tal que:
ak bk ck dk
Maximización
ak+1
Si (f(ck) > f(dk)) ak+1= ak, bk+1= dk, dk+1= ck, … sino ak+1= ck, bk+1= bk, ck+1 = dk, …
A, B M Programación – Prof. Gonzalo Müller – Clase 8 – GM - 58
bk+1 ck+1 dk+1 …
mk
Métodos Iterativos Ejemplo: Construir una pagina web con JavaScript para estimar una raíz en un intervalo A y B por Bisección para función f(x)=x2
Fase 1: Análisis y Diseño: DES,DRE ó DF, LV y CF. Fase 2: Codificación: página web con Javascript. Programación – Prof. Gonzalo Müller – Clase 8 – GM - 59
Ejercicios 8. Construir un programa en Javascript para: a) Calcular la integral entre A y B utilizando el teorema fundamental del cálculo, para la siguiente función: 2 4 x − sen (x) Fase 1: Análisis y Diseño: DES, DRE ó DF, LV y CF. Señalar estructuras, acumuladores y contadores, inicialización, acumulación y conteo. Fase 2: Codificación: pagina Web con JavaScript. Programación – Prof. Gonzalo Müller – Clase 8 – GM - 60
Ejercicios 8. Construir un programa en Javascript para: b) Calcular la integral entre A y B utilizando la Suma de Riemann por Punto Medio y el teorema fundamental del cálculo y compare, para la siguiente función: 2 4 x − sen (x) Fase 1: Análisis y Diseño: DES, DRE ó DF, LV y CF. Señalar estructuras, acumuladores y contadores, inicialización, acumulación y conteo. Fase 2: Codificación: pagina Web con JavaScript. Programación – Prof. Gonzalo Müller – Clase 8 – GM - 61
Ejercicios 8. Construir un programa en Javascript para: c) Estimar una raíz en un intervalo A y B por Newton para la siguiente función: 2
4
x − cos (x) Fase 1: Análisis y Diseño: DES, DRE ó DF, LV y CF. Señalar estructuras, acumuladores y contadores, inicialización, acumulación y conteo. Fase 2: Codificación: pagina Web con JavaScript. Programación – Prof. Gonzalo Müller – Clase 8 – GM - 62
Ejercicios 8. Construir un programa en Javascript para: d) Estimar una raíz por Bisección en un intervalo A y B para la siguiente función: 2
4
x − cos (x) Fase 1: Análisis y Diseño: DES, DRE ó DF, LV y CF. Señalar estructuras, acumuladores y contadores, inicialización, acumulación y conteo. Fase 2: Codificación: pagina Web con JavaScript. Programación – Prof. Gonzalo Müller – Clase 8 – GM - 63
Ejercicios 8. Construir un programa en Javascript para: e) Estimar un máximo en un intervalo A y B por 1+1 para la siguiente función: 2
4
x − cos (x) Fase 1: Análisis y Diseño: DES, DRE ó DF, LV y CF. Señalar estructuras, acumuladores y contadores, inicialización, acumulación y conteo. Fase 2: Codificación: pagina Web con JavaScript. Programación – Prof. Gonzalo Müller – Clase 8 – GM - 64
Ejercicios 8. Construir un programa en Javascript para: f) Estimar un máximo en un intervalo A y B por Sección Dorada para la siguiente función: 2
4
x − cos (x) Fase 1: Análisis y Diseño: DES, DRE ó DF, LV y CF. Señalar estructuras, acumuladores y contadores, inicialización, acumulación y conteo. Fase 2: Codificación: pagina Web con JavaScript. Programación – Prof. Gonzalo Müller – Clase 8 – GM - 65
Ejercicios 8. Construir un programa en Javascript para: g) Dado el siguiente método Iteración de punto Fijo: Método para resolver f(x)=x
xk
xk+1
xk+1 = f(xk)
x0 M
…
Condición de uso: |f´(x)| < 1 y f, f´ continuas | x ∈ [A, B] Programación – Prof. Gonzalo Müller – Clase 8 – GM - 66
xM
Ejercicios Estimar una solución dado un valor inicial x para:
x 2 − cos 4 (x) = x Fase 1: Análisis y Diseño: DES, DRE ó DF, LV y CF. Señalar estructuras, acumuladores y contadores, inicialización, acumulación y conteo. Fase 2: Codificación: pagina Web con JavaScript.
Programación – Prof. Gonzalo Müller – Clase 8 – GM - 67
Resumen
Algunas aplicaciones numéricas: Métodos Secuenciales
Sucesión, Sumatoria y Productoria. Estadística Descriptiva: Media, Varianza, Regresión. Integración: Suma de Riemann.
Métodos Iterativos
Solución de una ecuación f(x) = 0: Newton
Métodos Evolutivos
Búsqueda del Máximo o Mínimo de f(x): 1 + 1.
Métodos Iterativos – Reducción de Intervalos
Solución de una ecuación f(x) = 0: Bisección. Búsqueda del Máximo o Mínimo de f(x): Sección Dorada. Programación – Prof. Gonzalo Müller – Clase 8 – GM - 68