15
CAPITULO II INTERPOLACIÓN Suponemos que sobre eje X está dada una malla con los nodos cuyas abscisas son 1 2 , , , N x x x . Suponemos además que los valores de una función desconocida f x están definidos solamente en estos nodos y forman un conjunto de ordenadas 1 2 , , , N y y y . El problema de la interpolación unidimensional consiste en la construcción de una función f x , la cual satisface las condiciones , 1, 2, , i i f x y i N y además se asume unos valores “razonables” en los puntos entre los nodos dados. El término “razonable” puede variar su significado de problema a problema y es posible que en la mayoría de los casos no pueda definirse en una forma matemáticamente rigurosa. En los casos, cuando las ordenadas i y corresponden a una función matemática suave o son los datos experimentales obtenidos con alta precisión y pueden considerarse libres de los errores, tiene sentido interpolarlos a través de una función suave. Los objetivos de interpolación son múltiples, pero objetivo fundamental consiste en la elaboración de un algoritmo rápido para encontrar los valores de una función fuera de una tabla , i i x y dada. Más corta es la tabla más corta es la función que realiza la interpolación de la función y más rápido pueden calcularse valores de la función. Funciones interpoladoras se utilizan también para calcular las derivadas f x , f x y las integrales. En muchos casos aplicación de métodos computacionales en el tratamiento de la información y de las imágenes se facilita esencialmente al reemplazar las funciones actuales (cuyo cálculo a veces sugiere realizar una gran cantidad de las operaciones) por la función interpolador. Por ejemplo mayoría de las funciones elementales y especiales en el computador están definidas a través de tablas y en los puntos intermedias se calculan a través de fórmulas de interpolación. El punto clave del problema de interpolación consiste en la selección adecuada de una función razonable entre los nodos de la malla. Existe un número infinito de diferentes funciones que pueden conectar los puntos de la función dados solamente en nodos de la malla y nosotros debemos escoger algún criterio para seleccionar solo una entre ellas. Un criterio razonable en términos de suavidad y simplicidad, pudiera ser por ejemplo la sugerencia que la función debe ser analítica y el valor máximo de módulo de la segunda derivada f x dentro del intervalo debe ser mínimo posible, o por ejemplo la función debe ser un polinomio de menor orden posible, u otra condición similar. Más frecuentemente la función interpoladora se construye en la forma de una combinación lineal de funciones elementales n x : 1 N N n n n f x P x C x (2.1) En este caso las funciones n x se llaman funciones de base, el polinomio generalizado N P x se considera como la proyección de la función f x sobre sub-espacio formado con el conjunto de las funciones n x y los coeficientes n C como proyecciones correspondientes. Si, por ejemplo, en calidad de las funciones de base se escogen las funciones de potencias 1 , 1, 2, , n n x x n N (2.2) la función interpoladora es un polinomio de potencias. Si como las funciones de base se escogen las funciones trigonométricas sin , cos , 0,1, 2, , n x nx nx n N (2.3) la función interpoladora es un polinomio trigonométrico. Si el número de los nodos de la malla en el problema de interpolación coincide con el número de funciones de base n x escogidas entonces en la mayoría de los casos los coeficientes n C se definen uniformemente. En realidad la función interpoladora (2.1) debe satisfacer los N condiciones siguientes: 1 , 1, 2, 3, , N N i n n i i n P x C x y i N (2.4) Estas N condiciones corresponden un sistema de ecuaciones algebraicas lineales que zse puede escribir en la siguiente forma matricial:

CAPITULO II INTERPOLACIÓN - …ilia.miscomunidades.com/Numerical methods and Probability/doc... · La interpolación polinomial se consigue si nosotros en la formula (2.1) escogeremos

Embed Size (px)

Citation preview

Page 1: CAPITULO II INTERPOLACIÓN - …ilia.miscomunidades.com/Numerical methods and Probability/doc... · La interpolación polinomial se consigue si nosotros en la formula (2.1) escogeremos

CAPITULO II INTERPOLACIÓN

Suponemos que sobre eje X está dada una malla con los nodos cuyas abscisas son 1 2, , , Nx x x .

Suponemos además que los valores de una función desconocida f x están definidos solamente en estos

nodos y forman un conjunto de ordenadas 1 2, , , Ny y y . El problema de la interpolación unidimensional

consiste en la construcción de una función f x , la cual satisface las condiciones , 1,2, ,i if x y i N

y además se asume unos valores “razonables” en los puntos entre los nodos dados. El término “razonable”

puede variar su significado de problema a problema y es posible que en la mayoría de los casos no pueda

definirse en una forma matemáticamente rigurosa. En los casos, cuando las ordenadas iy corresponden a

una función matemática suave o son los datos experimentales obtenidos con alta precisión y pueden

considerarse libres de los errores, tiene sentido interpolarlos a través de una función suave. Los objetivos

de interpolación son múltiples, pero objetivo fundamental consiste en la elaboración de un algoritmo rápido

para encontrar los valores de una función fuera de una tabla ,i ix y dada. Más corta es la tabla más corta

es la función que realiza la interpolación de la función y más rápido pueden calcularse valores de la función.

Funciones interpoladoras se utilizan también para calcular las derivadas f x , f x y las integrales. En

muchos casos aplicación de métodos computacionales en el tratamiento de la información y de las

imágenes se facilita esencialmente al reemplazar las funciones actuales (cuyo cálculo a veces sugiere

realizar una gran cantidad de las operaciones) por la función interpolador. Por ejemplo mayoría de las

funciones elementales y especiales en el computador están definidas a través de tablas y en los puntos

intermedias se calculan a través de fórmulas de interpolación.

El punto clave del problema de interpolación consiste en la selección adecuada de una función

razonable entre los nodos de la malla. Existe un número infinito de diferentes funciones que pueden

conectar los puntos de la función dados solamente en nodos de la malla y nosotros debemos escoger algún

criterio para seleccionar solo una entre ellas. Un criterio razonable en términos de suavidad y simplicidad,

pudiera ser por ejemplo la sugerencia que la función debe ser analítica y el valor máximo de módulo de la

segunda derivada f x dentro del intervalo debe ser mínimo posible, o por ejemplo la función debe ser

un polinomio de menor orden posible, u otra condición similar.

Más frecuentemente la función interpoladora se construye en la forma de una combinación lineal de

funciones elementales n x :

1

N

N n n

n

f x P x C x

(2.1)

En este caso las funciones n x se llaman funciones de base, el polinomio generalizado NP x se

considera como la proyección de la función f x sobre sub-espacio formado con el conjunto de las

funciones n x y los coeficientes nC como proyecciones correspondientes. Si, por ejemplo, en calidad

de las funciones de base se escogen las funciones de potencias

1, 1,2, ,nn x x n N (2.2)

la función interpoladora es un polinomio de potencias. Si como las funciones de base se escogen las

funciones trigonométricas

sin , cos , 0,1,2, ,n x nx nx n N (2.3)

la función interpoladora es un polinomio trigonométrico.

Si el número de los nodos de la malla en el problema de interpolación coincide con el número de

funciones de base n x escogidas entonces en la mayoría de los casos los coeficientes nC se definen

uniformemente. En realidad la función interpoladora (2.1) debe satisfacer los N condiciones siguientes:

1

, 1,2,3, ,N

N i n n i i

n

P x C x y i N

(2.4)

Estas N condiciones corresponden un sistema de ecuaciones algebraicas lineales que zse puede escribir en

la siguiente forma matricial:

Page 2: CAPITULO II INTERPOLACIÓN - …ilia.miscomunidades.com/Numerical methods and Probability/doc... · La interpolación polinomial se consigue si nosotros en la formula (2.1) escogeremos

1ˆ ˆ, AC Y C A Y (2.5)

Aquí la matriz A y los vectores C y Y son:

1 1 2 1 3 1 1 1 1

1 2 2 2 3 2 2 2 2

1 3 1 3 1 3 3 3 3

1 2 3

ˆ ; ;

N

N

N

N N N N N N N

x x x x C y

x x x x C y

x x x x C y

x x x x C y

A C Y (2.6)

Según las formulas (2.5) y (2.6) el algoritmo de la interpolación en el caso cuando la función interpoladora

se busca en la forma de una combinación lineal (2.4) de las funciones de base n x dadas es muy simple

y consiste en solamente dos pasos: 1) calcular los valores de las funciones de la base en los nodos de la

malla, , , 1,2, .n ix i n N y construir la matriz A y 2) invertir la matriz A y hallar los coeficientes C

multiplicando la matriz inversa por el vector Y formado por valores de la función , 1,2, ,iy i N en los

nodos de la malla. Hay que anotar que este algoritmo se puede realizar solo cuando el determinante de la

matriz A no es igual a cero, es decir ˆdet 0A

Entre otros tipos de funciones interpoladoras con mayor frecuencia se utilizan fracciones continuas

de tipo

0

1

2

N

N

af x P x

xa

xa

a x

(2.7)

donde las incógnitas son los parámetros , 1,2, ,ia i N .

En nuestro curso nosotros consideremos solamente la interpolación polinomial en la cual las funciones de

potencia son seleccionadas como las funciones de base y al final consideremos un caso particular de

interpolación segmentaria con las funciones de base llamadas funciones de spline las cuales se utilizan

ampliamente en los métodos computacionales.

2.1 Interpolación polinomial.

2.1.1 ¿Por qué polinomial?

La clase más importante de interpolación de funciones es el conjunto de los polinomios algebraicos.

Para esto hay varias razones; polinomios es fácil de evaluar directamente, sumar, multiplicar, integrar y

derivar. Por supuesto y otras clases de funciones pueden tener todas las propiedades anteriores y pudiran

utilizarse también para este objetivo. Afortunadamente, hay otra razón para escoger los polinomios

algebraicos a consecuencia el siguiente teorema de Weierstrass: Para cualquiera función f x continua

dentro del segmento ,a b y para cualquier pequeño valor existe un polinomio de orden n n , para

el cual dentro del segmento se cumple la desigualdad max nf x p x

A pesar de que este teorema dice que las funciones pueden aproximarse a través de polinomios estos

polinomios son generalmente de alto grado, tal que es poco práctico el uso de este teorema. Por otra

parte, el teorema de Weierstrass nos dice nada acerca de la existencia de un polinomio de interpolación

satisfactoria para un determinado conjunto de datos , , 1,2, ,i ix y i N y no garantiza de que un

polinomio adecuado se encuentra por medio de un algoritmo práctico. La interpolación polinomial se

consigue si nosotros en la formula (2.1) escogeremos las funciones de base (2.2). En este caso la función

interpoladora es un polinomio del orden N-1

2 11 1 2 3

NN Nf x P x C C x C x C x (2.8)

Page 3: CAPITULO II INTERPOLACIÓN - …ilia.miscomunidades.com/Numerical methods and Probability/doc... · La interpolación polinomial se consigue si nosotros en la formula (2.1) escogeremos

La matriz A en este caso tiene la forma

2 11 1 1

2 12 2 2

2 1

1 . . .

1 . . .ˆ

. . . . . . .

1 . . .

n

n

nn n n

x x x

x x x

x x x

A (2.9)

Y determinante de este matriz es conocido como el determinante de Vandermonde que se calcula en una

forma analítica:

, 1

ˆdet ( )N

i j

i ji j

x x

A (2.10)

Como ningunos dos nodos de la malla 1 2, ... Nx x x no coinciden el determinante no es igual a cero, ˆdet 0A

el sistema ce ecuaciones lineales (2.5) siempre tiene solución única y por eso se puede encontrar un

polinomio interpolador. Sin embargo, cuando el número de nodos es grande sorprendentemente casi

siempre la matriz A es mal condicionada. Es decir, cuando nosotros tratamos encontrar un polinomio

interpoolante global, cualquier pequeño error en los valores dados de la función en los nodos de la malla

conduce a un cambio brusco en el comportamiento de la función interpoladora. En otras palabras unas

variaciones locales muy pequeñas en los datos producen unos cambios fuertes en el comportamiento global

de la función interpoladora. Por esta razón, en los casos cuando los datos pueden tener algunos errores es

preferible usar una interpolación segmentaria (i. e. analizar parte por parte) que una interpolación global.

2.1.2 Formula de Lagrange

Aplicando las formulas (2.5) y teniendo en cuenta que la matriz inversa para este caso según las

formulas (2.9), (2.10) los coeficientes , 1,2, ,iC i N se puede encontrar en la forma analítica y obtener

la siguiente fórmula para interpolador polinomial conocida como interpolador de Lagrange:

1

1

( ) ( )N

N i i

i

P x y x

(2.11

donde:

1 2 1 1

1 2 1 1 1,

( )( )...( )( )...( )( ) ; 1,2, ,

( )( )...( )( )...( )

Nji i N

ii i i i i i i N i i j i j

x xx x x x x x x x x xx i N

x x x x x x x x x x x x

(2.12)

Las funciones ( )i x llamada los factores de Lagrange satisfacen la condición

,( ) ; , 1,2, ,i j i jx i j N (2.13)

La demostración de la fórmula de Lagrange es simple. En realidad, por un lado, existe solo un polinomio

interpolador de orden N-1, y, por otro lado, las formulas (2.1.11)-(2.1.13) definen precisamente el

polinomio de orden N-1, que satisface las condiciones 1( ) , 1,2, ,N k kP x y k N .

A continuación se presenta un ejemplo de aplicación de la interpolación de Lagrange para definir un

polinomio interpolador de orden ne=21 para función sinf x x dentro del intervalo 0 2x . En la

subrutina Fun_lagrnge(xe,ye,ne,x)se define un polinomio interpolador, la cual para un conjunto de los datos

sobre la malla , , 1,2, ,xe i ye i i ne dada en los ne puntos calcula el valor del polinomio Fun_lagrnge

En el programa principal, primero, se calculan los valores de la función sinf x x en 21 puntos de la

malla y después en la segunda parte se calculan los valores de esta misma función en 101 puntos a través

del polinomio de Lagrange y1, función exacta y2, y la discrepancia dy.

Page 4: CAPITULO II INTERPOLACIÓN - …ilia.miscomunidades.com/Numerical methods and Probability/doc... · La interpolación polinomial se consigue si nosotros en la formula (2.1) escogeremos

En la parte derecha se muestran una parte de la tabla de los resultados. Se ve que las discrepancias en los

nodos de la malla se anulan exactamente, es decir polinomio interpolador atraviesa los valores exactos en

los nodos

parameter (ne=21)

dimension xe(ne),ye(ne)

open(1,file='aprox.res')

c Calculo de los valores de la función sobre la malla

do i=1,ne

xe(i)=0.1*(i-1)

x=xe(i)

ye(i)=sin(x)

end do

do i=1,101

x=0.02*(i-1)

c Cálculo de los valores de la funci¢n sobre la malla densa

c y comparación con los valores exactas

y1= Fun_lagrnge(xe,ye,ne,x)

y2=sin(x)

dy=y1-y2

write(1,*) y1,y2,dy

end do

close(1)

stop

end

c---------------------------------------

Function Fun_lagrnge(xe,ye,ne,x)

c Función de interpolación de Lagrange para una función

c definida ye(i) sobre la malla xe(i), i=1,2,3,...,ne

c parámetros de entrada: xe(i), ye(i), ne

c parámetros de salida Fun_lagrnge

dimension xe(ne),ye(ne)

s=0.0

c Cálñculo del factor de Lagrange p

do i=1,ne

p=1.0

do j=1,ne

if(j.ne.i) p=p*(x-xe(j))/(xe(i)-xe(j))

end do

c Cálculo de la suma

s=s+p*ye(i)

end do

Fun_lagrnge=s

return

end

2.1.3 Malla equidistante. Diferencias finitas. Potencia generalizada.

La fórmula de Lagrange se simplifica esencialmente si la malla es equidistante, es decir las separaciones entre

todos los nodos son las mismas e iguales a h. En este caso

1 1 , , 1,2, ,i i ix = x + i h y f x i N (2.14)

Para N valores de la función en N nodos se puede definir N-1 diferencias finitas de primera orden:

1 2 1 2 3 2 1 1 1, , , , , 1,2, , 1N N N i i iy y y y y y y y y y y y i N (2.15a)

x y1 y2 dy 1.000000 8.414710E-01 8.414710E-01 0.000000E+00

1.020000 8.521080E-01 8.521080E-01 0.000000E+00

1.040000 8.624040E-01 8.624042E-01 -1.788139E-07

1.060000 8.723553E-01 8.723555E-01 -1.192093E-07

1.080000 8.819578E-01 8.819578E-01 0.000000E+00

1.100000 8.912074E-01 8.912074E-01 0.000000E+00

1.120000 9.001004E-01 9.001005E-01 -5.960464E-08

1.140000 9.086334E-01 9.086335E-01 -5.960464E-08

1.160000 9.168029E-01 9.168031E-01 -1.788139E-07

1.180000 9.246061E-01 9.246060E-01 1.788139E-07

1.200000 9.320390E-01 9.320391E-01 0.000000E+00

1.220000 9.390993E-01 9.390994E-01 -1.192093E-07

1.240000 9.457840E-01 9.457840E-01 -1.788139E-07

1.260000 9.520903E-01 9.520903E-01 -5.960464E-08

1.280000 9.580159E-01 9.580159E-01 0.000000E+00

1.300000 9.635581E-01 9.635582E-01 0.000000E+00

1.320000 9.687150E-01 9.687151E-01 -5.960464E-08

1.340000 9.734846E-01 9.734845E-01 5.960464E-08

1.360000 9.778647E-01 9.778646E-01 1.192093E-07

1.380000 9.818537E-01 9.818535E-01 1.192093E-07

1.400000 9.854497E-01 9.854497E-01 0.000000E+00

1.420000 9.886520E-01 9.886518E-01 2.384186E-07

1.440000 9.914584E-01 9.914584E-01 0.000000E+00

1.460000 9.938683E-01 9.938684E-01 -5.960464E-08

1.480000 9.958807E-01 9.958808E-01 -1.788139E-07

1.500000 9.974950E-01 9.974950E-01 0.000000E+00

1.520000 9.987102E-01 9.987102E-01 0.000000E+00

1.540000 9.995258E-01 9.995258E-01 -5.960464E-08

1.560000 9.999421E-01 9.999417E-01 3.576279E-07

1.580000 9.999576E-01 9.999576E-01 -5.960464E-08

1.600000 9.995736E-01 9.995736E-01 0.000000E+00

1.620000 9.987891E-01 9.987897E-01 -6.556511E-07

1.640000 9.976053E-01 9.976064E-01 -1.072884E-06

1.660000 9.960229E-01 9.960240E-01 -1.132488E-06

1.680000 9.940417E-01 9.940432E-01 -1.490116E-06

1.700000 9.916649E-01 9.916648E-01 0.000000E+00

1.720000 9.888918E-01 9.888898E-01 2.026558E-06

1.740000 9.857211E-01 9.857192E-01 1.907349E-06

1.760000 9.821548E-01 9.821543E-01 4.768372E-07

1.780000 9.781977E-01 9.781966E-01 1.072884E-06

1.800000 9.738477E-01 9.738476E-01 0.000000E+00

1.820000 9.691020E-01 9.691091E-01 -7.092953E-06

1.840000 9.639770E-01 9.639830E-01 -5.960464E-06

1.860000 9.584697E-01 9.584713E-01 -1.609325E-06

1.880000 9.525889E-01 9.525762E-01 1.263618E-05

1.900000 9.463001E-01 9.463001E-01 0.000000E+00

1.920000 9.397157E-01 9.396455E-01 7.027388E-05

1.940000 9.323897E-01 9.326150E-01 -2.253056E-04

1.960000 9.250655E-01 9.252115E-01 -1.460910E-04

1.980000 9.172342E-01 9.174380E-01 -2.037287E-04

2.000000 9.092974E-01 9.092974E-01 0.000000E+00

Page 5: CAPITULO II INTERPOLACIÓN - …ilia.miscomunidades.com/Numerical methods and Probability/doc... · La interpolación polinomial se consigue si nosotros en la formula (2.1) escogeremos

Similarmente se definen N-2 diferencias finitas de segunda orden 2 2 2

1 2 1 3 2 1 2 3 2 4 3 2 2 1 2

21 2 1

2 , 2 , , 2

2 , 1,2, , 2

N N N N

i i i i i i

y y y y y y y y y y y y y y y y

y y y y y y i N

(2.15b)

De la manera similar se definen las diferencias finitas de siguientes órdenes, tercera, cuarta, etc., utilizando las relaciones de recurrencia:

11 , 1,2, , 1, 1,2, ,n n n

i i iy y y n N i N n (2.16)

Para obtener una formula compacta que relaciona una diferencia finita de un orden arbitrario con los valores de la función

en los nodos introduciremos un operador de traslación T , que se define a través de la siguiente fórmula:

1ˆ ˆ, n

i i i i i i nTf x f x h f x T f x f x n h f x (2.17)

Utilizando esta definición y el método de la inducción matemática se puede demostrar la siguiente relación una diferencia

finita de un orden arbitrario con los valores de la función en los nodos:

1 2

( 1) ˆ( 1) 11! 2!

nn n

i i n i n i n i i

n n ny y y y y T y

(2.18)

Análogamente se obtiene la expresión para el valor de la función ny en cualquier nodo con el número n a través del valor

de la función en el primer nodo 1y y de los valores de las diferencias finitas 1k y ( k=0,1,2,...,n) correspondientes al

primer nodo 1x Siguiendo el procedimiento de la inducción matemática y partiendo de la definición de la diferencia finita

del primer orden 1 2 1y y y se deduce 2 1 1y y y . Después partiendo desde la definición de la diferencia finita de

segundo orden 21 3 2 1 3 1 1 12 2y y y y y y y y se obtiene 2

3 1 1 12y y y y . Siguiendo, este

procedimiento se obtiene la siguiente formula general:

21 1 1 1 1 1

( 1)(1 )

1! 2!

n nn

n n ny y y y y y

(2.19)

Para la deducción de la formula correspondiente para la interpolación en el caso de muchos nodos equidistantes hay que introducir la definición de la potencia generalizada:

La expresión:

1 1 2 3 1 1 1 1( )( ) ( ) ( )( 2 ) ( 1)n

nx x x x x x x x x x x x x x h x x h x x n h (2.20)

Por definición: 0 1 2 3

1 1 1 1 1 1 1 1 11; ; ( ); ( )( 2 );x x x x x x x x x x x x h x x x x x h x x h

4

1 1 1 1 1( )( 2 )( 3 )x x x x x x h x x h x x h etc. Es evidente que para h=0 la definición de potencia

generalizada coincide con la definición de potencia ordinaria. La potencia generalizada tiene una propiedad muy importante: La fórmula para su diferencia finita es muy parecida a la fórmula correspondiente de la derivada de la potencia ordinaria; es decir:

11 1

n nx x h n x x

(2.21)

Esta igualdad se deduce a partir de la definición de la diferencia finita:

1 1 1

1 1 1 1 1 1 1

( )

( ) ( )( 2 ) ( 2) ( ) ( 1)

n nnx x x x h x x

x x h x x x x h x h x x n h x x x x h x x n h

11 1 1 1 1 1( ) ( 2) ( ) ( 1)

nx x x x h x x n h x x h x x n h nh x x

2.1.4 Polinomio interpolador para malla equidistante. Formula de Newton.

La fórmula (2.21) puede utilizarse para hallar el polinomio interpolador sobre una malla equidistante.

Siguiendo al método propuesto por Newton, buscaremos un polinomio interpolado de orden N-1 sobre una

malla equidistante (2.14) en la forma:

Page 6: CAPITULO II INTERPOLACIÓN - …ilia.miscomunidades.com/Numerical methods and Probability/doc... · La interpolación polinomial se consigue si nosotros en la formula (2.1) escogeremos

1 0 1 1 2 1 2 3 1 2 3 1 1 2 1N N NP x a a x x a x x x x a x x x x x x a x x x x x x

Usando notación de la potencia generalizada escribiremos esta fórmula en una forma más compacta:

1 2 3 1

1 0 1 1 2 1 3 1 1 1

N

N NP x a a x x a x x a x x a x x

(2.22)

Nuestra tarea consiste en encontrar n coeficientes , 0,1,2, , 1ia i N del polinomio (2.22) que satisfacen

siguiente n condiciones:

1 , 1,2, ,N i iP x y i N (2.23)

Estas n condiciones son equivalentes a otras n condiciones escritas en una forma diferente:

1 1 1 , 0,1,2, , 1m mNP x y m N (2.24)

Sustituyendo 1x x en (2.22) y teniendo en cuenta que según (2.23) y (2.24) para m=0 1 1 1NP x y se

obtiene:

0 1 1 1Na P x y

Para encontrar el siguiente coeficiente 2a calcularemos la diferencia finita de primer orden para el polinomio

(2.22) usando la identidad (2.21)

1 2 2

1 1 2 1 3 1 1 12 3 1N

N NP x a h a x x h a x x N a x x h

Sustituyendo en esta expresión 1x x y teniendo en cuenta que según (2.24) para m=1 1 1 1NP x y se

obtiene

1 1 1!a y h

Ahora para encontrar el siguiente coeficiente 3a calcularemos la diferencia finita de segunda orden para el

polinomio (2.22) usando la identidad (2.21)

1 321 2 3 1 1 12! 2 3 1 2

N

N NP x a h a x x N N a x x h

Sustituyendo en esta expresión 1x x se obtiene

22 1 2!a y h

Siguiendo este procedimiento sucesivamente se encuentran todos los coeficientes del polinomio:

01 1 1! , 0,1,2,3, 1, 0! 1,k

ka y k h k N y y

Finalmente, sustituyendo las expresiones encontrados para los coeficientes en (2.22) se obtiene la formula

para polinomio interpolador de Newton:

2 3 1 11 2 3 11 1 1 1 1

1 1 1 1 1 1 1

01! 2! 3! 1 ! !

N kNN k

N

k

y y y y yP x y x x x x x x x x x x

h h h N h k h

(2.25)

2.2 Interpolación segmentaria.

Hasta ahora, el foco de nuestra discusión ha sido la interpolación de una función dada f sobre una malla dentro de en un intervalo [a, b], por un polinomio en ese intervalo sea a través de la interpolación de Lagrange o interpolación de Newton, o usando otros tipos de funciones de base. Cada una de estas construcciones fue de carácter global, en el sentido de que la aproximación se define por la misma expresión en todo el intervalo [a, b]. Una alternativa y la manera más flexible de aproximar una función f es dividir el intervalo [a, b] global en una serie de subintervalos locales y buscar una aproximación a trozos por polinomios de grado más bajo. Tales aproximaciones polinómicas a trozos se llama la interpolación segmentaria. La interpolación segmentaria

más simple puede realizarse a través de polinomio interpolador de Newton (2.25) de ordenes N=2 y N=3

considerando respectivamente subintervalos que incluyen solamente dos nodos de la malla en los extremos

o subintervalos que incluyen dos nodos de la malla en los extremos y uno en el centro. En el primer caso si

en la formula (2.25) tomemos 2N se obtiene la fórmula para interpolador lineal dentro del segmento

1, , 1,2, , 1k kx x k N considerando como el punto inicial , 1,2, , 1kx x k N :

1 11!

kkk k k k k

x xyP x y x x y y y

h h

(2.26)

Page 7: CAPITULO II INTERPOLACIÓN - …ilia.miscomunidades.com/Numerical methods and Probability/doc... · La interpolación polinomial se consigue si nosotros en la formula (2.1) escogeremos

Para realizar una interpolación segmentaria lineal en cualquier punto x dentro del intervalo intervalo [a, b]

inicialmente hay que definir el número k del segmento a través de la relación k Integer x a h . Aquí la

función ta fórmula se utiliza sucesivamente c---------------------------------------

Function Polinomio_Lineal(a,h,ye,ne,x)

c Interpolador lineal para una función en el punto x

c definida ye(i) sobre la malla equidistante xe(i)=a+(i-1)*h, i=1,2,3,...,ne

c parámetros de entrada: inicio de intervalo a ,distancia entre nodos h,

c valores de función en nodos ye(i),número de nodos ne

c parámetro de salida Polinomio_Lineal, valor de la función en el punto x

dimension ye(ne)

c encontrar el número de segmen to donde se ubica el punto x

k=Int((x-a)/h)

c Cálculo de Interpoolador lineal

xk=a+(k-1)*h

Polinomio_Lineal=ye(k)+(ye(k+1)-ye(k))*(x-xk)/h

return

end

Para 2N se obtiene a partir de (2.25) la fórmula para interpolador parabólico o cuadrático:

2

1 2 12 1 2 1 2

21! 2!

k k kk kk k k k k k k k k

x x x x x xy yP x y x x x x y y y y y y

h h h h

(2.27)

c---------------------------------------

Function Polinomio_Cuadratico (a,h,ye,ne,x)

c Interpolador parabolico para una función en el punto x

c definida ye(i) sobre la malla equidistante xe(i)=a+(i-1)*h, i=1,2,3,...,ne

c parámetros de entrada: inicio de intervalo a ,distancia entre nodos h,

c valores de función en nodos ye(i),número de nodos ne

c parámetro de salida Polinomio_Cuadratico, valor de la función en el punto x

dimension ye(ne)

c encontrar el número de segmen to donde se ubica el punto x

k=Int((x-a)/h)

c Cálculo de Interpoolador lineal

xk=a+(k-1)*h

xk1=xk+h

Polinomio_Cuadratico=ye(k)+(ye(k+1)-ye(k))*(x-xk)/h+(ye(k+2)-2*ye(k+1)-ye(k))*(x-xk)(x-xk1)/h**2

return

end

2.2 Interpolación con splines cúbicos

El método considerado anteriormente para realizar la interpolación segmentaria tiene un defecto

esencial relacionada con imposibilidad en el marco de este método garantizar alguna suavidad de la función

controlada. Si uno quiere realizar una interpolación segmentaria con una suavidad de la función

interpolador controlada en este cso se puede utilizar funciones Splines.

El término "spline" hace referencia a una amplia clase de funciones que son utilizadas en aplicaciones

que requieren la interpolación de datos, o un suavizado de curvas. Los splines son utilizados para trabajar

tanto en una como en varias dimensiones. Las funciones para la interpolación por splines normalmente se

determinan como minimizadores de la aspereza sometidas a una serie de restricciones.

En el subcampo matemático del análisis numérico, un spline es una curva definida en cada

segmento mediante polinomios. En los problemas de interpolación, se utiliza a menudo la interpolación

mediante splines porque da lugar a resultados similares requiriendo solamente el uso de polinomios de bajo

grado, evitando así las oscilaciones, indeseables en la mayoría de las aplicaciones, encontradas al interpolar

mediante polinomios de grado elevado.

Para el ajuste de curvas, los splines se utilizan para aproximar formas complicadas. La simplicidad de

la representación y la facilidad de cómputo de los splines los hacen populares para la representación de

curvas en informática, particularmente en el terreno de los gráficos por ordenador.

Page 8: CAPITULO II INTERPOLACIÓN - …ilia.miscomunidades.com/Numerical methods and Probability/doc... · La interpolación polinomial se consigue si nosotros en la formula (2.1) escogeremos

A continuación nos referiremos con el término "spline" a su versión restringida en una dimensión y

polinomial, que es la más comúnmente utilizada. Volveremos a analizar la interpolación segmentaria en

términos de función de spline (es decir, una interpolación con suavidad controlada). Iniciamos como

siempre con una interpolación más simple:

Interpolación Segmentaria Lineal

Este es el caso más sencillo. En él, vamos a interpolar una función f(x) de la que se nos dan un número N

de pares (x, f(x)) por los que tendrá que pasar nuestra función polinomial P(x). Esta serie de funciones

nuestras van a ser lineales, esto es, con grado 1: de la forma P(x) = ax + b.

Definiremos una de estas funciones por cada par de puntos adyacentes, hasta un total de (N-1) funciones,

haciéndolas pasar obligatoriamente por los puntos que van a determinarlas, es decir, la función P(x) será el

conjunto de segmentos que unen nodos consecutivos; es por ello que nuestra función será continua en

dichos puntos, pero no derivable en general.

Interpolación Segmentaria Cuadrática

En este caso, los polinomios P(x) a través de los que construimos el Spline tienen grado 2. Esto quiere

decir, que va a tener la forma P(x) = ax² + bx + c

Como en la interpolación segmentaria lineal, vamos a tener N-1 ecuaciones (donde N son los puntos sobre

los que se define la función). La interpolación cuadrática nos va a asegurar que la función que nosotros

generemos a trozos con los distintos P(x) va a ser continua, ya que para sacar las condiciones que ajusten

el polinomio, vamos a determinar cómo condiciones:

Que las partes de la función a trozos P(x) pasen por ese punto. Es decir, que las dos Pn(x) que

rodean al f(x) que queremos aproximar, sean igual a f(x) en cada uno de estos puntos.

Que la derivada en un punto siempre coincida para ambos "lados" de la función definida a trozos que

pasa por tal punto común.

Esto sin embargo no es suficiente, y necesitamos una condición más. ¿Por qué?. Tenemos 3 incógnitas por

cada P(x). En un caso sencillo con f(x) definida en tres puntos y dos ecuaciones P(x) para aproximarla,

vamos a tener seis incógnitas en total. Para resolver esto necesitaríamos seis ecuaciones, pero vamos a

tener tan sólo cinco: cuatro que igualan el P(x) con el valor de f(x) en ese punto (dos por cada intervalo), y

la quinta al igualar la derivada en el punto común a las dos P(x).

Se necesita una sexta ecuación, ¿de dónde se extrae? Esto suele hacerse con el valor de la derivada en

algún punto, al que se fuerza uno de los P(x).

Interpolación Segmentaria Cúbica

En este caso, cada polinomio P(x) a través del que construimos los Splines en [m,n] tiene grado 3. Esto

quiere decir, que va a tener la forma P(x) = ax³ + bx² + cx + d

En este caso vamos a tener cuatro variables por cada intervalo (a,b,c,d), y una nueva condición para cada

punto común a dos intervalos, respecto a la derivada segunda:

Que las partes de la función a trozos P(x) pasen por ese punto. Es decir, que las dos Pn(x) que

rodean al f(x) que queremos aproximar, sean igual a f(x) en cada uno de estos puntos.

Que la derivada en un punto siempre coincida para ambos "lados" de la función definida a trozos que

pasa por tal punto común.

Que la derivada segunda en un punto siempre coincida para ambos "lados" de la función definida a

trozos que pasa por tal punto común.

Como puede deducirse al compararlo con el caso de splines cuadráticos, ahora no nos va a faltar una sino

dos ecuaciones (condiciones) para el número de incógnitas que tenemos.

La forma de solucionar esto, determina el carácter de los splines cúbicos. Así, podemos usar:

Splines cúbicos naturales: La forma más típica. La derivada segunda de P se hace 0 para el

primer y último punto sobre el que está definido el conjunto de Splines, esto son, los puntos m y n

en el intervalo [m,n].

Dar los valores de la derivada segunda de m y n de forma "manual", en el conjunto de splines

definidos en el intervalo [m,n].

Hacer iguales los valores de la derivada segunda de m y n en el conjunto de splines definidos en el

intervalo [m,n]

Splines cúbicos sujetos: La derivada primera de P debe tener el mismo valor que las derivada

primera de la función para el primer y último punto sobre el que está definido el conjunto de Splines,

esto son, los puntos m y n en el intervalo [m,n].

Page 9: CAPITULO II INTERPOLACIÓN - …ilia.miscomunidades.com/Numerical methods and Probability/doc... · La interpolación polinomial se consigue si nosotros en la formula (2.1) escogeremos

2.2.1 Funciones B-spline cúbicas.

En el subcampo matemático de análisis numérico, una B-spline es una función spline que tiene el

mínimo apoyo con respecto a un determinado grado, suavidad y partición del dominio. Un teorema

fundamental establece que cada función spline de un determinado grado, suavidad y partición del dominio,

se puede representar como una combinación lineal de B-splines del mismo grado y suavidad, y sobre la

misma partición El término B-spline fue acuñado por Isaac Jacob Schoenberg y es la abreviatura de spline

básica. Las B-splines pueden ser evaluadas de una manera numéricamente estable por el algoritmo de

Boor.

En el subcampo de la informática de diseño asistido por computadora y de gráficos por computadora,

el término B-spline se refiere con frecuencia a una curva spline paramétrica por funciones spline que se

expresan como combinaciones lineales de B-splines (en el sentido matemático anterior).

Función B-spline cúbica se define a través de la fórmula:

20

2126

1

102

1

3

2

012

1

3

2

1226

1

20

3

23

23

3

3

x;

x;x

x;xx

x;xx

x;x

x;

xB (2.27)

El grafico de esta función se presenta en la Fig.1

Fig.1 Gráfico de B-Spline cúbico

Las propiedades de B-Splines cúbicas:

1) La función B3(x) y sus dos primeras derivadas son continuas, es decir ,CxB 2

3

2) La función B3(x) se difiere del cero solo dentro del intervalo (-2,2)

3) La función B3(x) esta cosida con cuatro diferentes polinomios cúbicos en los puntos x = -1,

x = 0 y x = 1 de tal manera que la misma función y sus dos primeras derivadas en estos

puntos son continuas.

4) En los puntos 2x la función B3(x) y sus derivadas xB'

3 y xB ''

3 son iguales a cero.

5) Valores de la función en los puntos de coser son: 3

20

6

11 33 ByB

6) El área bajo de la función B3(x) es igual a uno, es decir 1

2

2

3

dxxB

El subprograma que realiza el cálculo de la función B-Spline en FORTRAN se presenta a continuación:

function Bspln(x)

-2 -1 0 1 20,0

0,2

0,4

0,6

1/6 1/6

2/3

B3(x

)

x

Page 10: CAPITULO II INTERPOLACIÓN - …ilia.miscomunidades.com/Numerical methods and Probability/doc... · La interpolación polinomial se consigue si nosotros en la formula (2.1) escogeremos

Bspln=0.0

if(x.lt.-1.0.and.x.gt.-2.0) then

Bspln=(x+2)**3/6.0

else if(x.lt.0.0.and.x.gt.-1.0) then

Bspln=0.6666667-0.5*x**3-x**2

else if(x.lt.1.0.and.x.gt.0.0) then

Bspln=0.6666667+0.5*x**3-x**2

else if(x.lt.2.0.and.x.gt.1.0) then

Bspln=(2.0-x)**3/6.0

end if

return

end

Las funciones h,x,xB i definidas sobre una malla equidistante ,...,,i,ihxx mini 3211 como

h

xxBh,x,xB i

i 3 (2.28)

se utilizan en adelante como las funciones de base para resolver problemas de interpolación y

aproximación. Estas funciones se difieren del cero dentro del intervalo hx,hxx ii 22

Fig.2 Gráficos de las funciones de base

h

xxBh,x,xB i

i 3 con xi = i y h = 1, i = 1,2,3,4,5

Propiedades de las funciones de base:

1) jiBh

xxBh,x,xB

ij

ij

33 ; (2.29)

2) La matriz B con los elementos jiBh,x,xBB ijij 3 es una matriz simétrica y de tres diagonales

106

1

3

21 jiparaB;B;B ijiiii

-2 0 2 4 60,0

0,2

0,4

0,6

0,8

1,0

i=5i=0 i=3i=2i=1

B(x

,i,1

)

X

Page 11: CAPITULO II INTERPOLACIÓN - …ilia.miscomunidades.com/Numerical methods and Probability/doc... · La interpolación polinomial se consigue si nosotros en la formula (2.1) escogeremos

326100000

6132610000

061320000

000326100

0006132610

0000613261

000006132

B (2.30)

3) El área bajo de la función B(x, xi, h) es igual a h, es decir hdxhx,xB

hx

hx

i

i

i

2

2

2.2.2 Interpolación de funciones de una variable usando B-Splines cúbicas

Supongamos que están dados los valores yi de una función y = f(x) incógnita sobre una malla

n,...,,,i,ihax,b,ax,xfy iiii 3211 encontraremos la aproximación para esta función en

una forma de combinación lineal de B-Splines cúbicas:

n

j

jj ;h,x,xBCxSxf1

(2.31)

Esta aproximación se realiza por medio de la siguiente subroutina en FORTRAN:

c Función interpolante B-Spline, que define valor aproximada en un punto x arbitrario

c de la función definida sobre la malla equidistante xexp(i), i=1,2,...,n con el paso h

function FBspln(x,xexp,n,h,C)

dimension xexp(n),C(n)

S=0.0

do i=1,n

y=(x-xexp(i))/h

S=S+C(i)*Bspln(y)

end do

FBspln=S

return

end

Los coeficientes Cj pueden ser encontrados utilizando la condición de que las funciones S(x) y f(x) deben

coincidir por lo menos en los puntos de la malla, es decir:

n

j

jjiii CBY;h,x,xBCyxSy1

(2.32)

donde CyY

son vectores y B

es la matriz cuadrada del orden n. La matriz B

tiene la estructura (1.4), los

elementos del vector Y

son los valores dados de la función en los nodos de la malla y del vector C

son los

coeficientes en la combinación lineal (2.2)

Para encontrar los coeficientes según (2.2) hay que hallar la matriz inversa para B

y multiplicarla al vector

Y

:

YBC

1

(2.33)

Siguiente subroutina en FORTRAN realiza el cálculo de los coeficientes Cj:

c Subprograma de cálculo de los coeficientes C(i), i=1,2,3,..,n para la función interpolante

c a través de B-Splines cúbicas para una función cuyos valores en los nodos de la malla son yexp(i)

Page 12: CAPITULO II INTERPOLACIÓN - …ilia.miscomunidades.com/Numerical methods and Probability/doc... · La interpolación polinomial se consigue si nosotros en la formula (2.1) escogeremos

subroutine coef(n,yexp,c)

c Arreglos necesarios para realizar cálculo: b para guardar matriz B y la inversa, L y M vectores

c Tamaño del arreglo b no debe ser menor que n x n , tamaños de L y M no menor quen. En el

c ejemplo a continuación pueden realizarse cálculos pa las mallas con el número de nodos

c no superior que 100

dimension B(10000),L(100),M(100),c(n),yexp(n)

c Definición de la matriz B

k=0

do i=1,n

do j=1,n

k=k+1

B(k)=0.0

if(i.eq.j) B(k)=2.0/3.0

if(j.lt.n.and.i.eq.j+1) B(k)=1.0/6.0

if(j.gt.1.and.i.eq.j-1) B(k)=1.0/6.0

end do

end do

c Inversión de la matriz B

CALL MINV(B,N,D,L,M)

c Cálculo de los coeficients C(i)

k=0

do i=1,n

a=0.0

do j=1,n

k=k+1

a=a+b(k)*yexp(j)

end do

C(i)=a

end do

return

end

A continuación presentamos el texto del programa principal del programa que calcula la función interpolante

para famosa función de Runge

2251

1

xxf

la cual fue utilizada para ilustrar los defectos de la interpolación polinomial:

$debug

c np –número de los puntos para graficar, nexp –el número de los nodos de la malla

parameter (np=200)

parameter (nexp=11)

c

c MAIN PROGRAM

character*10 name

real xp(np),yp(np),xexp(nexp),yexp(nexp),c(nexp)

c Función de Runge

fun(x)=1.0/(1.0+25.0*x*x)

c Preparación de los archivos para guardar los resultados del cálculo

write(*,*)' Teclee el titulo del archivo para salvar tabla'

read(*,'(a)') name

open(1,file=name)

write(*,*)' Teclee el titulo del archivo para salvar'

write(*,*)' el grafico con extension .pcx '

read(*,'(a)') name

c Extremos del intervalo para analizar la función

xmin=-1.5

xmax=1.5

Page 13: CAPITULO II INTERPOLACIÓN - …ilia.miscomunidades.com/Numerical methods and Probability/doc... · La interpolación polinomial se consigue si nosotros en la formula (2.1) escogeremos

c el paso entre los nodos

h=(xmax-xmin)/(nexp-1.0)

c Malla y valores de la función de Runge en los nodos de la malla

do i=1,nexp

xexp(i)=xmin+h*(i-1)

xx=xexp(i)

yexp(i)=fun(xx)

end do

c Cálculo de los coficientes C(j)

call coef(nexp,yexp,c)

c Calcular los valores aproximados de la función en np puntos usando B-splines

eps=0.05

h1=(xmax-xmin)-2*eps)/(np-1)

do j=1,np

x =xmin+eps+h1*(j-1)

xp(j)=x

yp(j)=FBspln(x,xexp,Nexp,h,c)

c Guardar los resultados de cálculo en el archivo

write(1,*) xp(j),yp(j)

end do

close(1)

c Inicio del proceso de Graficación

c Calculo xmax,xmin,ymin , ymax

xmin=xp(1)

xmax=xp(1)

ymin=yp(1)

ymax=yp(1)

do i=1,np

if(xp(i).lt.xmin) xmin=xp(i)

if(xp(i).gt.xmax) xmax=xp(i)

if(yp(i).lt.ymin) ymin=yp(i)

if(yp(i).gt.ymax) ymax=yp(i)

end do

ymin=ymin-0.1

c Regimen grafico

CALL GRINIT

c Pagina

CALL PAGE(30.,20.,'GRAF',4,0)

c Mapping

call limits(xmin,xmax,ymin,ymax)

CALL REGION(8.,8.,18.,10.,0,0,0)

c Color

CALL SETPEN(4)

c Ejes

call axes(0,0,0.,0,0,0,0.,0,0)

c color del grafico

call setpen(1)

c Graficar los puntos calculados a través de B-Splines

call linnum(xp,yp,np)

c Graficar con markers los valores exactos de función de Runge en los nodos de la malla

call setpen(2)

do i=1,nexp

xe=8.0+(xexp(i)-xmin)/(xmax-xmin)*18.0

ye=8.0+(yexp(i)-ymin)/(ymax-ymin)*10.0

call move(xe,ye,0)

call marker(1)

end do

c salvar del grafico

call wrpcx(16#a000,name)

Page 14: CAPITULO II INTERPOLACIÓN - …ilia.miscomunidades.com/Numerical methods and Probability/doc... · La interpolación polinomial se consigue si nosotros en la formula (2.1) escogeremos

c Salir del regimen grafico

CALL ENDPG(0)

CALL MODA(3)

stop

end

Para comparar los resultados obtenidos a través B-Spline interpolación con la interpolación polinomial

usando por ejemplo la formula de Lagrange se puede utilizar el programa similar a anterior que presenta a

continuación

$debug

parameter (np=100)

parameter (nexp=11)

c

c MAIN PROGRAM

character*10 name

real xp(np),yp(np),xexp(nexp),yexp(nexp)

fun(x)=1.0/(1.0+25.0*x*x)

write(*,*)' Teclee el titulo del archivo para salvar tabla'

read(*,'(a)') name

open(1,file=name)

xmin=-1.0

xmax=1.0

h=(xmax-xmin)/(nexp-1.0)

do i=1,nexp

xexp(i)=xmin+h*(i-1)

xx=xexp(i)

call random(eps)

yexp(i)=fun(xx)+0.0*(eps-0.5)

end do

h1=(xmax-xmin)/(np-1)

do j=1,np

x =xmin+h1*(j-1)

xp(j)=x

yp(j)=Fun_lagrnge(xexp,yexp,nexp,x)

yexact=fun(x)

write(1,*) xp(j),yp(j),yexact

end do

do j=1,nexp

write(1,*) xexp(j),yexp(j)

end do

close(1)

stop

end

c---------------------------------------

Function Fun_lagrnge(xe,ye,ne,x)

c Función de interpolación de Lagrange para una función

c definida ye(i) sobre la malla xe(i), i=1,2,3,...,ne

dimension xe(ne),ye(ne)

s=0.0

do i=1,ne

p=1.0

do j=1,ne

if(j.ne.i) p=p*(x-xe(j))/(xe(i)-xe(j))

end do

s=s+p*ye(i)

end do

Fun_lagrnge=s

return

end

Page 15: CAPITULO II INTERPOLACIÓN - …ilia.miscomunidades.com/Numerical methods and Probability/doc... · La interpolación polinomial se consigue si nosotros en la formula (2.1) escogeremos

Los resultados obtenidos con estos dos programas se puede comparar de la Fig.1.

Fig.3 Resultados de interpolación de la función Runge a través de B-spline

y polinomios usando la malla con 11nodos

Fig. 4 Resultados de interpolación de la función de Gauss a través de B-spline

y polinomios usando la malla con 11nodos

Los gráficos presentados no necesitan ningún comentario para explicar las ventajas que tiene la

interpolación a través de B-Splines cúbicas comparando con la interpolación polinomial.

-1,0 -0,5 0,0 0,5 1,00,0

0,5

1,0

1,5

2,0

B-Spline Interpolación

Interpolación Polinomial

n=11

y=1.0/(1+25*x2)

Y

X

-4 -2 0 2 4

-0,2

0,0

0,2

0,4

0,6

0,8

1,0

1,2

n=11

Interpolación Polinomial

B-Spline Interpolación y=exp(-x

2)

X

Y