unidad iiililia/numerico/iii_interp.pdf · unidad iii - interpolación polinomial de newton en...
TRANSCRIPT
UnidadUnidad IIIIII
- Interpolación Polinomial de Newton en diferencias divididas
- Polinomios de interpolación de Lagrange
Análisis Númerico y Programación
Primavera 2009 LMM1
AproximaciAproximacióónn polinomialpolinomial de Newton en de Newton en diferenciasdiferencias divididasdivididas
Tenemos n+1 datos xi, yi=f(xi)Por esos puntos pasa uno y solo un polinomio de
grado naproximamos a un polinomio de grado n
))...()((...))(()()(
110
102010
−−−−++−−+−+=
nn
n
xxxxxxbxxxxbxxbbxf
Encontramos los coeficientes bi en términos de diferencias divididas
n es el orden de la interpolación
Análisis Númerico y Programación
Primavera 2009 LMM2
0
01111011
],,...,[],...,,[],,...,,[xx
xxxfxxxfxxxxfn
nnnnn −
−= −−
−
f(x) a orden n
],...,,[))...()((...],,[))((
],[)()()(
01110
01210
0100
xxxfxxxxxxxxxfxxxx
xxfxxxfxf
nnn
n
−−−−−++−−+−+=
ji
jiji xx
xfxfxxf
−−
=)()(
],[
ki
kjjikji xx
xxfxxfxxxf
−−
=],[],[
],,[
Con las diferenciasdivididas
Análisis Númerico y Programación
Primavera 2009 LMM3
EstimaciEstimacióónn de errorde error
nn
n
Raxn
afaxaf
axafaxafafxf
+−++−+
−+−+=
)(!
)(...)(!3
)(
)(!2
)(''))((')()(
)(3
)3(
2
1)1(
)()!1(
)( ++
−+
= nn
n axn
fR ξ
))...()(()!1(
)(10
)1(
n
n
n xxxxxxn
fR −−−+
=+ ξ
))...()(](,...,,,[ 1001 nnnn xxxxxxxxxxfR −−−= −
))...()(](,...,,,[ 10011 nnnnn xxxxxxxxxxfR −−−= −+
Serie de Taylor
Análogamentepara nuestro caso
Sustituyendo derivada por diferencia dividida
Residuo
Depende de f(x), si tenemos un datoadicional
PROCEDIMIENTO ITERATIVO error iterativo
Análisis Númerico y Programación
Primavera 2009 LMM4
Fortran no maneja índices <1, corremos los índices por 1
],...,,[))...()((...],,[))((
],[)()()(
121221
12321
12111
xxxfxxxxxxxxxfxxxx
xxfxxxfxf
nnn
n
−−−
−
−−−++−−+−+=n datos
xi, yi=f(xi)
Polinomiogrado n-1
n términos n diferencias divididasEn el término j: productos de diferencias de x ()
es igual a 1 para j=1 producto del término j-1 multiplicado por (x-xj-1)
diferencia dividida f[xj,…,x1]es igual a f(x1) para j=1 tiene j argumentosse calcula con las diferencias del término j-1
Análisis Númerico y Programación
Primavera 2009 LMM5
----------------f[xn,xn-1]f(xn-1)i=n-1----------------------f(xn)i=n
………………
-------…f[x5,x4,x3]f[x4,x3]f(x3)i=3
-------…f[x4,x3,x2]f[x3,x2]f(x2)i=2
f[xn,xn-1, …, x1]
…f[x3,x2,x1]f[x2,x1]f(x1)i=1j=n…j=3j=2j=1
Términos
iij xxjidjidjid
−−−−+
=−+ 1
)1,()1,1(),(
Dat
os
if=n if=n-1 if=n-j+1
Análisis Númerico y Programación
Primavera 2009 LMM6
PseudocPseudocóódigodigo((basadobasado en en ChapraChapra, , adaptadoadaptado parapara Fortran)Fortran)
Subroutine NwtInt(x,y,n,xp,yint,ea)
Local fddn,n
DO FOR i=1,nfddi,1 = yi
END DO
Entrada:arreglos datos x,y; no. de datos y punto de evaluación
Salida: arreglo de yint(i), ea(i): interpolacion y error a orden i-1
Arreglo de diferenciasdivididas, tamaño n x n
INICIA CICLOPrimera columna tiene f(xi)
en renglón iFIN CICLO
Análisis Númerico y Programación
Primavera 2009 LMM7
ConstrucciConstruccióónn de de matrizmatriz
DO FOR j=2,nDO FOR i=1,n-j+1fddi,j = (fddi+1,j-1 - fddi,j-1) / (xi+j-1 -xi)
END DOENDO
xterm= 1yint1=fdd1,1
INICIA CICLOColumna jRenglón i (=1 cuando j=n)Elemento i,j de matriz de
diferencias divididasFIN CICLO
xterm: valor inicial, orden 0yint(1) =f(x1)
Análisis Númerico y Programación
Primavera 2009 LMM8
Suma de Suma de ttéérminosrminos. . CCáálculolculo de de erroreserrores
DOFOR j=2,nxterm=xterm*(xp-xj-1)
yint2=yintj-1 + fdd1,j*xterm
eaj-1= yint2-yintj-1
yintj = yint2endEND NwtInt
INICIA CICLOtérmino de orden jProducto acumulado de
diferenciasa y orden j-1 le suma
término jlo guarda en yint2
Error = valor nuevo –anteriorElemento j de yint tiene valor
interpolado a orden jFIN CICLOFIN NwtInt
Análisis Númerico y Programación
Primavera 2009 LMM9
Ejercicios• Escriba un programa
para estimar el valor de ln 2= 0.6931472,
que utilice la subrutinaanterior.
• En programa principal -leer n datos de un archivo
-escribir erroresestimado y verdadero, la aproximacion hastagrado n-1.
• Utilice la siguientetabla de datos
1.25276303.50.91629072.50.40546411.51.098612331.609437951.791759561.3862944401f(x)= ln xx
Archivo interp_newton.for
Análisis Númerico y Programación
Primavera 2009 LMM10
ResultadosResultados
0.6934390.6938980.6975140.6757220.6287690.5658440.4620980.00000
f(x)yint
---7-0.0004596-0.00361650.02179240.04695330.06292420.10374610.4620980
Errorea
gradoLocalice los resultados de interpolaciónen una gráficaen la que los datos se unancon líneasrectas.¿Qué observa?
Análisis Númerico y Programación
Primavera 2009 LMM11
EjerciciosEjerciciosVerifique queErrores verdadero y estimado son similares
Difieren menos al aumentar el gradoDespués del quinto grado no mejora
sustancialmente la aproximaciónPosición y orden de datos es importante
* la mejoría es lenta si puntos distantes (x=4,6,5)* tener puntos cercanos a x=2 mejora la aproximación
ORDENE LOS DATOS (ASCENDENTE O DESCENDENTE) Y ANALICE EL CAMBIO EN LOS RESULTADOS (mejora?).
Problemas 1 al 5 del Cap. 183, 9 del Cap. 20 de Chapra
Análisis Númerico y Programación
Primavera 2009 LMM12
A medida que aumenta el orden del polinomio, nos acercamos al valor verdadero
Orden 0
Orden 1
Análisis Númerico y Programación
Primavera 2009 LMM13
PolinomiosPolinomios de de interpolaciinterpolacióónn de Lagrangede Lagrange
∑=
=n
iiin xfxLxf
0
)()()(
n+1 datos xi, yi, i=0,1,…,n
∏≠= −
−=
n
jij ji
ji xx
xxxL
0
)(
Escribimos la aproximación como
Donde el producto
Análisis Númerico y Programación
Primavera 2009 LMM14
Notas
• Es solo una reformulación del polinomio de Newton. Ejemplo:
Rescribimos10
0
01
1
01
0101
)()()()(],[xx
xfxx
xfxx
xfxfxxf−
+−
=−−
=
⎟⎟⎠
⎞⎜⎜⎝
⎛−
+−
−+=
−+=
10
0
01
100
0100
)()()()(
],[)()()(
xxxf
xxxfxxxf
xxfxxxfxfn
)()()( 101
00
10
1 xfxxxxxf
xxxxxfn −
−+
−−
==
Sustituyendo
Rearreglando
Análisis Númerico y Programación
Primavera 2009 LMM15
)()()( iii xfxfxL =
∏≠= −
−=
n
jij ji
ji xx
xxxL
0
)(Notar que, dado
Li(x=xi) = 1 y cero para cualquier otro punto.
Entonces para x=xi
Entonces el polinomio de Lagrange es el únicopolinomio que pasa por los n+1 puntos
Análisis Númerico y Programación
Primavera 2009 LMM16
No siempre el orden más alto es el mejor
Entre más alto el orden del polinomio, tiende a oscilar más. Siempre debemos revisar lso datos
Grado más alto
Análisis Númerico y Programación
Primavera 2009 LMM17
Pseudocódigoun solo grado (n-1 si n datos)
Function Lagrange(x,y,n,x0)sum=0DOFOR i=1,n
producto=yiDOFOR j=1,n
IF i≠j THENproducto =
producto*(x0-xj)/(xi-xj)ENDIF
END DOsum = sum + producto
ENDDOLagrange = sum
END Lagrange
x,y arreglos de n datosx0 punto donde se interpolaINICIA CICLO iValor inicial de producto es f(xi)
INICIA CICLO jsi no coincide con jacumula factor en producto
end ifFIN CICLO j
se suma el productoFIN CICLO IValor de funciónes la suma
FIN de función
Análisis Númerico y Programación
Primavera 2009 LMM18