0% encontró este documento útil (0 votos)
294 vistas8 páginas

Ejercicios Del Método de Lagrange

Este documento describe el uso de interpolación de Lagrange en Matlab. 1) Explica cómo representar polinomios mediante vectores de coeficientes y operaciones básicas como calcular raíces, coeficientes, evaluación y multiplicación. 2) Define la fórmula de Lagrange para interpolar nubes de puntos. 3) Muestra ejemplos de interpolación de un punto y hallar el máximo.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
294 vistas8 páginas

Ejercicios Del Método de Lagrange

Este documento describe el uso de interpolación de Lagrange en Matlab. 1) Explica cómo representar polinomios mediante vectores de coeficientes y operaciones básicas como calcular raíces, coeficientes, evaluación y multiplicación. 2) Define la fórmula de Lagrange para interpolar nubes de puntos. 3) Muestra ejemplos de interpolación de un punto y hallar el máximo.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Interpolación de Lagrange

En Matlab un polinomio se representa mediante un vector fila que contiene los coeficientes de
las potencias en orden decreciente: empezando por el coeficiente principal y terminando por
el termino independiente.

Ejemplo

el polinomio p(x) = 3x 2 − 2x − 1 se representa con

P= [3 -2 -1];

MATLAB contempla las siguientes operaciones básicas con polinomios:

Calculo de raíces a partir de la lista de coeficientes, por medio del comando roots( ), por
ejemplo

r=roots(p)

nos devuelve

r= 1.0000

-0.3333

El resultado es un vector columna de ceros

Calculo de coeficientes a partir del vector columna de ceros, por medio del comando poly( ),
por ejemplo

Poly(r)

Nos devuelve

Ans= 1.0000 -0.6667 -0.3333

Observe que el polinomio devuelto siempre es monico.

Multiplicación de dos polinomios dado por la lista de sus coeficientes, por medio del comando
conv( , ). Por ejemplo, para comprobar que (x-5) (x+1) = x 2 − 4x – 5 basta ejecutar

Conv([1 -5], [1 1])

Obteniendo

Ans = 1 -4 -5

La división se realiza por medio del comando deconv(,): si p(x)= s(x)q(x)+r(x), se puede usar el
formato

[s, r] = deconv (p , q)
Evaluación de un polinomio dado por la lista de sus coeficientes p en un valor x, por medio del
comando polyval(p, x). Por ejemplo, para comprobar que p(1)0 = basta realizar

Polyval(p , 1)

Obteniendo

Ans= 0

Polyval( ) realiza la evaluación siguiendo el algoritmo de Horner o de multiplicación anidada

Si x es un vector o matriz, MATLAB devuelve la matriz con el polinomio evaluado en cada


elemento.

Recordemos que dados unos nodos de interpolación x= [ X0,X1,….,Xn], los polinomios básicos
de Lagrange se definen por la formula

Entonces el polinomio Pn de menor grado que interpola la nube de puntos (X0,f0),….,(Xn,fn)


está dado por

Ejemplo

Dado los puntos (2,5), (4,6), (5,3)

Con la fórmula de lagrange, encuentre el polinomio de interpolación que incluye a estos


puntos

−¿ f i L i =f 0 L 0( x)+f 1 L1 ( x ) +f 2 L2( x)=5 L0 (x)+6 L 1(x)+3 L2 (x)¿

p2 ( x) ∑ ¿
i=0

2
( x−x i)
L1 ( x ) = ∏ ,i=0 ,1 , 2
j=0 j ≠1 ( xi −x j)

2
(x−x i ) ( x−x i)( x −x2 ) ( x−4)( x−5) x 2−9 x +20
L0 ( x ) = ∏ = = =
j=0 j ≠ 0 ( x 0−x j ) ( x i−x j )(x−x 2) (2−4)(2−5) 6
2
( x−x i) (x−x 0 )(x−x 2) (x−2)(x−5) x 2−7 x+ 10
L1 ( x ) = ∏ = = =
j=0 j ≠1 ( xi −x j ) (x i−x 0 )(x 1−x 2) (4−2)(4−5) −2
2
(x−x i) ( x−x 0 )(x−x 1) (x−2)( x−4 ) x 2−6 x +8
L1 ( x ) = ∏ = = =
j=0 j ≠1 ( x2− x j) (x 2−x 0 )(x 2−x1 ) (5−2)(5−4) 3
Sustituir en el polinomio y simplificar

x2 −9 x+20 x 2−7 x+ 10 x 2−6 x +8 −7 2 15 16


p2 ( x ) =5 ( 6
+6 ) (
−2
+3
3 ) ( =
6
x + x−
2 )
3
Se puede verificar que este polinomio incluye a los tres puntos dados.

Si únicamente se desea evaluar el polinomio de interpolación, entonces no es necesario


obtener las expresiones algebraicas L1(x). conviene sustituir desde el inicio el valor de x para
obtener directamente el resultado numérico.

Ejemplo

Dado los siguientes puntos (2,5), (4,6), (5, 3)

Con la formula de lagranje, evalue en x=3, el polinomio de interpolación que incluye a estos
tres puntos dados.

2
p2 (3) ∑ f i Li (3)=f 0 L0 (3)+f 1 L1 ( 3 )+ f 2 L2(3)=5 L0 (3)+6 L1 (3)+3 L2(3)
i=0

2
(3−xi )
L1 ( x ) = ∏ ,i=0 ,1 , 2
j=0 j ≠1 ( xi −x j )

2
(3− xi ) (3−x i )(3−x 2) (3−4)(3−5) 1
L0 ( 3 ) = ∏ = = =
j=0 j ≠0 (x 0 − x j ) (x 0−x 1 )(x1 −x2 ) (2−4)(2−5) 3
2
(3−x i) (3−x 0)(3−x 2) (3−2)(3−5)
L1 ( 3 ) = ∏ = = =1
j=0 j ≠1 (x i −x j ) (x i−x 0)( x 1−x 2) ( 4−2)(4−5)
2
(3−x i) (3−x 0)(3−x 1) (3−2)(3−4) −1
L1 ( 3 ) = ∏ = = =
j=0 j ≠1 (x 2 −x j ) (x 2−x 0)( x 2−x 1) (5−2)(5−4) 3

Finalmente se sustituyen los valores dados de f

p2 (3 )=5 ( 13 )+ 6 (1) +3 (−13 )=20/3


Ejemplo

Use la función Lagrange para el ejemplo anterior:

>> x=[2,4,5]; datos

>>f=[5,6,3];

>>p = lagrange (x,f) obtención del polinomio de interpolación

P=

-7/6*t^2+15/2*t-16/3

>> r= lagrange(x,f,4); evaluar p en un punto dado

r=

>>r =lagrange (x,f, 4.25); evaluar p en un punto desconocido

r=

5.4687

>>plot(x,f, “o”), grid on graficar los puntos

>>hold on, ezplot(p,[2,5]) graficar el polinomio sobre puntos


Encuentre el valor de x para el cual p(x)=4:

>>g=p-4 (ecuación que debe resolverse: g(x)= p(x)-4=0)

g=

-7/6*t^2+15/2*t-28/3

>>s=eval(solve(g)) (obtener la solución con un método MATLAB)

S=

4.7413

1.6873

Encuentre el valor máximo de p(x):

>> p= lagrange(x,f)

P=

-7/6*t^2+15/2*t-16/3

>>g=diff(g) (ecuación que debe resolverse: g(x)=p´(x)=0)

g=

-7/3*t+15/2

>>t=eval(solve(g)) (obtener la solución con un metodo MATLAB)

t=

3.2143

>>r= lagrange(x,f,t)

r=

6.7202 (coordenadas del máximo (t,r))


Interpolación múltiple

Se puede extender la interpolación a funciones de más variables. El procedimiento consiste en


interpolar en una variable, fijando los valores de las otras variables y luego combinar los
resultados. En esta sección se usará el polinomio de lagrange en un ejemplo que contiene
datos de una función que depende de dos variables. No es de interés encontrar la forma
analítica del polinomio de interpolación que tendría términos con más de una variable.

Ejemplo

Se tienen tabulados los siguientes datos f(x,y) de una función f que depende de las variables
independientes x,y. se deben usar todos los datos disponibles para estimar mediante
interpolación polinomial el valor de f (3,12)

Primero interpolamos para x=3 con los datos de cada columna y= 5,10,15,20. Debe usarse un
polinomio de segundo grado pues hay tres datos en la dirección x:
2
p2 ( x) ∑ f i Li ( x ) =f 0 L0 ( x ) + f 1 L1 ( x ) + f 2 L2 ( x ) ;
i=0

2
( x−x i)
L1 ( x ) = ∏ ,i=0 ,1 , 2
j=0 j ≠1 ( xi −x j )

No se requiere la forma algebraica. Se sustituye directamente el valor para interpolar x=3.


2
(3−x j ) (3−x i )(3−x 2 ) (3−4)(3−6) 3
L0 ( 3 ) = ∏ = = =
j=0 j ≠0 (x 0 − x j ) (x 0−x 1 )(x 0−x 2) (2−4)(2−6) 8

2
(3−x j) (3−x i)(3−x 2) (3−2)(3−6) 3
L1 ( 3 ) = ∏ = = =
j=0 j ≠0 (x 1 −x j ) (x 1−x 0)( x 1−x 2) ( 4−2)(4−6) 4
2
(3−x j) (3−x 0)(3−x 1) (3−2)(3−4) −1
L2 ( 3 ) = ∏ = = =
j=0 j ≠0 (x 1 −x j ) (x 2−x 0)( x 2−x 1 ) ( 6−2)(6−4 ) 8
Polinomio de interpolación para cada columna y=5, 10, 15, 20:

p2 (3 )=f 0 L0 ( 3 ) + f 1 L1 (3 )+ f 2 L2 ( 3 ) =f 0 (3 /8)+ f 1 (3/ 4)+f 2 (−1/8)

Los valores de L1 (3) son los mismos para cada columna y:

Se sustituyen los valores de cada columna

Y=5 : p2 (3)= 3.7(3/8)+4.1(3/4)+5.6(-1/8)=3.7625

Y=10: p2 (3)= 4.2(3/8)+5.3(3/4)+6.7(-1/8)=4.7125

Y=15 : p2 (3)= 5.8(3/8)+6.1(3/4)+7.4(-1/8)=5.8250

Y=20 : p2 (3)= 7.1(3/8)+7.9(3/4)+8.2(-1/8)=7.5625

Con los cuatro resultados se interpola en y=12 con un polinomio de tercer grado:

3
p3 ( y ) ∑ f i Li ( y )=f 0 L0 ( y ) + f 1 L1 ( y )+ f 2 L2 ( y ) ;
i=0

3
( y− y i)
L1 ( y ) = ∏ ,i=0 ,1 , 2, 3
j=0 j≠ 1 ( y i − y j )

Se sustituye directamente el valor para interpolar con la otra variable: y=12


2
(12− y j ) (12− y 1)(12− y 2)(12− y 2) (12−10)(12−15)(12−20) −8
L0 (12 )= ∏ = = =
j=0 j≠ 0 ( y 0 − y j ) ( y 0− y 1 )( y 0− y 2 )( y 0− y 3 ) (5−10)(5−15)(5−20) 125

3
(12− y 0 ) (12− y 0 )(12− y 2 )(12− y 3 ) (12−5)(12−15)(12−20) 84
L1 ( 12 ) = ∏ = = =
j=0 j ≠ 0 ( y 1− y 0) ( y 1− y 0)( y 1− y 2)( y 1− y 3) (10−5)(10−15)(10−20) 125

3
(12− y j) (12− y 0)(12− y 1)(12− y 3) (12−5)(12−10)(12−20) 56
L2 ( 12 ) = ∏ = = =
j=0 j ≠ 0 ( y 2 − y j ) ( y 2− y 0 )( y 2− y 1 )( y 0− y 3 ) (1 5−5)(15−10)( 15−20) 125

3
(12− y j) (12− y 0)(12− y 1)(12− y 2) (12−5)(12−10)(12−15) −7
L3 (12 ) = ∏ = = =
j=0 j≠ 0 ( y 2− y j ) ( y 3− y 1 )( y 3− y 1 )( y 3− y 2 ) (20−5)(20−10)(20−15) 125

Resultado final:

Y=12: p3 ( 12 )=f 0 L0 ( 12 )+ f 1 L1 ( 12 ) +f 2 L2 ( 12 ) + f 3 L3 ( 12 )
=(3.7725)(-8/125)+(4.7125)(84/125)+(5.8250(56/125)+(7.5625)(-7/125)=5.1121

F(3,12)= 5.1121

EN MATLAB

Para interpolar en dos o más variable, se puede usar la función lagrange para interpolar en una variable.
Al aplicarla en cada dirección se obtienen los resultados parciales. Interpolando con estos resultados
producirá el resultado final.

Para el ejemplo anterior:

>>x =[2, 4, 6]; interpolaciones parciales en x para cada columna de y

>>f=[3.7, 4.1, 5.6];

>>r1= lagrange(x,f,3);

>>f=[4.2, 5.3, 6.7];

>>f=[5.8, 6.1, 7.4];

>>r3= lagrange (x,f, 3);

>>y=[5, 10, 15, 20]; interpolación en y con los resultados parciales

>>f=[r1,r2,r3,r4];

>>p=lagrange(y, f, 12)

P= 5.1121 resultado final

También podría gustarte