Upload
gmullerb
View
711
Download
1
Embed Size (px)
DESCRIPTION
Clase 5 de Aplicaciones Numéricas en Investigación de Operaciones, Prof. Gonzalo Müller, [email protected], Facultad de Ingeniería, UCV
Citation preview
Aplicaciones Numéricas en Investigación de Operaciones5
Prof. Gonzalo Müller
Postgrado de Investigación de Operaciones
Facultad de Ingeniería
Universidad Central de Venezuela
Clase AnteriorClase Anterior
� Metodología para resolución de un problema� Algoritmo� Partes de un algoritmo:
� Entrada� Proceso� Salida
� Diagramas Rectangulares Estructurados
Clase AnteriorClase Anterior
� Estructuras básicas � Secuencial.� Selectiva.
� Sencilla� Doble
� Repetitiva.� Hacer Mientras� Mientras
Clase AnteriorClase Anterior
� Estructuras básicas en Matlab:� if … end� if … else … end� while … end
� Expresiones Lógicas� Operadores Relaciónales: <, >, ==, <=, >=, ~=� Operadores Lógicos: &, | , ~
� Scripts
� Tips de eficiencia: Inicialización, Vectorización, Liberación, Opción dummy.
Resolución Numérica de un problema
Datos de problema: A, B, C, D
...
Solución
Enfoque 1
Resolución Numérica de un problema
Datos de problema: A, B, C, D
...
Solución
Enfoque 2
Solución Posible (Profeta)
Resolución Numérica de un problema
� Métodos Secuenciales ó Directos.
� Métodos Iterativos.
�Métodos Evolutivos.
Resolución Numérica de un problema
Solución
Métodos
Directos
Datos
Resolución Numérica de un problema
� Métodos Secuenciales: Se realiza una secuencia de pasos que obtienen la solución del problema.
…
…
Solución
…
…
Resolución Numérica de un problema
Solución
Métodos
Iterativos
Datos
Resolución Numérica de un problema
� Los métodos iterativos parten de una solución inicial que se aproxima a la solución el método procede a mejorar la solución.
� El proceso se repite hasta completar un número definido de iteraciones o hasta obtener un solución aceptable.
� Se requiere:
� Solución inicial.
� Un algoritmo para mejorar la solución.
� Una regla de parada.
Resolución Numérica de un problema
� Métodos Iterativos: Se realiza un proceso de búsqueda cíclica por un número fijo de iteraciones.
…
…
Solución
…
k < NV
k = 0
N: número de iteraciones
k = k + 1Soluciónk
Solución0
Búsqueda de nueva solución
Resolución Numérica de un problema
� Métodos Iterativos: Se realiza un proceso de búsqueda cíclica por un número fijo de iteraciones.
…
…
Solución = SoluciónN
…
k < NV
k = 0
N: número de iteraciones
k = k + 1Soluciónk
Solución0
Búsqueda de nueva solución
Resolución Numérica de un problema
� Métodos Evolutivos: Se realiza un proceso de búsqueda cíclica que parte de una solución inicial que evoluciona hasta una solución aceptable.
� Aunque existe un número fijo de iteraciones el proceso puede detenerse antes al encontrar una solución aceptable.
…
Solución
…
k < N && Solución no aceptable
V
k = k + 1Soluciónk
Resolución Numérica de un problema
� Métodos Evolutivos: Se realiza un proceso de búsqueda cíclica que parte de una solución inicial que evoluciona hasta una solución aceptable.
� Aunque existe un número fijo de iteraciones el proceso puede detenerse antes al encontrar una solución aceptable.
…
Solución = Soluciónk
…
k < N && Solución no aceptable
V
k = k + 1Soluciónk
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 16
Resolución Numérica de un problema
� Iteración: representa una transformación de una solución xk a solución xk+1:
xk+1xk
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 17
Resolución Numérica de un problema
� Iteración: representa una transformación de una solución xk a solución xk+1:
x0 x1 xn
Iteración 1
Iteración 2
Iteración n
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 18
Resolución Numérica de un problema
� Solución Aceptable: Es necesario definir regla de paradas que establezcan si la solución en estudio ha alcanzado un valor el cual se considere suficientemente bueno para finalizar el proceso de búsqueda.
� Distancia alcanza en M iteraciones:
║xk – xk – M║< ε� Distancia relativa en una iteración:
║xk+1 – xk║/║ xk║< ε
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 19
Resolución Numérica de un problema
� Solución Aceptable: Es necesario definir regla de paradas que establezcan si la solución en estudio ha alcanzado un valor el cual se considere suficientemente bueno para finalizar el proceso de búsqueda.
� Distancia alcanza en M iteraciones:
║xk – xk – M║< ε� Distancia relativa en una iteración:
║xk+1 – xk║/║ xk║< ε Error relativo. Si el valor es alto no se considera una buena aproximación a la solución
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 20
Resolución Numérica de un problema
�Mejora en la solución luego de M iteraciones
|f(xk) – f(xk – M)| < ε�Mejora relativa en la solución en una iteración:
|f(xk) – f(xk + 1)| / |f(xk)| < ε� Cercanía a un valor meta M:
|f(xk) – M|< ε� Cercanía relativa a un valor meta M:
|f(xk) – M| / |f(xk)| < ε� etc.
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 21
Algebra clásica
La mayoría de los métodos la utilizan como herramienta básica
Método Tipo Trunca
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 22
Sucesión, Sumatoria, Productoria Directo No
� Sucesión:
� Sumatoria:
� Productoria:
g(N)g(2)g(1)g(k)N
1k
+++=∑=
L
g(N)g(2)g(1)g(k)N
1k
∗∗∗=∏=
L
{ } LL ,g(2)g(1),g(k),X,XX 21k ===
� Construir una función en Matlab que dado la cantidad de términos (N) y la función (g(x)) retorne la sucesión, la sumatoria y la productoria correspondiente.
� Sin utilizar las funciones de Matlab
� Construir una función en Matlab que dado la cantidad de términos (N) y la función (g(x)) retorne la sucesión, la sumatoria y la productoria correspondiente.
� Utilizar las funciones de Matlab: sum, prod.
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 25
Evaluación de un polinomio
P(x) = ∑akxk
Método Tipo Trunca
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 26
∑akxk Directo No
� Forma tradicional:
P(x) = a0 + a1 x1 + a2 x2 + ··· + ak xk + ··· + an xn
� Forma factorizada:
P(x) = a0 +
(a1+(a2+··· (ak+··· (an-2+(an-1+ an x)x)x··· x)x··· x)x)x
Pn-1(x) = an-1 + x Pn(x)
Pn(x)=an
Pn-2(x) = an-2 + x Pn-1(x)
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 27
∑akxk
� Forma factorizada:
� P(x) = P0(x)
Pn(x) = anPk–1(x) = ak–1(x) + x Pk(x)
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 28
∑akxk en Matlab
� polyval: Evalúa un polinomio.
polyval(coeficientes, x)
� x: puede ser un vector o una matriz
Ejemplo:
x2 – 2x + 3
polyval([1 –2 3], 2)
� Construir una función en Matlab que evalué un polinomio dado el vector de coeficientes del polinomio y el valor de x .
� Forma tradicional.
� Forma factorizada.(Sin recursividad)
� Sin utilizar la función de Matlab polyval.
Las funciones tic y toc de Matlab permiten establecer
el tiempo que tomo un conjunto de operaciones
� Construir una función en Matlab que evalué un polinomio dado el vector de coeficientes del polinomio y el valor de x .
� Forma tradicional.
� Forma factorizada.(Sin recursividad)
� Forma factorizada.(Con recursividad)
� Sin utilizar la función de Matlab polyval.
� Dados los siguiente polinomios:
P(x) = 8 + 3x + 5x2 + 3x6
P(x) = 5 – 4x + 9x3 – ½ x5
� Evaluar por ambas formas y polival:� x = 0.3 x = 0.333333333333
� x = 0.1 x = 0.111111111111
� Y comparar:� Cantidad de sumas y multiplicaciones.
� Resultados.
� Dados los siguiente polinomios:
P(x) = 8 + 3x + 5x2 + 3x6
P(x) = 5 – 4x + 9x3 – ½ x5
� Evaluar por ambas formas y polival:� x = 0.3 x = 0.333333333333
� x = 0.1 x = 0.111111111111
� Y comparar:� Cantidad de sumas y multiplicaciones.
� Resultados.
Tradicional:
½ * n (n -1)
multiplicaciones
Factorizada:
n multiplicaciones
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 33
Evaluación de la derivada de un polinomio
P′(x)
P(x) = ∑akxk
Método Tipo Trunca
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 34
P′(x) Directo No
� Partiendo de la forma factorizada:
� 1º Derivada: P′(x) = P′0(x)
P′n(x) = 0
P′k–1(x) = Pk(x) + x P′k(x)
� 2º Derivada: P″(x) = P″0(x)
P″n(x) = 0
P″k–1(x) = 2P′k(x) + x P″k(x)
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 35
P′(x) en Matlab
� polyder: Calcula la derivada de un polinomio.
polyder(coeficientes)
Ejemplo:
(x2 – 2x + 3)′
polyder([1 –2 3])
� Construir una función en Matlab que evalué la un polinomio, su 1º derivada y su 2º derivada partiendo de la forma factorizada dado el vector de coeficientes del polinomio y el valor de x.
� P(x)
� P′(x)
� P″(x)
� Coeficientes
� x
� Construir una función en Matlab que evalué la un polinomio, su 1º derivada y su 2º derivada partiendo de la forma factorizada dado el vector de coeficientes del polinomio y el valor de x.
�Utilizando la función de Matlab polyder y polyval.
� P(x)
� P′(x)
� P″(x)
� Coeficientes
� x
� Construir una función en Matlab que calcule la derivada de un polinomio dado el vector de coeficientes del polinomio.
� Sin utilizar la función de Matlab polyder.
� Coeficientes � Coeficientes
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 39
Raíces de una ecuación cuadrática
a x2 + b x +c = 0
Método Tipo Trunca
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 40
Discriminante Directo No
a x2 + b x +c = 0
2a4acbb
x2 −±−
=
� Construir una función en Matlab que obtenga las raíces de una ecuación cuadrática.
� Sin utilizar las funciones de Matlab para hallar raíces.
� Coeficientes
(Vector)
� Raices
(Vector)
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 42
Raíces de una función
f(x) = 0
Aunque una función puede tener raíces complejas, estas suelen ser de poco interés ya que no tienen significado
físico
Método Tipo Trunca
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 43
Bisección Iterativo No
� Raíces Reales.
� Toma en cuenta los cambios de signo de la función.
� Parte de un intervalo de búsqueda el cual en cada iteración se reduce
� Es el método más confiable. N=ln((b – a)/ε)/ln(2)
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 44
Bisección
� Dato inicial: a{0}, b{0}
x{0} = (a{0} + b{0})/2
� Esquema iterativo:
x{k+1} = (a{k+1} + b{k+1})/2
a{k+1} = x{k} a{k+1} = a{k}
b{k+1} = b{k} b{k+1} = x{k}
signo(f(a{k})) == signo(f(x{k}))
V F
f(a{k}) = 0, f(b{k}) = 0 óf(x{k}) = 0
� Construir una función en Matlab que obtenga las raíces de una función dada utilizando el método de bisección.
Debe retornar:
� raíz
� matriz del proceso:
x{k} f(x{k}) a{k} b{k}
� f(x)
�[a b]
�e
� Raíz
�Matriz proceso
10sen(x)ef(x)
1xf(x)2x
2
−=
−=
Método Tipo Trunca
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 46
Secante Iterativo No
� Raíces Reales.
� Corte con el eje x de una recta estimada como la interpolación entre dos puntos.
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 47
Secante
� Dato inicial:
x{0}, x{1}
� Esquema iterativo:
x{k+1} = x{k} – [f(x(k})(x{k} – x{k – 1})]/[f(x{k}) – f(x{k – 1})]
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 48
Secante
Pros Contras
�Fácil de implementar
� No requiere la derivada de la función.
�Más estable que Newton-Raphson
�Requiere 2 puntos iniciales de estimación
� Construir una función en Matlab que obtenga las raíces de una función dada utilizando el método de Secante. Debe retornar:
� raíz
� matriz del proceso:
x{k} f(x{k}) x{k-1} x{k-2}
10sen(x)ef(x)
1xf(x)2x
2
−=
−=
Método Tipo Trunca
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 50
Newton-Raphson Iterativo No
� Raíces Reales.
� Corte de la tangente al polinomio en el punto de evaluación con el eje x.
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 51
Newton-Raphson
� Dato inicial:
x{0}
� Esquema iterativo:
x{k+1} = x{k} – f(x{k})/f´(x{k})
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 52
Newton-Raphson
� Condición de Convergencia Suficiente y Necesaria:
|f(x)f´´(x)/[f´(x)]2|< 1, ∀x
� Si el polinomio es tangente a el eje x el método puede no converger (f´(x{k}) = 0).
Pros Contras
�Fácil de implementar
�Requiere 1 puntos inicial de estimación
�Más rápido
�Requiere la derivada de la función.
�La función debe ser derivable
�Puede divergir
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 53
Newton-Raphson
� Divergencia del método
� Construir una función en Matlab que obtenga las raíces de una función dada utilizando el método de Newton-Raphson. Debe retornar:
� raíz
� matriz del proceso:
10sen(x)ef(x)
1xf(x)2x
2
−=
−=
x{k-1}f(x{k}) x{k}
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 55
Búsqueda incremental
� Si bien es cierto se puede tener una ideal inicial de la raíz en algunos problemas físicos, no siempre es el caso.
� Se puede definir una malla de estudio dentro de un intervalo de incertidumbre en función de hallar los ceros de la función.
bax
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 56
Búsqueda incremental
1. Se define una malla con intervalos δ
� Si el intervalo es lo suficientemente pequeño es muy probable que contenga una sola raíz.
� Si el intervalo es grande que la separación de las raíces se perderán algunas.
bax
δ
bax
δ
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 57
Búsqueda incremental
2. Se buscan cambios de signos
� Si f(x1) y f(x2) tiene signos opuestos, entonces al menos una raíz se encuentra en el intervalo (x1, x2).
� Raíces dobles no será detectadas.
bax
bax
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 58
Búsqueda incremental
� Algunas singularidades puede confundirse con raíces.
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 59
f(x) en Matlab
� fzero: Determina una raíz de la función partiendo de un valor dado.
fzero(coeficientes, x)
� x: solución inicial.
Ejemplo:
f1(x) = x2 – 2x + 3 = 0
fzero(@f1, 0.5)
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 60
Raíces de un polinomio
∑akxk = 0
Aunque el polinomio puede tener raíces complejas, estas suelen ser de poco interés ya que no tienen significado
físico
Método Tipo Trunca
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 61
Laguerre´s Iterativo No
� Dato inicial:
x{0}
� Esquema iterativo:
[ ])(xQ)nW(x1)(n)Q(x )(xU
)(xU)(xU)(xU
)(xU)(xU)(xU )U(x
)U(xn
xx
{k}2{k}{k}{k}
{k}{k}{k}
{k}{k}{k}{k}
{k}{k}1}{k
−−±=
>
>=
−=
±
+−−
−++
+
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 62
Laguerre´s
Q(x{k}) = P′(x{k})/P(x{k})
W(x{k}) = Q2(x{k}) – P″(x{k})/P(x{k})
Si los coeficientes son reales las raíces
complejas siempre vienen en pares
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 63
División sintética de un polinomio
� En líneas generales estos métodos permiten obtener 1 raíz del polinomio.
� Una vez obtenida esta raíz se procede a eliminarla del polinomio y así obtener un polinomio Q de menor grado:
Q(x) = b0 + b1 x1 + b2 x2 + ··· + bk xk + ··· + bn–1 xn–1
donde:
bn–1 = anbk–1 = rbk + ak
r: raíz
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 64
Regla de Descartes
Sea un polinomio P(x) con coeficientes reales tales que P(0) ≠ 0:
Número de Raíces Positivas es igual al número de cambios de signo de termino a termino o menor a este por un entero par (raíces complejas viene en pares).
Número de Raíces Negativas es igual al número de cambios de signo de termino a termino de P(-x) o menor a este por un entero par.
Los términos de coeficientes nulos no se toman en cuenta
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 65
Regla de Descartes
Ejemplo:
P(x) = 8 + 3x + 5x2 + 3x6↓
0 raíces positivas
P(x) = 5 – 4x + 9x3 – ½ x5↓
3 raíces positivas ó
1 positiva y 2 complejas
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 66
Regla de Descartes
P(x) = x4 – 5x2 + 4↓
2 raíces positivas ó
0 raíces positivas y 2 complejas
P(–x) = x4 – 5x2 + 4↓
2 raíces negativas ó
0 raíces negativas y 2 complejas
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 67
Regla de Descartes
P(x) = x4 – 5x2 + 4↓
2 raíces positivas y 2 raíces negativas ó
2 raíces positivas y 2 raíces complejas ó
2 raíces negativas y 2 raíces complejas ó
4 complejas
� Construir una función en Matlab que obtenga la cantidad de raíces positivas y la cantidad de raíces negativas de un polinomio dado el vector de coeficientes.
� Coeficientes � Cantidad de raíces positivas
� Cantidad de raíces negativas
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 69
∑akxk = 0 en Matlab
� roots: Determina las raíces de un polinomio.
roots(coeficientes)
Ejemplo:
x2 – 2x + 3 = 0
roots([1 –2 3])
� Construir un script en Matlab que calcule todas las raíces reales de un polinomio por bisección utilizando búsqueda incremental.
�El método debe:
�Graficar el polinomio y las soluciones.
�Almacenar en un archivo el gráfico obtenido.
�Almacenar en un archivo las soluciones.
�Almacenar en un archivo las iteraciones:
a{k} tiempob{k}x{k}
� Construir un script en Matlab que calcule todas las raíces reales de un polinomio por Newton-Raphsonutilizando división sintética.
�El método debe:
�Graficar el polinomio y las soluciones.
�Almacenar en un archivo el gráfico obtenido.
�Almacenar en un archivo las soluciones.
�Almacenar en un archivo las iteraciones:
tiempoPk x{k}
� Construir un script en Matlab que calcule todas las raíces reales de un polinomio por Laguerre´sutilizando división sintética.
�El método debe:
�Graficar el polinomio y las soluciones.
�Almacenar en un archivo el gráfico obtenido.
�Almacenar en un archivo las soluciones.
�Almacenar en un archivo las iteraciones:
tiempoPk x{k}
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 73
Resumen
� Resolución Numérica de un problema� Métodos Secuenciales ó Directos.� Métodos Iterativos.
� Métodos Evolutivos.� Iteración.� Solución Aceptable.
� Algebra clásica:� Sucesión, Sumatoria, Productoria.
� Evaluación de un Polinomio: � Forma tradicional, Forma factorizada.� polyval.
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 74
Resumen
� Evaluación de la derivada de un polinomio:
� polyder.
� Raíces de una ecuación cuadrática.
� Raíces de una función:
� Bisección.
� Secante.
� Newton-Raphson.
� Búsqueda incremental.
� fzero.
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 2 – GM – 75
Resumen
� Raíces de un polinomio:
� Laguerre´s.
� División sintética de un polinomio.
� Regla de Descartes.
� roots.