Sunteți pe pagina 1din 41

Alba Nubia Giraldo

Ajuste de Curvas
Polinomios e interpolacin
Alba Nubia Giraldo
Objetivo de la interpolacin
Se utiliza para estimar valores intermedios
entre datos precisos.
En la prctica de la ingeniera es bastante
comn el uso de tablas para consignar
informacin en forma discreta.
El objetivo bsico de la interpolacin se
extiende y aprovecha de maneras
distintas que permiten derivar otros
mtodos numricos.
Alba Nubia Giraldo
El mtodo mas comn de interpolar
consiste en determinar un polinomio de
grado n que pase por todos los (n+1)
puntos conocidos.
Polinomio en serie de potencias:


O en forma factorizada:
1
1
2 1 +

+ + + + =
n n
n n
a x a ... x a x a y
) r x ( ..... ) r x ( ) r x ( a y
n
=
2 1 1
Donde a
i
y r
i
son respectivamente los coeficientes y las
races del polinomio
Alba Nubia Giraldo
Diferentes tipos de Interpolacin
Polinomial
a) Lineal o de primer orden
b) Cuadrtica o de segundo orden
c) Cbica o de tercer orden
Alba Nubia Giraldo
Representacin de un polinomio en Matlab :

y=2x
4
+4x
3
-14x
2
-16x+24

se representa como el siguiente vector fila:
>> p=[2 4 -14 -16 24]

p =

2 4 -14 -16 24
La funcin roots calcula todas las races del polinomio:
>> r=roots(p)

r =

-3.0000
-2.0000
2.0000
1.0000
Alba Nubia Giraldo
Cuando se conocen las races de un polinomio el
comando poly lo recalcula:

>> poly(r)

ans =

1.0000 2.0000 -7.0000 -8.0000 12.0000

Mediante la funcin polyval los polinomios pueden
evaluarse para un valor en particular :

>> xi=2.5;
>> yi=polyval(p,xi)

yi =

37.1250
Alba Nubia Giraldo
Verifiquemos grficamente el comportamiento del
polinomio:
>> x=linspace(-4,3);
>> y=polyval(p,x);
>> plot(x,y)

-4 -3 -2 -1 0 1 2 3
-10
0
10
20
30
40
50
60
Alba Nubia Giraldo
Interpolacin lineal
La interpolacin lineal es una lnea recta
ajustada a dos puntos de datos
y=f(x)
y=g(x)
x=a x=b x
f(a)
f(b)
y
De acuerdo a la figura la ecuacin
general para interpolacin lineal
ser:





Donde f(a) y f(b) son valores
conocidos de f(x) en x=a y x=b
respectivamente
) a ( f ) a x (
a b
) a ( f ) b ( f
y +

=
Alba Nubia Giraldo
Interpolacin Lineal en Matlab
El comando interp1 calcula la ordenada (yi) para
un (xi) dado mediante interpolacin lineal a
partir de los datos suministrados:
yi=interp1(x,y,xi)
x, y deben ser arreglos con el mismo nmero de
filas que contengan las coordenadas de los
datos a partir de los cuales se desea interpolar.
xi puede ser un escalar o un vector
Alba Nubia Giraldo
Ejemplo
Se tiene un conjunto de mediciones de
temperatura tomadas de la cabeza de
Cilindros de un motor nuevo.

Tiempo (s) Temperatura (
o
F)
0 0
1 20
2 60
3 68
4 77
5 110
Se desea interpolar
para estimar los
valores de temperatura
para los tiempos de
2.6 y 4.9 segundos
respectivamente.

Alba Nubia Giraldo
Solucin
Primero se ingresan los datos como vectores:

>> x=0:5;
>> y=[0,20,60,68,77,110];

Utilizamos la funcin interp1:

>> y1=interp1(x,y,2.6)

y1 =

64.8000
>> y2=interp1(x,y,4.9)

y2 =

106.7000
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
0
20
40
60
80
100
120
Alba Nubia Giraldo
Ejemplo
En la siguiente tabla se presenta el
coeficiente de expansin () y de
difusividad (o) trmica para el monxido
de carbono a varias temperaturas.
T o 10
4
300 3330 0.2128
400 2500 0.3605
500 2000 0.5324
600 1670 0.7190
Obtenga con ayuda de
Matlab las propiedades
para T=321, 440 y 571
respectivamente
Alba Nubia Giraldo
Solucin
Se crea el vector Temp que corresponde a la variable independiente (x):

>> Temp=[300 400 500 600]';

Se crean los vectores Beta y Alfa que seran las variables dependientes

>> Beta=1000*[3.33 2.5 2 1.67]';
>> Alfa=[0.2128 0.3605 0.5324 0.719]';

Se realiza la interpolacin para el primer dato requerido:

>> y1=interp1(Temp,[Beta Alfa],321)
y1 =
1.0e+003 *
3.15570000000000 0.00024381700000
Alba Nubia Giraldo
Solucin
Creando un vector (Ti) que contenga todos los datos que se desea
interpolar:

>> Ti=[321 440 571];

>> prop=interp1(Temp,[Beta Alfa],Ti)
prop =
1.0e+003 *
3.15570000000000 0.00024381700000
2.30000000000000 0.00042926000000
1.76570000000000 0.00066488600000
Para observar la tabla completa con las temperaturas y las propiedades:
>> [Ti' prop]
Alba Nubia Giraldo
Taller
Suponga que una relacin funcional y=y(x)
est dada en forma tabular como:

x y
0 0.9162
0.25 0.8109
0.50 0.6931
0.75 0.5596
1.00 0.4055
Donde y(x) es una funcin
monotnicamente
decreciente de x. Encontrar
los valores de x que
satisfacen y=0.9 0.7 0.6 0.5
respectivamente, utilizando
Matlab.
Alba Nubia Giraldo
Solucin
>> x=[0;0.25;0.5;0.75;1;];
>> y=[0.9162;0.8109;0.6931;0.5596;0.4055;];
>> yi=[0.9 0.7 0.6 0.6]';
>> xi=interp1(y, x,yi);
>> [yi xi]

ans =

0.9000 0.0385
0.7000 0.4854
0.6000 0.6743
0.6000 0.6743
Alba Nubia Giraldo
Interpolacin Multidimensional
Dimetro, m Pendiente, m/m Flujo, m
3
/s
0.3 0.001 0.04
0.6 0.001 0.254
0.9 0.001 0.69
0.3 0.01 0.13
0.6 0.01 0.82
0.9 0.01 2.38
0.3 0.05 0.31
0.6 0.05 1.95
0.9 0.05 5.66
Los siguientes datos fueron recolectados para una corriente de agua que
fluye en estado estable a travs de una tubera de concreto circular
) , ( Pendiente Dimetro f Flujo =
Alba Nubia Giraldo
Interpolacin Multidimensional
Los datos al interior de la tabla corresponden a los valores del flujo
dependiendo del dimetro y de la pendiente.
Se quiere determinar el valor del flujo para un dimetro de 0.5 y una
pendiente de 0.003
P=0.001 P=0.01 P=0.05
D=0.3 0.04 0.13 0.31
D=0.6 0.254 0.82 1.95
D=0.9 0.69 2.38 5.66
La informacin de la tabla anterior podemos reorganizarla de la siguiente
forma:
Alba Nubia Giraldo
Interpolacin Multidimensional
D=[0.3 0.6 0.9];
P=[0.001 0.01 0.05];
F=[0.04 0.254 0.69
0.13 0.82 2.38
0.31 1.95 5.66];
>> dat=interp2(P,D,F,0.003,0.5)

dat =

0.2732
P=0.001 P=0.01 P=0.05
D=0.3 0.04 0.13 0.31
D=0.6 0.254 0.82 1.95
D=0.9 0.69 2.38 5.66
Para resolver este problema vamos a utilizar la funcin interp2 de Matlab la
cual nos permite realizar interpolacin multidimensional:
Alba Nubia Giraldo
Interpolacin Multidimensional
D=[0.3 0.6 0.9];
P=[0.001 0.01 0.05];
F=[0.04 0.254 0.69
0.13 0.82 2.38
0.31 1.95 5.66];
dat1=interp2(P,D,F,0.003,0.5)
dat1 =

0.5900
En la matriz F el nmero de columnas
debe coincidir con el la longitud del
vector P y el nmero de filas debe
coincidir con la longitud del vector D
Vector asociado a informacin por filas
Vector asociado a informacin por
columnas
Vector asociado a la
informacin de las
columnas de F
Vector asociado a la informacin
de las filas de F
Alba Nubia Giraldo
Interpolacin Multidimensional
>> newrow=interp1(D,F,0.5)

newrow =

0.1827 0.5900 1.4033

>> newF=[F(1,:);newrow;F(2:3,:)]

newF =

0.0400 0.1300 0.3100
0.1827 0.5900 1.4033
0.2540 0.8200 1.9500
0.6900 2.3800 5.6600
Si quisiramos agregar una nueva fila de datos para un dimetro de 0.5:
P=0.001 P=0.01 P=0.05
D=0.3 0.04 0.13 0.31
D=0.5 0.1827 0.59 1.403
D=0.6 0.254 0.82 1.95
D=0.9 0.69 2.38 5.66
Alba Nubia Giraldo
Interpolacin Multidimensional
Si a la nueva matriz le quisiramos agregar una nueva columna de datos
para pendiente de 0.003:

newcol=interp1(P,newF',0.003)

newcol =

0.0600 0.2732 0.3798 1.0656

La matriz newF se debe transponer
porque en interpolacin simple el
nmero de elementos del vector
independiente (P) debe coincidir con
el nmero de filas de la matriz
Alba Nubia Giraldo
Interpolacin Multidimensional
La nueva tabla de datos con la informacin obtenida mediante interpolacin
quedara:
>> finalF=[newF(:,1),newcol',newF(:,2:3)]

finalF =

0.0400 0.0600 0.1300 0.3100
0.1827 0.2732 0.5900 1.4033
0.2540 0.3798 0.8200 1.9500
0.6900 1.0656 2.3800 5.6600
P=0.001 P=0.003 P=0.01 P=0.05
D=0.3 0.04 0.06 0.13 0.31
D=0.5 0.1827 0.2732 0.59 1.403
D=0.6 0.254 0.3798 0.82 1.95
D=0.9 0.69 1.0656 2.38 5.66
Alba Nubia Giraldo
Interpolacin Polinmica con forma
de serie de Potencias
Suponiendo que n+1 puntos de datos se
dan como:
x
1
x
2
.. x
n+1
y
1
y
2
.. y
n+1

El polinomio de grado n que pasa por los
n+1 puntos puede escribirse como:




0
1
1 1
2 1
x a x a ... x a x a ) x ( g
n n
n n
+

+ + + + =
Alba Nubia Giraldo
Si hacemos g(xi)=yi para cada uno de los
puntos de datos se obtendr un sistema
de n+1 ecuaciones lineales en donde las
incgnitas sern los coeficientes del
polinomio de grado n que se ajustar a los
n+1 puntos:

1 1
1
1 2 1 1 1
1 2
1
2 2 2 1 2
1 1
1
1 2 1 1 1
+ +

+ + +
+

+ + + + =
+ + + + =
+ + + + =
n n n
n
n
n
n n
n n
n n
n n
n n
a x a ... x a x a y
. . ... . . .
a x a ... x a x a y
a x a ... x a x a y
Alba Nubia Giraldo
Representado en notacin matricial sera:


Ax=y


Este sistema de n+1 ecuaciones se puede
resolver fcilmente mediante divisin izquierda
de matrices.
El vector A contendr en orden descendente los
n+1 coeficientes para el polinomio de orden n
que conecta los n+1 puntos de datos
(
(
(
(
(
(

=
(
(
(
(
(
(

(
(
(
(
(
(

+ +
+

+ +

1
2
1
1
2
1
1
1
1 1
2
1
2 2
1
1
1 1
1
1
1
n n
n
n
n
n
n
n n
n n
y
.
.
y
y

a
.
.
a
a

x ... x x
. . ... . .
. . ... . .
x ... x x
x ... x x

Alba Nubia Giraldo
Ejemplo
Determinar el polinomio que pasa por los
puntos: (0 1), (1 0.75), (2 0)
Solucin: Reemplazando cada uno de los
xi, yi en un polinomio de grado 2:
a
1
(0)
2
+ a
2
(0) + a
3
=1
a
1
(1)
2
+ a
2
(1) + a
3
=0.75
a
1
(2)
2
+ a
2
(2) + a
3
=0
Este sistema se resuelve fcilmente y se
obtiene el siguiente polinomio:
g(x)=-0.25x
2
+1
(
(
(

=
(
(
(

(
(
(

0
75 0
1
1 2 4
1 1 1
1 0 0
3
2
1
.
a
a
a
Alba Nubia Giraldo
Taller
Para el siguiente conjunto de datos:
x=[1.1 2.3 3.9 5.1]
y=[3.887 4.276 4.651 2.117]
Hallar el polinomio que se ajusta a todos
los puntos.
Graficar el polinomio de ajuste de datos
Hallar el valor de y para x=2.101
Alba Nubia Giraldo
Interpolacin Polinmica con
Matlab
El comando polyfit
calcula el polinomio
de grado n que se
ajusta a n+1 puntos
de datos

La sisntaxis es:
c=polyfit (x,y,n).

El siguiente script
resuelve el ejercicio
anterior.
x=[1.1 2.3 3.9 5.1];
y=[3.887 4.276 4.651 2.117];
coef=polyfit(x,y,3)
yi=polyval(coef,2.101)
scatter(x,y)
hold on
fn=@(x)coef(1).*x.^3+coef(2).*x.^2+coef(3).*x+coef(4)
fplot(fn,[1,5.5])
1 1.5 2 2.5 3 3.5 4 4.5 5 5.5
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
Alba Nubia Giraldo
Interpolacion de splines cubicas
o interpolacin segmentaria

Una spline cubica es una curva continua
construida de modo que pase por una
serie de puntos.
La curva entre cada par de puntos es un
polinomio de tercer grado, calculado para
formar una curva continua entre los dos
puntos y una transicin suave entre este
polinomio de tercer grado y el de los dos
puntos anteriores.

Alba Nubia Giraldo
Interpolacin segmentaria
a. Puntos de datos
b. Interpolacin polinmica de orden 7
c. Interpolacin polinmica de tercer orden
d. Interpolacin segmentaria cbica

a b c d
Alba Nubia Giraldo
Diferentes tipos de Spline

Spline lineal: No son suaves,
en los nodos la pendiente
cambia en forma abrupta

Spline cuadrtica: Puede
presentar curvas abruptas


Spline cbica: Curva mas
suave
Alba Nubia Giraldo
Ejemplo
Usar spline cbica para interpolar los
siguientes puntos de datos.



Graficar la curva suavizada.
Evaluar la funcin en x=5

x 3 4.5 7 9
f(x) 2.5 1 2.5 1
Alba Nubia Giraldo
Se deben generar tres segmentos
cbicos de la forma
f
i
(x)=a
i
x
3
+b
i
x
2
+c
i
x+d
i
Para n intervalos habr 4n
incnitas
En este caso hay 12 incgnitas; se
debe generar un sistema con 12
ecuaciones para resolver:



3 4 5 6 7 8 9 10
1
1.2
1.4
1.6
1.8
2
2.2
2.4
2.6
2.8
3
Los valores de la funcin deben ser iguales en los nodos
interiores (2 n -2 ecuaciones)
La primera y la ltima funciones deben pasar por los puntos
extremos
Las primeras derivadas en los nodos interiores deben ser
iguales (n-1 ecuaciones)
Las segundas derivadas en los nodos interiores deben ser
iguales (n-1 ecuaciones)
Las segundas derivadas en los puntos extremos son cero:

4 ecns

2 ecns

2 ecns

2 ecns
2 ecns
12 ecns

Alba Nubia Giraldo
Planteando las ecuaciones de acuerdo a cada una de las
condiciones se obtiene el siguiente sistema de ecuaciones:

91.125a
1
+20.25b
1
+4.5c
1
+d
1
=1
91.125a
2
+20.25b
2
+4.5c
2
+d
2
=1
343a
2
+49b
2
+7c
2
+d
2
=2.5
343a
3
+49b
3
+7c
3
+d
3
=2.5
27a
1
+9b
1
+3c
1
+d
1
=2.5
729a
3
+81b
3
+9c
3
+d
3
=1
60.75a
1
+9b
1
+c
1
-60.75a
2
-9b
2
-c
2
=0

147a
2
+14b
2
+c
2
-147a
3
-14b
3
-c
3
=0
27a
1
+2b
1
-27a
2
-2b
2

42a
2
+2b
2
-42a
3
-2b
3

18a
1
+2b
1
=0
54a
3
+2b
3
=0

Para solucionar este sistema se debe convertir a notacin matricial:
Alba Nubia Giraldo
Matriz de coeficientes x











Vector de trminos independientes y:
[1 1 2.5 2.5 2.5 1 0 0 0 0 0 0]
91.125 20.25 4.5 1 0 0 0 0 0 0 0 0
0 0 0 0 91.125 20.25 4.5 1 0 0 0 0
0 0 0 0 343 49 7 1 0 0 0 0
0 0 0 0 0 0 0 0 343 49 7 1
27 9 3 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 729 81 9 1
60.75 9 1 0 -60.75 -9 -1 0 0 0 0 0
0 0 0 0 147 14 1 0 -147 -14 -1 0
27 2 0 0 -27 -2 0 0 0 0 0 0
0 0 0 0 42 2 0 0 -42 -2 0 0
18 2 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 54 2 0 0
Alba Nubia Giraldo
El vector de solucin que contendra los valores de
los coeficientes de los polinomios sera:
a=[a
1
b
1
c
1
d
1
a
2
b
2
c
2
d
2
a
3
b
3
c
3
d
3
]
El cual se obtiene mediante divisin izquierda de matrices:
a=x\y;
Solucionando el sistema se obtiene:
a
1
=0.1802 b
1
=-1.6221 c
1
= 3.4606 d
1
=1.8504
a
2
=-0.1982 b
2
=3.4864 c
2
=-19.5273 d
2
=36.3324
a3=0.1125 b
3
=-3.0388 c
3
=26.1489 d
3
=-70.2454

Alba Nubia Giraldo
Script en Matlab
x=[91.125,20.25,4.5,1,0,0,0,0,0,0,0,0;
0,0,0,0,91.125,20.25,4.5,1,0,0,0,0;
0,0,0,0,343,49,7,1,0,0,0,0;
0,0,0,0,0,0,0,0,343,49,7,1;
27,9,3,1,0,0,0,0,0,0,0,0;
0,0,0,0,0,0,0,0,729,81,9,1; %Matriz de coeficientes
60.75,9,1,0,-60.75,-9,-1,0,0,0,0,0;
0,0,0,0,147,14,1,0,-147,-14,-1,0;
27,2,0,0,-27,-2,0,0,0,0,0,0;
0,0,0,0,42,2,0,0,-42,-2,0,0;
18,2,0,0,0,0,0,0,0,0,0,0;
0,0,0,0,0,0,0,0,54,2,0,0];
y=[1;1;2.5;2.5;2.5;0.5;0;0;0;0;0;0;]; %Trminos independientes
a=x\y %Solucionando el sistema
coef1=a(1:4) %Coef. Primer polinomio
coef2=a(5:8) %Coef. Segundo polinomio
coef3=a(9:12) %Coef. Tercer polinomio
Alba Nubia Giraldo
Script en Matlab
fn1=@(x)coef1(1).*x.^3+coef1(2).*x.^2+coef1(3).*x+coef1(4)
fn2=@(x)coef2(1).*x.^3+coef2(2).*x.^2+coef2(3).*x+coef2(4)
fn3=@(x)coef3(1).*x.^3+coef3(2).*x.^2+coef3(3).*x+coef3(4)
X=[3 4.5 7 9]; %Introduciendo datos originales
Y=[2.5 1 2.5 1];
scatter(X,Y) %Graficando puntos de datos
hold
fplot(fn1,[3,4.5]) %Graficando primer polinomio
fplot(fn2,[4.5,7]) %Graficando segundo polinomio
fplot(fn3,[7,9]) %Graficando tercer polinomio
fde5=polyval(coef2,5) %Evaluando punto en el intervalo
%correspondiente

Alba Nubia Giraldo
Grfica de polinomios de
interpolacin
3 4 5 6 7 8 9
0.8
1
1.2
1.4
1.6
1.8
2
2.2
2.4
2.6
Alba Nubia Giraldo
La sintaxis del comando que realiza
interpolacin cbica segmentara es:
spline(x,y,xi,).
Donde x, y son vectores que contienen los
datos y xi el valor que se desea calcular
mediante la interpolacin.
El siguiente script realiza el ejercicio
anterior:

fde5=spline(X,Y,5)
xi=linspace(3,9);
yi=spline(X,Y,xi);
plot(xi,yi)
Spline Cbica con Matlab

S-ar putea să vă placă și