Post on 05-Feb-2021
1.3 INTERPOLACIÓN Y DERIVACIÓN NUMÉRICA
Toda información numérica guardada en la memoria de un
computador siempre tiene una forma discreta. Particularmente, la
dependencia funcional entre dos variables, en un computador se define
sobre una malla discreta ( ) , 1,2, ,i iy f x i N= = . El conjunto de los
puntos , 1,2, ,ix i N= ordenados en una orden creciente se llaman los
nodos de la malla y el conjunto de los números , 1,2, ,iy i N= son
valores de una función sobre esta malla discreta. Si estos conjuntos
tienen una información escasa y se necesita para algunos objetivos
completarla, es decir reponer los valores de esta función en los puntos adicionales (por ejemplo, para graficar esta función) entonces hay
que elaborar los métodos matemáticos para realizar esta operación llamada interpolación. Para funciones de una sola variable esta
operación se llama la operación unidimensional, de dos variables interpolación bidimensional, etc.
Definición 1 Dados los valores de una función desconocida ( )y f x= sobre una malla ( ) , 1,2, ,i iy f x i N= = , el problema de
interpolación unidimensional consiste en la búsqueda de los valores de esta función en los puntos x que están localizados fuera de esta
malla. En Fig.1 se muestra un ejemplo de complementación de los puntos adicionales usando la interpolación lineal y cúbica. En el
primer caso esta complementación se realiza usando las líneas rectas que forman un polígono y en el segundo caso usando pedazos las
curvas dadas por las funciones cubicas. Esta figura nos da una ilustración que el problema de interpolación no tiene la solución única. Al
revés, hay un número infinito de posibles soluciones de este problema, ya que los datos faltantes se pueden completar de manera arbitraria,
procurando cada vez que las curvas deben pasar por los algunos puntos fijos correspondientes a los datos sobre la malla discreta. Los
problemas de este tipo en las matemáticas se llaman mal puestos-
Definición 2 El problema que satisface a una o varias de las tres siguientes condiciones se llama mal puesto:
1) El problema no tiene solución
2) El problema tiene varias o un número infinito de soluciones
3) Cualquiera sea pequeñas cambios de los datos necesarios para solucionar el problema cambian drásticamente el resultado
Generalmente, los problemas mal puestos son problemas inversos. En un problema directo unidimensional se sugiere hallar una tabla de
correspondencia ( ) , 1,2, ,i iy f x i N= = sobre una malla dada a partir de una dependencia ( )y f x= dada en una forma explícita
(dependencia funcional) o una forma implícita mediante una regla (como una solución de una ecuación algebraica, diferencial o integral o
un algoritmo o pseudocódigo). En un problema inverso unidimensional se sugiere hallar una dependencia ( )y f x= definida en una forma
explícita (dependencia funcional) o una forma implícita mediante una regla (como una solución de una ecuación algebraica, diferencial o
integral, o un algoritmo o pseudocódigo) usando una tabla de correspondencia ( ) i iy f x= dada sobre una malla discreta. El problema de
interpolación igual como el problema de la diferenciación numérica a partir de una tabla dada sobre una malla discreta presentan unos
ejemplos más claros de problemas inversos y mal puestos.
Está claro que la interpolación satisface las condiciones 2 y 3 y por eso es un problema mal puesto. Para transformarlo en un
problema bien puesto es indispensable imponer algunas restricciones sobre tipos de funciones que estamos buscando o en otros palabras
disminuir de alguna manera el número de posibles funciones que sean “razonables”. El significado del término “razonable” puede variarse
de problema a problema y trataremos definirlo en una forma matemáticamente rigurosa. Consideremos el conjunto de todas las funciones
que pueden considerarse en calidad las funciones interpolantes como un espacio completo de dimensión infinito, en que cada función
cumple N condiciones. En este espacio completo el problema de interpolación es mal puesto. Entonces, la única opción para
transformarlo en un problema bien puesto es restringir la búsqueda dentro un subespacio donde existe la solución única de este problema.
Esta idea se entiende mejor al considerar un ejemplo de un problema similar en el espacio de Euclides de vectores 3D. Un espacio
Fig.1.3.1 Un ejemplo de interpolación unidimensional
formado por todos vectores unitarios (de longitud uno) en 3D 2 2 2 1, 1,2,3,4k k x k y k z k k kx y z x y z k= + + + + = =r e e e tiene un
número infinito de elementos, que consiste en todos vectores con diferentes orientaciones y sentidos posibles de longitud uno. Pero si
nosotros en el espacio completo 3D consideremos un subespacio 1D de vectores paralelos al eje X entonces en este subespacio (una parte
del espacio 3D) existe solo un único vector unitario x=r e .
Usando esta analogía se puede esperar que el problema de interpolación pudiera tener la única solución y transformarse en un
problema bien puesto si la búsqueda de su solución restringir en un subespacio de dimensión N (una parte del espacio completo).
Siguiendo nuestra analogía podemos definir un subespacio de dimensión N, como un conjunto de todas funciones que pueden expresarse
como una combinación lineal de N funciones de base ( ) , 1,2, ,k x k N = . Cualquiera función ( )NP x perteneciente a este subespacio
puedes expresarse como una combinación de estas funciones de base
( ) ( )1
N
N k k
k
P x C x=
= , (1.3.1)
donde los coeficientes kC pueden interpretarse como las proyecciones correspondientes de sobre las funciones de base ( )k x . En
adelante, llamaremos las funciones ( )NP x los polinomios generalizados y cualquiera función que puede representarse en esta forma
consideremos como una proyección sobre subespacio elegido.
Ahora bien, si nosotros queremos transformar el problema de interpolación de una función ( )y f x= sobre una malla
( ) , 1,2, ,i iy f x i N= = en un problema bien puesta restringimos nuestra búsqueda con la condición que la función interpolante debe
tener una forma de un polinomio generalizado, ( )NP x y esta función, definida de esta manera puede considerarse como una proyección de
la función incógnita ( )y f x= sobre un subespacio seleccionado. Además, la función interpolante en los nodos de la malla debe cumplir
cumple las condiciones adicionales
( ) ( ) ( ) ( ) ( )1 1
; ; 1,2, ,N N
N k k N i k k i i
k k
y f x P x C x P x C x y i N = =
= = = = = (1.3.2)
Según las fórmulas (1.3.2) el proceso de construcción de la función interpolante ( )NP x un una forma de un polinomio generalizado
consiste en la selección del conjunto de N funciones de base ( ) , 1,2, ,k x k N = y en la búsqueda posterior de N coeficientes kC . Si el
número de los nodos de la malla N en el problema de interpolación coincide con el número de las funciones de base ( ) , 1,2, ,k x k N =
escogidas entonces en la mayoría de los casos los coeficientes n C se definen uniformemente. En realidad, la función interpoladora (1.3.1)
debe satisfacer los N condiciones (1.3.1) las cuales corresponden corresponden un sistema de ecuaciones algebraicas lineales que se puede
escribir en la siguiente forma matricial:
Según las formulas (1.3.3) y (1.3.4), en el caso cuando la función interpoladora se busca en la forma de una combinación lineal (1.3.2) de
las funciones de base ( ) , 1,2, ,k x k N = dadas, el algoritmo de la interpolación es muy simple y consiste en solamente de dos pasos:
1) calcular los valores de las funciones de la base en los nodos de la malla ( ); , 1,2, ,k ix i k N = que son los elementos matriciales de la
construir la matriz ˆA, invertir la matriz ˆA y después hallar los coeficientes C multiplicando la matriz inversa por el vector Y f según la
formula (1.3.3) 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
Más corta es la tabla , , 1,2, ,i ix y i N= , el menor es la dimensión del subespacio y más rápido pueden calcularse los valores de la
función usando la fórmula (1.3.1). Los objetivos del uso de las fórmulas de interpolación son múltiples, pero objetivo principal consiste en
la elaboración de un algoritmo rápido para encontrar los valores de una función fuera de una tabla , , 1,2, ,i ix y i N= dada. Funciones
interpoladoras se utilizan también para calcular las derivadas y las integrales, y lo que es más importante estas funciones se utilizan para
elaboración diferentes algoritmos de los métodos numéricos para resolver diferentes tipos de ecuaciones tanto algebraicas como
diferenciales e integrales.
Existe una variedad grande de diferentes algoritmos de interpolación que se clasifican por los tipos de las mallas usadas y por el
tipo de las funciones de base que se utilizan. En la mayoría de los algoritmos se utiliza la malla equidistante con un paso fijo h (distancia
entre dos nodos adyacentes) para la cual las coordenadas de los nodos están definidas mediante la relación:
( )1 1 ; 1,2, ,ix x i h i N= + − = (1.3.5)
En calidad de las funciones de base más frecuentemente se utilizan los polinomios, las funciones trigonométricas o los splines cúbicos.
Respectivamente las fórmulas de interpolación se llaman el interpolante polinomial, el interpolante trigonométrico o la interpolación
mediante Splines cúbicos.
Si, por ejemplo, en calidad de las funciones de base se escogen las funciones de potencias
( ) 1, 1,2, ,kk x x k N −= = (1.3.6)
la función interpoladora es un polinomio de potencias. Si como las funciones de base se escogen las funciones trigonométricas
( ) ( )( ) ( ) ( ) 2 1 2sin 2 1 , cos , 1,2, ,k kx k x x kx k N − = − = = (1.3.7
la función interpoladora es un polinomio trigonométrico.
En la interpolación segmentaria a diferencia de la interpolación global, todo el intervalo analizado con N nodos se divide en varios
segmentos con un número de nodos reducido y la función interpolante se construye dentro cada segmento de manera independiente con la
única condición que en las fronteras de segmentos las funciones interpolantes de diferentes segmentos se ajusten de manera mejor posible.
En el caso más sencillo, cuando cada segmento tiene solo dos nodos, la función interpolante presenta un polígono, similar a que se ve in
Fig. 1.3.1. Pero más usada en las diferentes aplicaciones de los métodos numéricos es la interpolación segmentaria con los splines
cúbicos, cuando cada segmento tiene 4 puntos. Diferentes técnicas de la interpolación segmentaria, incluyendo mediante del uso elementos
finitos discutiremos al final de este capítulo.
1.3.1 Interpolación polinomial.
La clase más importante de las funciones de base para la interpolación es el conjunto de los polinomios algebraicos. Para esto hay
varias razones; los polinomios es fácil de evaluar directamente, sumar, multiplicar, integrar y derivar. Por supuesto y otras clases de
funciones pueden tener todas las ventajas anteriores y pudieran utilizarse también para este objetivo. Afortunadamente, hay otra razón
para escoger los polinomios a consecuencia del siguiente teorema de Weierstrass: “Para cualquiera función ( )y 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 ( ) ( )Nf x P − .
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 un criterio para
seleccionar un polinomio de interpolación satisfactorio para un determinado conjunto de datos , , 1,2, ,i ix y i N= . En la consecuencia
de la ausencia de este criterio la interpolante polinomial es muy sensible a los pequeños errores en los datos de la entrada. Sin embargo, la
interpolación polinomial es un instrumento importante para la elaboración de diferentes algoritmos de lo los métodos numéricos para
cálculo de las integrales y para solución de las ecuaciones diferenciales e integrales.
La fórmula para la interpolación polinomial se obtiene al sustituir las funciones de base consigue si nosotros en la formula (2.1)
escogeremos las funciones de base (1.3. 6) ( ) 1, 1,2, ,kk x x k N −= = en las ecuaciones (1.3.2. En este caso la función interpoladora es
un polinomio del orden N-1:
( ) ( ) ( ) 2 11 2 31
NN
N k k N
k
f x P x C x C C x C x C x −
=
= = + + + + (1.3.9)
Como ningunos dos nodos de la malla , 1,2, ,ix i N= no coinciden, el determinante no es igual a cero, det 0A el sistema de
ecuaciones lineales (2.5) siempre tiene solución única la que permite encontrar un polinomio interpolador. Esto demuestra que existe la
única función polinomial de orden N-1 la que satisface la condición
( )1
11
1
; 1,2, ,N
kN i k i i
k
P x C x y i N−
−−
=
= = = . (1.3.12)
Sin embargo, se puede demostrar que cuando el número de nodos es grande la matriz A casi siempre es mal condicionada, es
decir, cuando nosotros tratamos encontrar un polinomio interpolante 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 la información
parte por parte) que una interpolación global.
Los resultados anteriores se pueden formular en una forma del siguiente teorema “Dados los valores de una función
desconocida ( )y f x= sobre una malla ( ) , 1,2, ,i iy f x i N= = , existe una y solo una la función interpolante polinomial de la forma
( ) ( ) 2 11 2 3N
N Nf x P x C C x C x C x− = + + + + cuyos coeficientes ; 1,2, ,kC k N= son las soluciones de un sistema de las ecuaciones
algebraicas lineales (1.3.10).
1.3.2 Formula de Lagrange
Aplicando las formulas (1.3.9) y teniendo en cuenta que la matriz inversa para este caso según las formulas (1.3.10), (1.3.11) los
coeficientes ; 1,2, ,kC k N= se puede encontrar en la forma analítica y derivar la siguiente fórmula para la función interpolante
polinomial conocida como interpolador de Lagrange:
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 fórmulas (1.3.13) definen precisamente el polinomio de orden N-1, que satisface las condiciones (1.3.12). Por esta
razón, las fórmulas (1.3.13) presentan este único interpolador polinomial y no existe ninguno otro.
La fórmula de Lagrange en los casos más importantes para los interpolantes lineales y cuadráticos que se usan en la interpolación
segmentaria que discutiremos más adelante se ve mucho mas simple. En el caso cuando la malla consiste de solo dos nodos, el polinomio
de Lagrange es lineal
( ) ( ) ( ) 2 11 1 1 2 2 1 21 2 2 1
x x x xP x x y x y y y
x x x x
− −= + = +
− − (1.3.14)
Para una malla con tres nodos el polinomio de Lagrange presenta una función cuadrática:
( ) ( ) ( ) ( ) 3 32 1 1 22 1 1 2 2 3 3 1 2 31 2 1 3 2 1 2 3 3 1 3 3
x x x xx x x x x x x xP x x y x y x y y y y
x x x x x x x x x x x x
− −− − − −= + + = + +
− − − − − − (1.3.15)
A pesar de que la fórmula de Lagrange a primera vista parece muy complicada incluso una monstruosa, el algoritmo
correspondiente es muy simple y como se puede ver del pseudocódigo que presentamos a continuación el no contiene más que una decena
de las instrucciones. (¡Estúdielo con mucha atención con su cada paso y aprenda con este ejemplo como se puede unas fórmulas largas
transformar en un algoritmo muy corto!)
( ) ( ) _ ( , , , )
(*Se calcula el valor de la interpolante de Lagrange en el punto x
para una función cuyos valores ye(i) estan dados sobre la malla ( ), 1,2,3,...,
Paráme
Function Fun lagrnge xe ye ne x
xe i i ne
=
( )
( )
tros de entrada : ( ), ( ), , ; Parámetro de salida _ *)
0; 1;
(*buclesobre nodos de la malla*)
(* Cálculo del factor de Lagrange*)
1; 1; (*buclesobre nodos de la malla*)
(
xe i ye i ne x Fun lagrnge
s i
while ï ne do
l j while j ne do
if
) ( - ( )) / ( ( ) - ( )) ;
(*Cálculo de la suma *)
* ( ) ;
_
j i then l l x xe j xe i xe j
s
s s l ye i
Fun lagrnge s
=
+
A continuación se presenta un ejemplo de aplicación el algoritmo para definir un polinomio interpolador para la función ( ) sinf x x=
dada en una tabla dentro del intervalo 0
( ) ( ) ( ) ( )2 21 1 1 122
;2
i i i i ii i i i
y y y y yy f x O h y f x O h
h h
+ − + −− − + = = + = = + (1.3.18)
Estas fórmulas permiten evaluar las derivadas con una precisión hasta segunda orden de pequeñez respecto del paso de la malla h para las
funciones definidas sobre una malla discreta y forman una base para diferentes técnicas computacionales llamadas diferencias finitas. La
procedencia de este término está relacionada con la siguiente definición.
Definición 1. Dadas los valores de una función sobre una malla discreta ( ); 1,2, ,i iy f x i N= = se llaman las diferencias finitas de la
primera orden, progresiva p iy , regresiva r iy y centrada c iy definidas como
( ) ( )1 1 1 1; ; 0.5 0.5 ; 1,2, , 1p i i i r i i i c i p i r i i i iy y y y y y y y y y y y i N+ − + − = − = − = + = − = − , (1.3.19)
que caracterizan los valores del incremento de la función posterior, anterior y el promedio alrededor del nodo número i.
se llama la diferencia finita dela primera orden progresiva en el nodo número i.
Para N valores de la función dada en N nodos se puede calcular diferencias finitas de primera orden, la progresiva (posterior) y la regresiva
(anterior) en diferentes N-1 nodos:
1 2 1 2 3 2 3 4 3 1 1
2 2 1 3 3 2 4 4 3 1
; ; ; ;
; ; ;
p p p p N N N
a a a a N N N
y y y y y y y y y y y y
y y y y y y y y y y y y
− −
−
= − = − = − = −
= − = − = − = −
La diferencia finita centrada se puede calcular solamente en N-2 nodos
( ) ( ) ( ) ( )2 3 1 3 4 2 4 5 3 1 20.5 ; 0.5 ; 0.5 ; 0.5c c c c N N Ny y y y y y y y y y y y− − = − = − = − = −
Comparando las fórmulas (1.3.19) y (1,3.18) se puede ver que la primera derivada de la función en cada nodo de la malla se
aproxima con la precisión de la segunda orden a través de la diferencia finita centrada
( ) ( ) ( )2 1 1; 0.5c ii i c i i iy
y f x O h y y yh
+ −
= = + = − (1.3.20)
Hay que anotar que la primera derivada se puede aproximar también usando las diferencias finitas posterior o anterior, pero en este caso
la precisión de cálculo es solamente de la primera orden respecto de h es decir es ( )O h . Similarmente, para estimar la segunda derivada
mediante la fórmula (¡.3.18) es mejor usar la diferencia finita centrada de segunda orden
Definición 2. Dadas los valores de una función sobre una malla discreta ( ); 1,2, ,i iy f x i N= = se llaman las diferencias finitas de la
segunda orden, progresiva 2p iy , regresiva 2r iy y centrada
2c iy definidas como
2 21 2 1 1 1 2
21
2 ; 2 ;
2 ; 1,2, , 1
p i p i p i i i i r i r i r i i i i
c i p i r i i i i
y y y y y y y y y y y y
y y y y y y i N
+ + + − − −
+ −
= − = − + = − = − +
= − = − + = −, (1.3.21)
Comparando las fórmulas (1.3.20) y (1,3.18) se puede ver que la segunda derivada de la función en cada nodo de la malla se aproxima con
la precisión de la segunda orden a través de la diferencia finita centrada
( ) ( )2
2 21 12
; 2 ; 1,2, , 1c ii c i i i iy
f x O h y y y y i Nh
+ −
= + = − + = − (1.3.22)
La primera y más evidente aplicación de diferencias finitas es operación básica de la derivación numérica de las funciones dados en forma
de una tabla sobre malla equidistante. Como hemos mencionado anteriormente para este fin es mejor usar las diferencias finitas centradas
que permiten hall
sesta se presentan las diferencias entre los valores de las derivadas encontradas numéricamente y los valores exactos
( ) ( ) ( ) ( )2 22 exp ; 2 4 expi i i i i i i iy x x x y x x x = − − = − + − . Se puede ver las diferencias en todos casos es menor que 0.04
parameter (np=21)
real xp(np),yp(np),dy(np),d2y(np),d(np),d2(np)
f(x)=x*x*exp(-x)
df(x)=(2*x-x*x)*exp(-x)
df2(x)=(2-4*x+x*x)*exp(-x)
open(1, file='tab.dat')
h=4.0/(np-1)
do i =1,np
x=h*(i-1)
xp(i)=x
yp(i)=f(x)
d(i)=df(x)
d2(i)=df2(x)
end do
do i =2,np-1
dy(i)=(yp(i+1)-yp(i-1))/(2*h)
end do
do i =2,np-1
d2y(i)=(yp(i+1)-2*yp(i)+yp(i-1))/(h*h)
end do
do i=2,np-1
write(1,3) xp(i), yp(i),dy(i),d(i)-dy(i),d2y(i),d2(i)-d2y(i)
3 format(3x,f6.2,5f8.4)
end do
close(1)
stop
end
1.3.4 Diferencias finitas progresivas de órdenes superiores. Potencia generalizada.
Si en los métodos numéricos para solucionar de las ecuaciones diferenciales teoría
casi siempre se utilizan las diferencias centradas, para interpolación se utilizan todos tres
tipos de diferencias finitas. Las correspondientes fórmulas de interpolación se llaman
respectivamente progresiva, regresiva y centrada. Cuál de estas tres tipos e
interpolación usar para analizar los fenómenos físicos depende del aporte del futuro, pasado
o presente de mayor aporte en este fenómeno. Todos tres tipos son matemáticamente son
similares con unas pequeñas diferencias. A continuación, analizaremos solamente la
aplicación las diferencias finitas progresivas.
Para N valores de la función dada en N nodos se puede calcular diferencias finitas
de diferentes órdenes, la progresiva (posterior en diferentes N-1 nodos: se definen en
acuerdo con las siguientes relaciones
21 1 2 1
3 3 31 3 2 1
11
; 1, 1; 2 ; 1, 2;
3 3 ; 1, 3;
; 1, 1
i i i i i i i i i
i i i i i i i
k k ki i i
y y y i N y y y y y y i N
y y y y y y y i N
y y y i N k
+ + + +
+ + + +
++
= − = − = − = − + = −
= − = − + − = −
= − = − −
(1.3.23)
En el ejemplo a continuación se muestra como se calculan las diferencias finitas de primera y segunda órdenes y sus gráficos
correspondientes.
En las fórmulas (1.3.23), las
diferencias finitas de segunda y tercera
orden se expresan en términos de los valores
de la función en los nodos de la malla- Para
obtener una fórmula similar para una
diferencia finita de orden arbitraria
introducimos un operador de traslación T̂ el cual definimos de la siguiente manera.
( ) ( ) ( ) ( ) ( ) ( )1 1ˆ ˆ ˆ ˆ;n n
i i i ï i i i i n ï i nTf x f x h f x Ty y T f x f x n h f x T y y+ + + += + = = = + = = (1.3.24)
Entre el operador de tralación T̂ y el operador de la diferencia finita existen las siguientes relaciones evidentes
( )( ) ( )( ) ( ) ( )
( )( )1 1 2
ˆ ˆ 1;
1 1 2 1ˆ ˆ ˆ ˆ ˆ ˆ ˆ1 1
1! 2! 3! 1 !
n nn n n n n n k
T
n n n n n n n n knT T T T T T
k
− − − −
= −
− − − − − = − = − + − + + + + −
+
(1.3.25)
Estas dos fórmulas nos permiten obtener una expresión explicita para las
diferencias finitas de las ordenes arbitrarias
( )( )
( )( ) ( )
( )( )
1 2
1ˆ ˆ 1
1! 2!
11 1
1 !
nn
i i i n i n i n
k n
i n k i
n nny T y y y y
n n n ky y
k
+ + − + −
+ −
− = − = − + +
− −+ − + + −
+
(1.3.26)
En esta relación se utilizó la fórmula del binomio de Newton en la cual los
coeficientes de la expansión forman un triángulo de Pascal. Las fórmulas
explícitas para las diferencias finitas progresivas hasta la séptima orden se
presentan en la tabla anexa. Consideremos el contenido de esta tabla suponiendo
que nosotros disponemos una malla con un paso equidistante h y los valores ( ) ( )1; 1 ; 1,2, ,7i i iy f x x x h i i= = + − = de una función
en los nodos de la malla están dados. Partiendo de estos siete valores de la función en los nodos uno puede calcular las siete diferencias
finitas progresivas en el punto inicial usando las fórmulas del triangulo de Pascal. La pregunta es ¿es posible resolver el problema inverso,
hallar los valores de función a partir de las diferencias finitas de la función dadas en el punto inicial? La respuesta es “si”, para esto se
necesita solo invertir las fórmulas anteriores.
( )( )
1 2 2 2 21 1 1 1 1 1
!ˆ 1 ; ; 1,2, , ; 1, 2, , k! !
kk k k mk ï ï k k k k k
ky T y y y C y C y C y C y C k n m
m k m+ = = + = + + + + + + + = = =
− (1.3.26)
La fórmula (1.3.26) muestra que las derivadas progresivas en el punto inicial definen uniformemente los valores en todos los nodos de la
malla y esto da a nosotros una esperanza que estas mismas derivadas nos permiten encontrar los valores de la función en los puntos entre
los nodos, es decir resolver el problema de interpolación. El último problema como sabemos es mal puesto y tiene la solución única solo
si nosotros restringimos la búsqueda de una función interpolante entre los polinomios, que presentan una combinación lineal de las
funciones de potencia y este polinomio debe coincidir con una expansión de la función en una serie de Taylor truncada en la cual las
derivadas de la función en los los coeficientes deben ser reemplazadas por las diferencias finitas y las potencias ordinarias por las potencias
generalizadas.
Definición. Dada la malla discreta equidistante ( )1 1 ; 1,2,3.ix x h i i= + − = la potencia generalizada progresiva sobre esta malla se
define como ( ) ( ) ( ) ( )( ) ( )( )1
1 1 1 2 1 ; 1,2,3.n n
n n nx x x x x x x x x x x x x x n−
−− = − − = − − − − = , siendo ( ) 0
1 1x x− =
Según esta definición
( ) ( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( ) ( ) ( ) ( )( )( )
2
1 1 1 1 2 1 1
3
1 1 2 3 1 1 1
4
1 1 2 3 4 1 1 1 1
; ;
3 ,
3 4 , etc
nx x x x x x x x x x x x x x h
x x x x x x x x x x x x h x x h
x x x x x x x x x x x x x x h x x h x x h
− = − − = − − = − − −
− = − − − = − − − − −
− = − − − − = − − − − − − −
La introducción de este nuevo tipo de potencia esta relacionada con el siguiente teorema:
Teorema La diferencia finita de la potencia generalizada es igual a: ( ) ( ) 1
1 1
n nx x h n x x
− − = − (¡demuéstrelo!)
Este teorema explica porque la interpolante polinomial sobre una malla equidistante llamada la fórmula de Newton representa una
combinación lineal de las potencias generalizadas y los coofficientes de esta combinación contienen las diferencias finitas de diferentes
ordenes
1.3.5 Polinomio interpolador para malla equidistante. Formula de Newton.
Siguiendo El método propuesto por Newton, buscaremos un polinomio interpolado de orden N-1 sobre una malla equidistante
( )1 1 ; 1,2,3, ,ix x h i i N= + − = en la forma:
( ) ( ) ( ) ( )( ) ( )( ) ( )1
1 0 1 1 2 1 2 1 1 2 1
0
Nn
N n n N N
n
P x a x x a a x x a x x x x a x x x x x x−
− − −
=
= − = + − + − − + + + − − − (1.3.27)
Nuestra tarea consiste en encontrar n coeficientes del polinomio (1.3.27) el cual satisface además las siguientes n condiciones,
( ) ( ) ( )( ) ( )( ) ( )1 0 1 1 2 1 2 1 1 2 1 ; 1,2, ,i N i i i i N i i i Ny P x a a x x a x x x x a x x x x x x i N− − −= = + − + − − + + + − − − = (1.3.28a)
La coincidencia de los valores del polinomio con los valores de la función desconocida debe conducir a la coincidencia de las diferencias
finitas de estas dos funciones, y por eso estas n condiciones pueden ser reescritas en otra forma equivalente en los términos de las
diferencias finitas:
( )1 1 ; 0,2, , 1m m
i Ny P x m N− = = − (1.3.28b)
Utilizando las expresiones explicitas para las diferencias finitas dadas por el triángulo de Pascaly para las potencias generalizadas
la formula (1.3.29) puede ser representada como la siguiente expansión explicita para losd términos hasta la tercera orden:
( ) ( ) ( )( ) ( )( )( )
( ) ( )
3 2 1 4 3 2 12 11 1 1 1 2 1 2 32 3
1
2 3 3
1! 2! 3!
1 ; ; 1, 2,3, ,
N
i i i
y y y y y y yy yP x y x x x x x x x x x x x x
h h h
x x h i y f x i N
−
− + − + −−= + − + − − + − − − +
= + − = =
(1.3.29a)
En realidad, la fórmula general de Newton en los cálculos actuales computacionales casi no se usa, excepto para la interpolación
segmentaria en la forma (1.3.29a) guardando en esta expansión solamente varios términos iniciales, la cual la discutiremos en la siguiente
sección. Sin embargo, la fórmula general (1.3.29) se utiliza en la teoría de los métodos numéricos para elaboración de diferentes
algoritmos para calcular las integrales y para solucionar las ecuaciones diferenciales e integrales.
1.3.6 Interpolación segmentaria.
Hasta ahora, el foco de nuestra discusión ha sido la interpolación de una función, cuyos valores están dados sobre una malla
dentro un intervalo [a, b], mediante un polinomio de Lagrange o de Newton, o usando otros tipos de funciones de base. En todos casos la
función interpolante tenía un carácter global es decir está definida por la misma expresión analítica en todo el intervalo [a, b]. Una
alternativa que permite aproximar una función de una manera más flexible consiste en separar el intervalo [a, b] global en una serie de
subintervalos (segmentos) locales y buscar una aproximación a trozos por polinomios de menor grado. El método de interpolar una
función mediante un conjunto de interpolantes por los trozos independientes para cada segmento se llama la interpolación segmentaria. La
interpolación segmentaria de una manera más sencilla puede realizarse por ejemplo a través de polinomios interpolantes de Newton
(1.3.29a) de ordenes uno, dos o tres y se llaman respectivamente las interpolaciones lineal, cuadrática o cúbica segmentarias.
En el primer caso, en la formula (1.3.29) aceptemos N=2 para obtener la fórmula del interpolador lineal dentro del segmento
( )1, , 1,2, , 2k kx x k N+ = − considerando como el punto inicial del segmento el valor , 1,2, , 2kx x k N= = −
( ) ( ) ( )( )1
1 11!
kk kk k k k k
x xy yP x y x x y y y
h h
++
−−= + − = + − (1.3.30a)
Para realizar una interpolación segmentaria lineal en cualquier punto x dentro del intervalo [a, b], inicialmente hay que definir el número k
del nodo, el cual define la coordenada correspondiente a la frontera izquierda del segmento donde está comprendido el punto x a través de
la relación ( )( )k Integer x a h= − y procurar que este número pertenece al conjunto 1,2, . 2k N − . A continuación, se presenta un
pseudocódigo que realiza el algoritmo de la interpolación lineal segmentaria.
( )
( )
( ) ( ) ( )1
_ , , , ,
(* Interpolador lineal para un Interpolador Lineal para una función en el punto
cuyos valores están dadossobre la malla equidistante 1 * ,
FunctionPolinomio Lineal a h ye ne ne x
P x x
ye i xe i a i h
= + −
( )
( )1
1, 2,3,...,
Parámetros de entrada: - inicio de intervalo , distancia entre nodos,
valores de función en nodos, número de nodos
Parámetro de salida: _ Interpolador Lineal e
i ne
a h
ye i ne
Polinomio Lineal P x
−
−
−
=
−
( )( )
( )
( )
n punto *)
(* encontrar el número de segmen to donde se ubica el punt
; ( 1
o *)
/
(*La frontera izquierda delsegmento*)
) 1 ; ( 2) 2 :
1 * :
_
x
x
k Int x a h
xk a k h
Polinomio Lineal y
if k k if k k N
e
N
k
−
+ −
− −
+ ( ) ( )( ) ( )
1 * /ye k ye k x xk h+ − −
En el segundo caso, en la formula (1.3.29) aceptemos N=3 para obtener la fórmula del interpolador cuadrático dentro del
segmento ( )1, , 1,2, , 3k kx x k N+ = − considerando como el punto inicial del segmento el valor , 1,2, , 3kx x k N= = −
( ) ( ) ( ) ( )
( )( )
( )( ) ( )
1 2 12 12
11 2 1 2
2
1! 2!
22
k k k k kk k k k
k k kk k k k k k
y y y y yP x y x x x x x x
h h
x x x x x xy y y y y y
h h
+ + ++
++ + +
− − += + − + − − =
− − −= + − + − +
(1.3.30b)
Para realizar una interpolación segmentaria cuadrática en cualquier punto x dentro del intervalo [a, b] iicialmente hay que definir el número
k del nodo, el cual define la coordenada correspondiente a la frontera izquierda del segmento donde está comprendido el punto x a través de
la relación ( )( )k Integer x a h= − y procurar que este número pertenece al conjunto 1,2, . 3k N − . A continuación se presenta un
pseudocódigo que realiza el algoritmo de la interpolación lineal segmentaria.
( )
( )
( ) ( ) ( )1
_ , , , ,
(* Interpolador lineal para un Interpolador Lineal para una función en el punto
cuyos valores están dadossobre la malla equidistante 1
FunctionPolinomio Cuadratico a h ye ne ne x
P x x
ye i xe i a i
=
+
−
( )
* , 1, 2,3,...,
Parámetros de entrada: - inicio de intervalo , distancia entre nodos,
valores de función en nodos, número de nodos
Parámetro de salida: _ Interpolador Lineal
h i ne
a h
ye i ne
Polinomio Lineal
−
−
−
−
=
( )
( )( )
( )
1 en punto *)
(* encontrar el número de segmen to donde se ubica el punto *)
/
(*La frontera izquierda delsegmen
; ( 1) 1 ; (
to*) 1 * :
3) 3 :
_
P x x
x
k Int x a h
xk a k h
Polinomio L
if k k if k N k N
ineal
−
+ −
− −
( ) ( ) ( )( ) ( ) ( ) ( ) ( )( ) ( ) ( ) ( )
1 / 2 2 1 / 2ye k ye k ye k x xk h ye k ye k ye k x xk x xk h h+ + − − + + − −− + −+
1.3.7 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.
http://es.wikipedia.org/wiki/Matem%C3%A1ticahttp://es.wikipedia.org/wiki/An%C3%A1lisis_num%C3%A9ricohttp://es.wikipedia.org/wiki/Funci%C3%B3n_definida_a_trozoshttp://es.wikipedia.org/wiki/Funci%C3%B3n_definida_a_trozoshttp://es.wikipedia.org/wiki/Polinomioshttp://es.wikipedia.org/wiki/Interpolaci%C3%B3nhttp://es.wikipedia.org/wiki/Polinomiohttp://es.wikipedia.org/wiki/Fen%C3%B3meno_de_Rungehttp://es.wikipedia.org/wiki/Ajuste_de_curvashttp://es.wikipedia.org/wiki/Inform%C3%A1tica
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].
1.3.7 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).
-2 -1 0 1 20,0
0,2
0,4
0,6
1/6 1/6
2/3
B3(x
)
x
-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
Función B-spline cúbica se define a través de la fórmula:
( ) ( )
3 2
3
3
2 1; 0 1
3 2
12 ; 1 2
6
0; 2
x x x
B x x x
x
+ −
= −
(1.1)
El grafico de esta función se presenta en la Fig.1 Fig. 1. Función B-spline cúbica
Las propiedades de B-Splines cúbicas:
1) La función B3(x) y sus dos primeras derivadas son continuas, es decir ( ) ( )+− ,CxB 23 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 2=x 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 ( ) 12
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)
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 ii 3 (1.2)
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 Funciones ( ), ,iB x x h
Propiedades de las funciones de base:
1) ( ) ( )jiBh
xxBh,x,xB
ij
ij −=
−= 33 ; (1.3)
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
(1.4)
3) El área bajo de la función B(x, xi, h) es igual a h, es decir ( ) hdxhx,xBhx
hx
i
i
i
=+
−
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.1)
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 CB̂Y;h,x,xBCyxSy1
(2.2)
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 vectorY
:
YB̂C
1−= (2.3) 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)
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
2 3 1 6 0 0 0 0 0
1 6 2 3 1 6 0 0 0 0
0 1 6 2 3 1 6 0 0 0
0 0 1 6 2 3 0 0 0ˆ
0 0 0 0 2 3 1 6 0
0 0 0 0 1 6 2 3 1 6
0 0 0 0 0 1 6 2 3
B
•
• •
• = • • • • • • • •
• •
•
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
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)
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
-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
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.0)
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
Los resultados obtenidos con estos dos programas se pueden comparar de la Fig.3.
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.
Fig.3 Resultados de interpolación de la función
Runge a través de B-spline
y polinomios usando la malla con 11nodos
PROBLEMAS
I Valores de la función ( ) 1y f x x= = + están dadas en la tabla 1 con 1 el paso 1h = .
Encuéntrese: a) Diferencias finitas 21 1, ,y y . b) El polinomio interpolante global de
Newton. c) valores del polinomio interpolante en los puntos 0.25, 0.75 y 1.0x = y compárese los
resultados con los valores exactos (1.5ptos)
Solución
a)
21 2 1 1 3 2 1
31 4 3 2 1
0.41421; 2 1.73205 2 1.41421 1 0.09637
3 3 2 3 1.73205 3 1.41421 1 0.04648
y y y y y y y
y y y y y
= − = = − + = − + = −
= − + − = − + − =
b)
( ) ( ) ( ) ( )
( ) ( ) ( )
( ) ( )( )( )
2 31 1 1
3 1 2 22
1! 2! 3!
1 0.41421 0.04819 0.007747 2
1 0.41421 1 0.04819 0.007747 2
y y yP x y x x x h x x h x h
h h h
x x x h x x h x h
x x x
= + + − + − − =
= + − − + − − =
= + − − − −
c)
II Valores de la función ( ) 1y f x x= = + están dadas en la tabla 2 con nodos no equidistantes. Encuéntrese a) el polinomio
interpolante global de Lagrange. c) valores del polinomio interpolante en los puntos 1, 5, y 7x = y compárese resultados con los
valores exactos (1.5ptos)
Solución
a) Polinomio de Lagrange
( ) ( ) ( )( )( )
( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )
( )( )
( )
( )
( )( ) ( ) ( )
( )( )
( )
( )
( )( ) ( )
( )( )
( )
( )
( )( ) ( )
1
1
2 1 1 2 2 3 3 4 4 1 2 3
1
2
3
; :
1 2 3
3 81 24 3 8 ;
0 3 0 8
0 81 15 8 ;
3 0 3 8
0 31 40 3
8 0 8 3
nnj
n i i i
i j i i j
x xP x y x x
x x
P x y x y x y x y x x x x
x xx x x
x xx x x
x xx x x
−
=
−= =
−
= + + + = + +
− −= = − −
− −
− −= = − −
− −
− −= = −
− −
b) x ( )1 x ( )2 x ( )3 x ( )2P x 1 x+
1 7/12 7/15 -1/20 1.37 1.41
5 -1/4 1 1/4 2.5 2.45
7 -1/6 7/15 7/10 2.87 2.83
III Considere función ( )f x dada en la lista al final de esta tarea dentro del intervalo (a, b) señalado en la lista
a) Encuéntrese valores de la función sobre la malla equidistante 1 11, 1,2, ,11; ,ix i x a x b= = = con errores aleatorios
( ) 1i iy f x rnd= + una vez con la precisión 0.1 = y otra vez con la precisión6
10−
= y con número aleatorio rnd con la
distribución homogénea dentro del intervalo [0,1] y organice 2 tablas
Tabla 1 0.1 = Tabla 2 6
10−
=
b) usando estas dos tablas como valores de una función desconocida calcúlese valores de la función sobre la malla equidistante
1 201, 1,2, ,201; ,ix i x a x b= = = usando la fórmula de interpolación de Lagrange global y comparese los resultados con los valores exactos de la función ( )f x
i ix iy
1 0.0 1.0
2 3.0 2.0
3 8.0 3.0
i 1 2 ….. 10 11
ix
i
y
i 1 2 …. 10 11
ix
iy
c) Repitiese el cálculo del punto anterior usando las interpolaciones segmentarias lineal y parabólica y explíquese las diferencias que
aparecen en estos cálculos.
1. ( )2
cos , 0, f x x x a b = = =
2. ( )2 2
sin , 0, 2f x x b x a b= − = =
3. ( ) ( )2
cos ln 1 , 1, 5f x x x a b= + = =
4. ( )2 2
cos , 0, 20.0f x x b x a b= − = =
5. ( ) sin , 0, x
f x x xe a b −
= = =
6. ( )4
, 0, 6x
f x x e a b−
= = =
7. ( )2
sin , 0, x
f x e x a b −
= = =
8. ( )2 2
sin 2 , 0, 2f x x b x a b= − = =
9. ( )2
ln(1 )cos , 0, f x x x a b = + = =
10. ( )2
2
sin, 0,
1
xf x a b
x= = =
+
11. ( )2
2, 0, 4
xf x x e a b
−= = =
IV Valores de la función ( )siny x= están dadas en la tabla 2 con nodos no equidistantes.
Encuéntrese a) el polinomio interpolante de Lagrange de segundo orden. c) valores del polinomio interpolante en los puntos
2 y 3x = y compárese resultados con los valores exactos (1.2pto)
Solución
a) Polinomio de Lagrange
( ) ( ) ( )( )( )
( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )
( )( )
( )
( )
( )( ) ( )
( )
( )
( )
( )( )
( ) ( ) ( )
1
1
2 1 1 2 2 3 3 4 4 1 2 3 2 3
2 32 2
22 2 2 2
; :
0 0.5 1 0.5 1
0 2 0 618 62 ; 6
6 0 6 2 2 0 2 6
9 6 32 6 3 3 2
nnj
n i i i
i j i i j
x xP x y x x
x x
P x y x y x y x y x x x x x x
x x x xx x x x x x
P x x x x x x
−
=
−= =
−
= + + + = + + = +
− − − −= = − − = = −
− − − −
= − − + − = − +
( ) ( )2 23
2 3 7 6x
x x x x
+ − = − +
( ) ( ) ( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
2 22 2
2 2
3 3 4 37 6 4 4 7 6 11 12 11 16 0.6875; sin 4 0.7071
4
3 3 13 3 7 6 5 6 5 6 0.8333; sin 3 0.8660
xP x x P
P
= − + = − + = = = =
= − + = = =
V Definida una función sobre una malla equidistante dada en la tabla encuéntrese polinomio interpolante de tercera orden
usando fórmula de Newton (1.2pto)
Solución
1 1 2 3 4
2 32 1 3 2 1 4 3 2 1
1; 0; 9
3; 2 2;
0
6
3
3 3
8h x y y y y
y y y y y y y y y y y y
= = = = = =−
= − = − = − + = − = − + −
−
=
−
( ) ( ) ( ) ( ) ( ) ( ) ( )2 3
1 1 13 1 2 2
2 3 2
2 0 3 1 1 21! 2! 3!
3 1 3 2 4
y y yP x y x x x h x x h x h x x x x x x
h h h
x x x x x x
= + + − + − − = − − − + − − =
= − − + + − + = −
Respuesta
( )3 2
34P x x x= −
i 1 2 3 4
ix 0 1 2 3
iy 0 -3 -8 -9
V Valores de la función ( )y f x x= = están dadas en la tabla con nodos no equidistantes. Encuéntrese a) el interpolador
polinomial global de Lagrange. c) valores del polinomio en los puntos 3, 5 y 7x x x= = = y compárese resultados con los valores
exactos (1.5ptos)
Solución
a) Polinomio de Lagrange
( ) ( ) ( )( )( )
( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )
( )( )
( )
( )
( )( ) ( ) ( )
( )
( )
( )
( )( ) ( ) ( )
( )
( )
( )
( )( ) ( )
( ) ( ) ( ) ( ) ( )
3
1
1
2 1 1 2 2 3 3 4 4 1 2 3
1 2 3
2
; :
1 2 3
4 9 1 9 1 41 1 14 9 ; 1 9 ; 1 4
1 4 1 9 24 4 1 4 9 15 9 1 9 4 40
1 2 34 9 1 9
24 15 40
nj
n i i i
i j i i j
x xP x y x x
x x
P x y x y x y x y x x x x
x x x x x xx x x x x x x x x
P x x x x x x
−
=
−= =
−
= + + + = + +
− − − − − −= = − − = = − − − = = − −
− − − − − −
= − − − − − + −
( ) ( )1 4x −
b) x ( )1 x ( )2 x ( )3 x ( )2P x x 3 1/4 4/5 -1/20 1.7 1.73
5 -1/6 16/15 1/10 2.27 2.24
7 -1/4 4/5 9/20 2.7 2.66
VI Valores de la función ( )y f x x= = están dadas en la tabla con el paso 1h = . Encuéntrese:
a) Diferencias finitas 2 31 1 1, ,y y y . b) El polinomio interpolante global de Newton. c) valores del
polinomio interpolante en los puntos 0.5, 1.5 y 2.5x = y compárese los resultados con los valores exactos
(1.5ptos)
Solución
a)
21 2 1 1 3 2 1
31 4 3 2 1
0.414; 2 1.732 2 1.414 1 0.096
3 3 2 3 1.732 3 1.414 1 0.046
y y y y y y y
y y y y y
= − = = − + = − + = −
= − + − = − + − =
b) ( ) ( ) ( ) ( ) ( ) ( )( )
( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )( )( )
2 31 1 1
3 1 1 1 2 1 2 32 21! 2! 3!
1 0.414 1 0.048 1 2 0.0077 1 2 3 1 1 0.414 2 0.048 0.0077 3
y y yP x y x x x x x x x x x x x x
h h h
x x x x x x x x x
= + − + − − + − − − =
= + − − − − + − − − = + − − − − −
c)
( ) ( ) ( ) ( )( )( ) ( )( )3 0.5 1 0.5 1 0.414 0.5 2 0.048 0.0077 0.5 3 1 0.5 0.414 1.5 0.048 0.019 0.743; 0.5 0.71P = + − − − − − = − + + = =
( ) ( ) ( ) ( )( )( ) ( )( )3 1.5 1 1.5 1 0.414 1.5 2 0.048 0.0077 1.5 3 1 0.5 0.414 0.5 0.048 0.012 1.21; 1.5 1.22P = + − − − − − = + + + = =
3) Valores de la función ( ) ( )1 1y f x x= = + están dadas en la tabla con 1 el paso 1h = .
Usando fórmulas para la derivación numérica encuéntrese la primera y segunda derivadas en el punto 2x = y compárese el resultado
con los valores exactos. ¿Cómo cambia el error de cálculo si el paso de la malla disminuir hasta 0.5h = . (0.5pto)
Solución
( ) ( ) ( ) ( ) ( )( ) ( ) ( ) ( )
( ) ( ) ( ) ( ) ( )( ) ( ) ( ) ( )
2
3 4 2
2 2
2 2
3 4 3 2
3 3
2 2 0.25 0.5 2 0.125
1 1 2 1 1 2 1 9 0.111; 0.014
2 2 0.25 2 0.333 0.5 2 0.0415
2 1 2 2 1 2 2 27 0.074; 0.033
Aproximado f x y y h O h f
Exacto f x x f
Aproximado f x y y y h O h f
Exacto f x x f
= − + = − = −
= − + = − + = − = − =
= − + + = − + =
= + = + = = =
Error se disminuye en 4 veces
VII Para valores de la función ( ) ( )1 1y f x x= = + dadas en la tabla anterior encuéntrese: a) diferencias finitas 2 3 4
1 1 1 1, , ,y y y y . b) El polinomio interpolante global de Newton. c) valores del polinomio interpolante en los puntos
0.5 y 1.5x = y compárese los resultados con los valores exactos
(1.5ptos)
Solución
i ix iy
1 1.0 1.0
2 2.0 1.414
3 3.0 1.732
4 4.0 2.0
a)
21 2 1 1 3 2 1
31 4 3 2 1
0.5; 2 0.333 2 0.5 1 0.333
3 3 0.25 3 0.333 3 0.5 1 0.25
y y y y y y y
y y y y y
= − = − = − + = − + =
= − + − = − + − = −
b)
( ) ( ) ( )( )
( ) ( )( ) ( ) ( )( )( )
( ) ( ) ( )( )( )( ) ( )
2 31 1 1
3 1 2 2
3
21! 2! 3!
1 0.5 0.167 1 0.042 1 2 1 0.5 1 0.167 0.042 2
0.5 0.5 1 0.5 0.5 0.5 1 0.167 0.042 0.5 2 0.6925;
0.5 1 1 0.5 0.6667; 0.6925 0.6667 0.026
1.
y y yP x y x x x h x x h x h
h h h
x x x x x x x x x
x P
f
x
= + + − + − − =
= − + − − − − = + − + − − −
= = + − + − − − =
= + = = − =
= ( ) ( ) ( )( )( )( ) ( )
35 1.5 1 1.5 0.5 1.5 1 0.167 0.042 1.5 2 0.391;
0.5 1 1 1.5 0.4; 0.4 0.391 0.009
P
f
= + − + − − − =
= + = = − =
VIII Valores de la función ( ) ( )1 1y f x x= = + están dadas en la tabla 2 con nodos no equidistantes 1 2 30, 2; , 5x x x= = = .
Encuéntrese a) el polinomio interpolante de Lagrange. b) valores del polinomio interpolante en los puntos 1, y 4x x= = y
compárese resultados con los valores exactos (1.5pto)
Solución
a) Polinomio de Lagrange
( ) ( ) ( )( )( )
( ) ( ) ( ) ( )
( )( )
( )
( )
( )( )( )
( )( )
( )
( )
( )( )
( )( )
( )
( )
( )( )
( ) ( ) ( ) ( ) ( )( ) ( )
1
1
2 1 1 2 2 3 3
1
2
3
2 1 2 3
; :
2 50.1 2 5 ;
0 2 0 5
0 50.167 5 ;
2 0 2 5
0 20.067 2
5 0 5 2
1 0.333 0.167 0.1 2 5 0.056 5 0.011
nnj
n i i i
i j i i j
x xP x y x x
x x
P x y x y x y x
x xx x x
x xx x x
x xx x x
P x x x x x x x x
−
=
−= =
−
= + +
− −= = − −
− −
− −= = − −
− −
− −= = −
− −
= + + = − − − − +
( )2x x −
x ( )1 x ( )2 x ( )3 x ( )2P x ( ) ( )1 1f x x= + ( ) ( )2P x f x = −
1 0.4 0.668 -0.067 0.62 0.5 0.12
4 -0.2 0.668 0.536 0.11 0.2 0.09
i ix iy
1 0.0 1
2 2 0.333
3 5 0.167