• No se han encontrado resultados

Interpolación polinómica

N/A
N/A
Protected

Academic year: 2021

Share "Interpolación polinómica"

Copied!
8
0
0

Texto completo

(1)

Interpolación polinómica

Contenidos

Polinomio interpolante

Interpolación mediante los polinomios fundamentales de Lagrange Interpolación mediante diferencias divididas

Interpolación con órdenes Matlab

Polinomio interpolante

Problema Tenemos una serie de puntos

(

x

)

x

)

x

)

y queremos encontrar un polinomio que pase por todos ellos.

Por ejemplo, si tenemos el conjunto de puntos:

C

(2 ) 3 ) 4 ) 5 ) 6 )

Dibujamos los puntos: x=[2,3,4,5,6]; y=[2,6,5,5,6];

plot(x,y,'.','markersize',20)

Solución con la matriz de Vandermonde

Como tenemos

5

puntos podemos plantear

5

ecuaciones y necesitamos

5

incógnitas que serán los coeficientes del polinomio. Por lo tanto:

P

(

x

)

x

x

x

x

es decir a , que son

5

incógnitas y el polinomio es, en principio, de grado

4

. En general, para los puntos

(

x

)

x

)

x

)

el polinomio interpolante será de grado . Las ecuaciones serían:

Y el sistema a resolver es:

0

y

0

(

1

y

1

(

n

y

n

=

2 ( 6 ( 5 ( 5 ( 6

4

=

a

0

+

a

1

+

a

2 2

+

a

3 3

+

a

4 4 0

a

1

a

2

a

3

a

4 0

y

0

(

1

y

1

(

n

y

n

n

P

4

(

x

0

)

=

y

0

P

4

(

x

1

)

=

y

1

P

4

(

x

2

)

=

y

2

P

4

(

x

3

)

=

y

3

P

4

(

x

4

)

=

y

4

a

0

+

a

1 0

x

+

a

2

x

2

x

x

0

+

a

3 30

+

a

4 40

=

y

0

a

0

+

a

1 1

x

+

a

2

x

2

x

x

1

+

a

3 31

+

a

4 41

=

y

1

a

0

+

a

1 2

x

+

a

2

x

2

x

x

2

+

a

3 32

+

a

4 42

=

y

2

a

3

+

a

1 3

x

+

a

2

x

2

x

x

3

+

a

3 33

+

a

4 43

=

y

3

a

0

+

a

1 4

x

+

a

2

x

2

x

x

4

+

a

3 34

+

a

444

=

y

4

(2)

La matriz de coeficientes del sistema se llama Matriz de Vandermonde.

Ejercicio 1

Escribir una función V=Vandermonde(x) que tenga como argumentos de entrada el vector x y como argumento de salida la matriz de Vandermonde V.

1.

Calcular los coeficientes del polinomio resolviendo el sistema. 2. Dibujar el polinomio 3. V=Vandermonde(x) V = 1 2 4 8 16 1 3 9 27 81 1 4 16 64 256 1 5 25 125 625 1 6 36 216 1296 a=V\y' aa=a(end:-1:1)' % trasponemos a % y le damos la vuelta,

% empezando por el coeficiente de mayor grado

a = -75.0000 81.0000 -29.2500 4.5000 -0.2500 aa = -0.2500 4.5000 -29.2500 81.0000 -75.0000 xx=linspace(min(x),max(x)); yy=polyval(aa,xx); % polyval % Entrada:

% aa -> los coeficientes del polinomio

% de mayor a menor

% xx -> una serie de puntos

% Salida:

% yy -> valor del polinomio en esos puntos

%

plot(x,y,'.','markersize',20) % dibujamos los puntos

hold on, plot(xx,yy) % dibujamos el polinomio

Existe una función Matlab que calcula la Matriz de Vandermonde. El orden de los elementos es distinto al que nosotros usamos:

1

1

1

1

1

x

0

x

1

x

2

x

3

x

4

x

2 0

x

2 1

x

2 2

x

2 3

x

2 4

x

3 0

x

3 1

x

3 2

x

3 3

x

3 4

x

4 0

x

4 1

x

4 2

x

4 3

x

4 4

a

0

a

1

a

2

a

3

a

4

=

y

0

y

1

y

2

y

3

y

4

(3)

vander(x) ans = 16 8 4 2 1 81 27 9 3 1 256 64 16 4 1 625 125 25 5 1 1296 216 36 6 1

Pero este no es un método aconsejable porque la matriz de Vandermonde, en general, está mal condicionada y puede dar lugar a grandes errores en la solución del sistema.

Interpolación mediante los polinomios fundamentales de Lagrange

Para cada k , existe un único polinomio de grado tal que (uno si k y cero en caso contrario):

son los polinomios fundamentales de Lagrange. Los

5

polinomios fundamentales de Lagrange

correspondientes al conjunto de puntos

C

serían: polinomios_fundamentales_de_Lagrange

Vemos que valen

1

en un nodo y

0

en todos los demás.

Si multiplicamos cada uno de los polinomios fundamentales de Lagrange por su correspondiente y tenemos

y

:

polinomios_fundamentales_de_Lagrange_por_y

Vemos que valen y en el nodo correspondiente y

0

en todos los demás.

El polinomio de interpolación de Lagrange en los puntos x x relativo a los valores y es

Y si sumamos estos cinco polinomios

P

(

x

)

(

x

)

(

x

)

obtenemos el polinomio interpolante de Lagrange polinomio_interpolante_Lagrange

= 0 1

n

k

n

k

x

j

=

kj

=

j

k

z

=

(

z

x

0

)

(

z

x

k−1

)(

z

x

k+1

)

(

z

x

n

)

(

x

k

x

0

)

(

x

k

x

k1

)(

x

k

x

k+1

)

(

x

k

x

n

)

0 1 n k 0 0

y

1 1

y

n n k 0 1

x

n 0

y

1

y

n

P

n

x

=

y

0 0

x

+

y

1 1

x

+

+

y

n n

x

4

=

y

0 0

+

+

y

4 4

(4)

El inconveniente de este método es que si queremos incorporar un nodo nuevo tenemos que rehacer todos los cálculos.

Interpolación mediante diferencias divididas

Fórmula de Newton

El polinomio de interpolación de Lagrange en los puntos x x relativo a los valores y es

Tabla de diferencias divididas

Los coeficientes del polinomio anterior son la primera fila de la tabla:

Con este método, si añadimos un nodo, no hay que rehacer todos los cálculos, sino que se añade una línea más a la tabla anterior en su parte inferior.

Ejercicio 2 Escribir una función a=difdiv(x,y) que calcule la matriz a que contiene la tabla de diferencias divididas de Newton para los puntos contenidos en x, y. No almacenar x en a. Utilizar la matriz a para calcular el polinomio interpolante en la forma de Newton. Dibujar el polinomio interpolante y los puntos.

x=[2,3,4,5,6]; y=[2,6,5,5,6]; a=difdiv(x,y) a = 2.0000 4.0000 -2.5000 1.0000 -0.2500 6.0000 -1.0000 0.5000 0 0 5.0000 0 0.5000 0 0 5.0000 1.0000 0 0 0 6.0000 0 0 0 0 xx=linspace(min(x),max(x)); yy=pol_newton(x,a,xx); plot(x,y,'.','markersize',10) hold on,plot(xx,yy) 0 1

x

n 0

y

1

y

n

P

n

x

=

y

0

+

y

0

y

1

x

x

0

+

y

0

y

1

y

2

x

x

0

x

x

1

+

+

y

0

y

1

y

n

x

x

0

x

x

1

x

x

n−1

x

0

x

1

x

2

x

n−1

x

n

y

0

y

1

y

2

y

n−1

y

n

y

0

y

1

=

xx 0 1 y0y1

y

1

y

2

=

xx 1 2 y1−y2

y

2

y

3

=

xx 2 3 y2−y3

y

n−1

y

n

=

x x n−1 n yn1yn

y

0

y

1

y

2

=

xx 0 2 y y0 1−y y1 2

y

1

y

2

y

3

=

xx 1 3 y y1 2y y2 3

y

2

y

3

y

4

=

xx 2 4 y y2 3y y3 4

y

0

y

1

y

n

=

xx 0 n y0 yn−1−y1 yn

(5)

Interpolación con órdenes Matlab

El polinomio de interpolación se puede obtener con el comando de Matlab polyfit escogiendo como grado del polinomio el número de puntos menos uno. Nos da los coeficientes del polinomio interpolante en un vector, empezando por el de mayor grado:

x=[2,3,4,5,6]; y=[2,6,5,5,6];

pol=polyfit(x,y,length(x)-1); % coeficientes del polinomio

Representamos el polinomio: xx=linspace(min(x),max(x)); yy=polyval(pol,xx);

plot(x,y,'.','markersize',20) hold on,plot(xx,yy)

Ejercicio 3 Escribir una función cheby(f,a,b,n) que interpole la función f en el intervalo [a,b] utilizando n nodos: Utilizando nodos equiespaciados incluyendo los extremos del intervalo.

1.

Utilizando nodos de Chebyshev: 2.

En el intervalo con n

1

nodos y la función:

x

i(n)

= cos

2

n

2

i

1

i

= 1 2

n

(6)

f

(

x

)

En ambos casos dibujar los nodos, la función y el polinomio interpolador. f=@(x) (1)./(1+25*x.^2);

cheby(f,-1,1,11)

Podemos obtener la interpolación lineal a trozos con polinomios de grado cero con la orden interp1 y la opción nearest x=[2,3,4,5,6]; y=[2,6,5,5,6]; xx=linspace(min(x),max(x),1000); yy=interp1(x,y,xx,'nearest'); plot(x,y,'.','markersize',20) axis([2 6 1 7])

hold on, plot(xx,yy),hold off

Y con polinomios de grado uno (o lo que es lo mismo, interpolación lineal a trozos) con la orden interp1 y la opción linear x=[2,3,4,5,6]; y=[2,6,5,5,6]; xx=linspace(min(x),max(x)); yy=interp1(x,y,xx,'linear'); plot(x,y,'.','markersize',20) hold on, plot(xx,yy), hold off

=

1

(7)

Y la interpolación con splines (con la opción not-a-knot) con la orden yy = spline(x,y,xx);

plot(x,y,'.','markersize',20) hold on, plot(xx,yy), hold off

Ejercicio 4 Realizar una programa error_max que, para la función

cos

en el intervalo

[0 0]

tomando como nodos

x

0

dibuje los polinomios de interpolación:

Lineal a trozos. 1.

Con splines. 2.

y calcule, para los puntos puntos=0:0.01:10 el error máximo en cada caso. ¿Qué interpolación da mayor error máximo? error_max

Error interpolación lineal a trozos = 0.12207 Error interpolación con splines = 0.024833

x

1

(8)

Referencias

Documento similar

Para ello, trabajaremos con una colección de cartas redactadas desde allí, impresa en Évora en 1598 y otros documentos jesuitas: el Sumario de las cosas de Japón (1583),

D) El equipamiento constitucional para la recepción de las Comisiones Reguladoras: a) La estructura de la administración nacional, b) La su- prema autoridad administrativa

b) El Tribunal Constitucional se encuadra dentro de una organiza- ción jurídico constitucional que asume la supremacía de los dere- chos fundamentales y que reconoce la separación

La recuperación histórica de la terciaria dominica sor María de Santo Domingo en los últimos años viene dada, principalmente, por causa de su posible influjo sobre personajes

Ciaurriz quien, durante su primer arlo de estancia en Loyola 40 , catalogó sus fondos siguiendo la división previa a la que nos hemos referido; y si esta labor fue de

En este trabajo estudiamos la obra poética en español del escritor y profesor argelino Salah Négaoui, a través de la recuperación textual y análisis de Poemas la voz, texto pu-

Las manifestaciones musicales y su organización institucional a lo largo de los siglos XVI al XVIII son aspectos poco conocidos de la cultura alicantina. Analizar el alcance y

En la parte central de la línea, entre los planes de gobierno o dirección política, en el extremo izquierdo, y los planes reguladores del uso del suelo (urbanísticos y