Subido por Diego Ospina

Polinomios de interpolación

Anuncio
Métodos numéricos Ing. Matilde Montealegre Madero, MSc.
Interpolación y Aproximación Polinomial
POLINOMIOS DE INTERPOLACIÓN
La interpolación se usa cuando es necesario estimar valores intermedios entre datos precisos. El método más
común es la Interpolación Polinomial, la cual consiste en determinar el único polinomio de n-ésimo orden que se
ajusta a m+1 puntos de datos, en donde:
f ( x)  a0  a1 x  a2 x 2 ...am 1 x n 1  am x n
(1)
Luego, para m+1 datos, existe un polinomio de orden n o menor que pasa a través de todos los puntos y el cual
provee una fórmula para calcular los valores intermedios. Ejemplo:
f (x)
Interpolación Lineal: f1(x) es un polinomio de orden 1. Conecta dos puntos, x0 y x1.
x0
x1
x
En donde despejado para y se tiene:
Luego, para el polinomio de primer orden que Conecta los puntos, x0 y x1.
f1 ( x)  f ( x0 ) 
f ( x1 )  f ( x0 )
x  x0 
x1  x0
(2)
f (x)
Interpolación Cuadrática o Parabólica: Conecta 3 puntos: x0, x1, y x2
x0
x1
x2 x
Luego, para el polinomio de segundo orden:
f 2 ( x)  b0  b1 ( x  x0 )  b2 ( x  x0 )( x  x1 )
(3)
Una vez encontrando los valores de los coeficientes de la ecuación general para un polinomio de segundo orden,
se tiene:
b0  f ( x0 )
b1 
(4)
f ( x1 )  f ( x0 )
x1  x0
f ( x2 )  f ( x1 ) f ( x1 )  f ( x0 )

x2  x1
x1  x0
b2 
x2  x0
(5)
(6)
1. POLINOMIO DE INTERPOLACION DE NEWTON
Generalizando para un polinomio de orden n, se requieren m+1 datos: X0, X1, X2, …..Xm. El polinomio de m-ésimo
orden es:
f n ( x)  b0  b1 ( x  x0 )  ...bm ( x  x0 )( x  x1 )...( x  xm 1 )
(7)
Los coeficientes b0, b1,…bm se evalúan usando las siguientes fórmulas
b0  f ( x0 )
b1  f [ x1 , x0 ]
b2  f [ x2 , x1 , x0 ]
(8)
....
bm  f [ xm , xm 1 ,...x1 , x0 ]
Las funciones entre corchetes indican las diferencias finitas divididas. Por ejemplo la primera diferencia finita es:
f [ xi , x j ] 
f ( xi )  f ( x j )
xi  x j
La segunda diferencia finita es:
(8)
f [ xi , x j , xk ] 
f [ xi , x j ]  f [ x j , xk ]
xi  xk
(9)
Similarmente la m-ésima diferencia finita es:
f [ xm , xm 1...x1 , x0 ] 
f [ xm , xm 1...x1 ]  f [ xm 1 , xm  2 ...x1 , x0 ]
xm  x0
(10)
Los valores de b0, b1, …bm son reemplazados en la Ec. 7 para obtener el polinomio de interpolación de Newton,
el cual llamado Polinomio de Interpolación de Diferencias Divididas de Newton.
f n ( x)  f ( x0 )  f [ x1 , x0 ]( x  x0 )  f [ x2 , x1 , x0 ]( x  x0 )( x  x1 )  ...
 f [ xm , xm 1 ,..., x1 , x0 ]( x  x0 )( x  x1 )...( x  xm 1 )
(11)
El error del polinomio de Newton se calcula como:
Rn  f [ xm 1 , xm , xm1...x1 , x0 ]( x  x0 )( x  x1 )....( x  xm )
(12)
2. POLINOMIOS DE INTERPOLACIÓN DE LAGRANGE
Son una simple reformulación de los polinomios de Newton que evitan el cómputo de diferencias divididas. Puede
ser representado como:
m
f n ( x)   Li ( x) f ( xi )
(12)
i0
m
Donde
Li ( x)  
j 0
j i
x  xj
xi  x j
(13)
 representa el “producto de”
Ejemplo: para polinomio de orden 1. n = 1, luego se determina f1(x). Reemplazando en la Ec. 12 y utilizando la
Ec. 13.
m 1
f1 ( x)   Li f ( xi )
i 0
f1 ( x)  L0 f ( x0 )  L1 f ( x1 )
1
L0 ( x)  
j 0
j 0
1
L1 ( x)  
j 0
j 1
x  xj
xi  x j
x  xj
xi  x j

x  x1
x0  x1

x  x0
x1  x0
Luego se tiene:
f1 ( x) 
x  x0
x  x1
f ( x0 ) 
f ( x1 )
x0  x1
x1  x0
(14)
Para un polinomio de segundo orden n = 2, se determina f2(x). Reemplazando en la Ec. 12 y utilizando la Ec. 13
resulta en:
2
f 2 ( x)   Li ( x) f ( xi )
i 0
n
Li ( x)  
j 0
j i
x  xj
xi  x j
2

j 0
j i
x  xj
xi  x j
f 2 ( x)  L0 ( x) f ( xo )  L1 ( x) f ( x1 )  L2 ( x) f ( x2 )
2
L0 ( x)  
j 0
j 0
2
L1 ( x)  
j 0
j 1
2
L2 ( x)  
j 0
j2
x  xj
xi  x j
x  xj
xi  x j
x  xj
xi  x j

x  x1 x  x2

x0  x1 x0  x2

x  x0 x  x2

x1  x0 x1  x2

x  x0 x  x1

x2  x0 x2  x1
Luego se tiene:
f 2 ( x) 
x  x0 x  x2
x  x0 x  x1
( x  x1 ) ( x  x2 )

f ( xo ) 

f ( x1 ) 

f ( x2 ) (15)
( x0  x1 ) ( x0  x2 )
x1  x0 x1  x2
x2  x0 x2  x1
Ejemplo:
La interpolación polinomial es la base de muchos tipos de integración numérica y tiene otras aplicaciones teóricas.
En la práctica a menudo tenemos una tabla de datos {f(xi,yi), i = 0, 1, 2, ...,n}, obtenida por muestreo o
experimentación.
Suponemos que los datos corresponden a los valores de una función f desconocida (a veces es conocida,
pero queremos cambiarla por una función más sencilla de calcular). El “ajuste de curvas” trata el problema de
construir una función que aproxime muy bien estos datos (es decir, a f ). Un caso particular de ajuste de curvas
es la interpolación polinomial: En este caso se construye un polinomio P(x) que pase por los puntos de la tabla.
La interpolación polinomial consiste en estimar f (x*) con P(x*) si x* no está en la tabla pero se puede ubicar
entre estos valores. Una situación típica se muestra en el siguiente ejemplo en el que tenemos datos que relacionan
temperatura con el segundo coeficiente virial1.
Taller de Clase #1: Métodos Numéricos
Ing. Matilde Montealegre Madero, MSc.
POLINOMIOS DE INTERPOLACIÓN DE LAGRANGE
Son una simple reformulación de los polinomios de Newton que evitan el cómputo de diferencias divididas. Puede ser
representado como:
𝑓 (𝑥) = ∑
𝐿 (𝑥)𝑓(𝑥 )
(1)
Donde
𝐿 (𝑥 ) = ∏
(2)
Para interpolar se necesitan n+1 puntos dados por:
Donde n, indica el orden del polinomio usado para interpolar y x es el punto para interpolar. Para interpolar para un
polinomio de orden n se sigue el siguiente Algoritmo:
Organizar información como se muestra en siguiente imagen:
ALGORITMO
1. Dimensionar los vectores X() y Y() donde almacenara
la información para N datos, y las variables necesarias
para el proceso como se indica en imagen.
2. 'llamar a procedimiento que genere de forma
aleatorio en el rango [a,b]
' los valores del vector X()
'almacenar los valores aleatorios en vector X() e
imprimirlos en la hoja (columna B)
'Leer rango de valores [a,b] para generador de
aleatorios
Utilice la FUNCTION
Function generaaletorio(a, b)
generaaletorio = (b - a) * Rnd() + a
End Function
3. Ordenar los valores generados y almacenados en el
vector X() utilizando el siguiente procedimiento.
' ver
https://www.ecured.cu/Ordenamiento_de_burbuja
Procedimiento usando versión lenguaje C
Sub OrdenarBurbuja(VectorOriginal, n)
Dim Temp As Double, i As Integer, j As Integer
For i = 0 To n - 1
For j = i + 1 To n
If VectorOriginal(i) > VectorOriginal(j) Then
Temp = VectorOriginal(i)
VectorOriginal(i) = VectorOriginal(j)
VectorOriginal(j) = Temp
End If
Next j
Next i
End Sub
4. Genere valores para Y() usando la función 𝑓(𝑥) = 𝑒 , e imprimir en la columna D
5. 'evalua posicion Pos donde empieza la tabla de datos dependiendo del orden del polinomio. Buscar en el
Vector X() la posición (Pos) que sea mayor que el x a interpolar. Para el ejemplo de la imagen.
Pos = 8 dado que X(8)= 3.799073339 es mayor que xainterpolar z=3.7
6. Con base en el valor de Pos seleccione los valores a usar en el método de Lagrange para X o, X1, X2…Xn
generando la tabla de datos dependiendo del orden a partir de la posición Pos1. ESTO PARA ASEGURAR QUE
LOS VALORES DE LA TABLA DE DATOS QUE DEPENDEN DEL ORDEN SIEMPRE ESTEN DENTRO DE LOS DATOS
DONDE INTERPOLAMOS (EVITAR VOLADAS DEL VECTOR).
Rem asigna valores a Pos1 de acuerdo con la posición encontrada para Pos.
Rem ver imagen explicativa de los posibles casos
Select Case Pos
Case 0 'first position
Pos1 = 0
Case n 'last position
Pos1 = Pos - Order
Case n - Order To n - 1 'any position between N-order and the one before last
Pos1 = n - Order
Case Else 'any position in between
Pos1 = Pos - 1
End Select
7. 'colocaR information in Xi(), Yi() de acuerdo con lo asignado con la posición asignada a Pos1. Ver imagen.
8. Realizar el procedimiento de Lagrange usando las fórmulas 1 y 2.
De acuerdo con el siguiente algoritmo para el cálculo del polinomio de Lagrange
Se tiene:
La entrada: Número de elementos n es el orden del polinomio
xi y yi son los valores de la tabla de datos dependiendo del orden, X i() y Yi() son vectores de
tamaño del orden.
z es el valor para interpolar
i, j, son las variables para manejar los ciclos for (para)
l (letra ele) para almacenar los Li(x)
valor para almacenar el f(x)
ENTRADA: número de elementos n, vectores xi, yi,li y punto z. SALIDA: valor del polinomio en el punto
z.(valor)
valor=0
para i=0 hasta n
Hacer li=yi
Para j=0 hasta n
Hacer Si i <> j
li=li*(z-xj)/(xi-xj)
fin si
fin para
valor=valor+li
fin para
FIN DEL ALGORITMO
Taller de Clase #2: Métodos Numéricos
Ing. Matilde Montealegre Madero, MSc.
Metodo Polinomio de Interpolacion de Newton
Codigo adaptado de Programa realizado en Lenguaje C
https://www.youtube.com/watch?v=uKiNxSz6PhE
DIFERENCIAS FINITAS DE NEWTON – RESULTADOS EN EXCEL
ALGORITMO:
PASO 1: Seguir los pasos 1 a 7 como se indica en ALGORITMO para interpolar por el metodo de Lagrange.
Seguir estos pasos permiten encontrar los valor Xi(), Yi() como se muestra en la imagen (columna I y J) que
interpolan dado el orden del polinomio entrada en la celda F2.
PASO 2: Crear una matriz bi() del tamano del orden del polinomio bi(orden,orden) para almacenar las
diferencias finitas de Newton (ver imagen de tabla abajo) que permiten encontrar los coeficientes de la
ecuacion b0, b1, b2…bn
En formula General corresponde a:
tabla de diferencias finitas de Newton
Se utilizan las formulas:
Rem CODIGO EN MACROS EN EXCEL - PASOS 1 a 7 COMO SE HIZO EN INTERPOLACION DE LAGRANGE Rem PROCESO DE INTERPOLACION DIFERENCIAS FINITAS DE NEWTON
Rem VALOR INTERPOLADO
Rem xainterpolar
Rem xi() y yi()
Rem se crea una matriz bi(orden,orden) o tabla de diferencias
Dim bi() As Double, columna As Integer
ReDim Preserve bi(orden, orden)
Rem paso 2-A: se inicializa la tabla de diferencias con los valores de yi() e imprime valores para columna
j=0
fila = 5
For i = 0 To orden
bi(i, 0) = yi(i)
Cells(fila, 13).Value = bi(i, 0)
fila = fila + 1
Next i
Rem paso 2-B: se calcula la tabla de diferencias columnas j=1,2,3,4….
For j = 1 To orden
For i = 0 To orden - j
bi(i, j) = (bi(i + 1, j - 1) - bi(i, j - 1)) / (xi(i + j) - xi(i))
Next i
Next j
Rem imprime tabla de diferencias columnas j=1,2,3,4….
columna = 14
For j = 1 To orden
fila = 5
For i = 0 To orden - j
Cells(fila, columna).Value = bi(i, j)
fila = fila + 1
Next i
columna = columna + 1
Next j
PASO 3: Interpola con la variable a interpolar (xainterpolar) y los valores de los xi() para encontrar el valor
interpolado (valor)
Rem paso 3: interpola con xainterpolar y xi()
Rem xainterpolar
Rem define xt para guardar los resultados de (x-x 0)(x-x1)…(x-xm-1) como se indica en formula
Dim xt As Double
Rem inicializa e imprime b0=f(x0) que se encuentra almacenado en bi(0, 0)
valor = bi(0, 0)
Cells(5, 12).Value = valor
Rem calcula valor (valor interpolado para xainterpolar)
xt = 1
For j = 0 To orden - 1
xt = xt * (xainterpolar - xi(j))
valor = valor + (bi(0, j + 1)) * xt
Next j
PASO 4: IMPRIME RESULTADO INTERPOLADO (valor) e imprime ELERROR
Cells(3, 6).Value = valor
'Cells(7, 5).Value = valor
'valor verdadero con la funcion
valorV = f(xainterpolar)
Cells(7, 5).Value = valorV
If (valorV <> 0) Then
elerror = Abs((valorV - valor) / valorV) * 100
End If
Cells(10, 5).Value = elerror
FIN DEL ALGORITMO
ORGANIZAR macros en EXCEL PARA DESARROLLAR POR LOS METODOS DE
LAGRANGE Y DE NEWTON COMO SE INDICA EN IMAGEN. ORGANICE SU
INFORMACION EN UNA HOJA POR METODO.
RESULTADOS METODO DE LAGRANGE. Interpola 𝑓(𝑥) = 𝑒 para x=3.8 con polinomio de orden
2.
CODIGO PARA IMPRIMIR TITULOS
Sub imprimirTitulos()
Cells(1, 1).Value = "a"
Cells(2, 1).Value = "b"
Cells(3, 1).Value = "I"
Cells(3, 2).Value = "aleatorios"
Cells(3, 3).Value = "x(I)"
Cells(3, 4).Value = "y(I)"
Cells(1, 5).Value = "x a interpolar"
Cells(2, 5).Value = "orden polinomio"
Cells(3, 5).Value = "valor interpolado"
Cells(6, 5).Value = "Valor Verdadero"
Cells(9, 5).Value = "Error %"
Cells(3, 8).Value = "TABLAS DE DATOS DEPENDIENDO DEL ORDEN"
Cells(4, 8).Value = "i"
Cells(4, 9).Value = "xi(i)"
Cells(4, 10).Value = "yi(i)"
Cells(1, 7).Value = "Pos"
Cells(2, 7).Value = "Pos1"
Cells(1, 3).Value = "N:total datos"
End Sub
RESULTADOS METODO DE NEWTON Interpola 𝑓(𝑥) = 𝑒 para x=3.8 con polinomio de orden 2.
Descargar