Aproximacion Funciones Con Matlab
Aproximacion Funciones Con Matlab
Aproximacion Funciones Con Matlab
PARA INGENIEROS
CIVILES CI 708
2023-01
TEMARIO
1. INTRODUCCIÓN
5. INTERPOLACIÓN SEGMENTARIA(SPLINE)
a) Datos dados.
b) Interpolación polinomial.
La técnica que se utiliza para este fin se conoce como ajuste por
mínimos cuadrados (AMC).
AJUSTE DE CURVAS POLINOMIAL, LINEAL
𝑦𝑛
𝑦 𝑛 −1 Pendiente
𝑦𝑖
𝑦3
⥂𝑒𝑖 ⥂𝑒3
𝑦𝑖
𝑦 𝑐𝑎𝑙𝑐
𝑦2
Intercepto
𝑥1 𝑥2 𝑥3 𝑥𝑖 𝑥𝑛−1 𝑥𝑛
𝑐𝑎𝑙𝑐
𝑦 𝑖 = 𝑎0 +𝑎 1 𝑥 𝑖
𝑒 𝑖= 𝑦 𝑖 − 𝑎 0 − 𝑎 1 𝑥 𝑖
AJUSTE DE CURVAS POLINOMIAL, LINEAL
𝑆𝑟 =∑ 𝑒 =¿ ∑ ¿ ¿ ¿
𝑖
2
𝑖 𝑖
}
Los ¨n¨ puntos 𝜕𝑆𝑟
conocidos, tiene como ¿ =− 2 ∑ ( 𝑦 𝑖 − 𝑎0 − 𝑎1 𝑥 𝑖 ) =0
𝜕𝑎0 𝑖
coordenadas para
𝜕 𝑆𝑟
¿ =−2 ∑ ( 𝑦 𝑖 − 𝑎0 − 𝑎1 𝑥𝑖 ) 𝑥 𝑖=0
𝜕 𝑎1 𝑖
AJUSTE DE CURVAS POLINOMIAL, LINEAL
}
¿ ∑ 𝑦 𝑖=∑ 𝑎0+𝑎1 ∑ 𝑥 𝑖
𝑖 𝑖 𝑖
¿ ∑ 𝑥𝑖 𝑦 𝑖=𝑎0 ∑ 𝑥 𝑖 +𝑎1 ∑ 𝑥 2
𝑖
𝑖 𝑖 𝑖
x=[0:5];
y=[2.1, 7.7, 13.6, 27.2, 40.9, 61.1];
m=2; % grado 2
p=polyfit(x,y,m); % [a2,a1,a0]
ycalc=polyval(p,x); % calcula usando
% los coeficientes del polinomio
%-----------------
plot(x,y,'o',x, ycalc,'--’)
title(sprintf('Grado del polinomio %d’,m));
x=[10,20,30,40,50,60,70,80,90,100];
y=[23,45,60,82,111,140,167,198,200,220];
for m=2:5
p=polyfit(x,y,m);
ycalc=polyval(p,x);
subplot(2,2,m-1)
%----------------------
plot(x,y,'o',x,ycalc)
title(sprintf('Grado del polinomio %d',m);
end
AJUSTE DE CURVAS POLINOMIAL
x=[10 20 30 40 50];
y=[23;45;60;82;111]
m=2;
function [p]=ajuste_polinomial(x,y,m)
% ajuste_polinomial
% p=coeficientes del polinomio
%
p=polyfit(x,y,m); % p=[am,am-1,am-2,...,a0]
yc=polyval(p,x);
x1=linspace(min(x),max(x),100);
y1=polyval(p,x1);
figure(1),clf
%plot(x,y,'ro',x1,y1,'b')
hold on
plot(x,y,'ro','LineWidth',2)
plot(x1,y1,'b','LineWidth',2)
hold off
grid
end
p=
0.0150 1.2300 10.8000
AJUSTE DE CURVAS NO POLINOMIAL
𝒇 ( 𝒙 𝑗 ) − 𝒇 (𝒙 𝒊 ) 𝒇 [𝒙 𝒋 , 𝒙𝑘 ]− 𝒇 [ 𝒙𝑖 , 𝒙 𝒋 ]
𝒇 [𝒙 𝒊 , 𝒙 𝒋 ]= 𝒇 [𝒙 𝒊 , 𝒙 𝒋 , 𝒙 𝒌]=
𝒙 𝑗 − 𝒙𝒊 𝒙 𝑘 − 𝒙𝒊
POLINOMIO DE INTERPOLACIÓN DE GRADO n
x=[1 5];
y=[0,1.6094];
p=polyfit(x,y,1);
ycalc=polyval(p,x);
v3=polyval(p,3)
plot(x,y,'o',x,ycalc)
grid minor
p =0.4024x -0.4024
v3 =0.8047
POLINOMIO DE INTERPOLACIÓN DE GRADO n
= 1.1924
RPTA: 1.0986
POLINOMIO DE INTERPOLACIÓN DE GRADO n
x=[1 2 5];
y=[0,0.6931,1.6094];
n=length(x);
x1=linspace(x(1),x(m),100);
m=n-1; % el grado del polinomio.
p=polyfit(x,y,m);
ycalc=polyval(p,x);
ycalc1=polyval(p,x1);
plot(x,y,'o',x1, ycalc1,'--')
title(sprintf('Grado del polinomio
%d’,m));
grid minor
p = -0.09690.9839x -0.8869
p = -0.09690.9839x -0.8869
TABLA DE DIFERENCIAS DIVIDIDAS
EJEMPLO:
Hallar el polinomio que interpola los siguientes datos:
Solución:
3ra Columna: 4ta Columna: 5ta:Columna
- 0.1
TABLA DE DIFERENCIAS DIVIDIDAS
EJEMPLO:
Como se calcularon 03 nuevas columnas (4 puntos), el Polinomio
es de Grado 03.
Resultando:
TABLA DE DIFERENCIAS DIVIDIDAS
x=[1 2 3 5];
y=[4 3.5 4 5.6];
n=length(x);
M=zeros(n,n+1);
M(:,1)=x;
M(:,2)=y;
for i=2:n
for j=i:n f(x) = 4 – 0.5(x-1) + 0.5(x-1)(x-2) - 0.1(x-1)(x-2)(x-3)
M(j,i+1)=(M(j,i)-M(j-1,i))/(M(j,1)- M(j-i+1,1));
end
end
POLINOMIO DE INTERPOLACIÓN DE GRADO n
x=[1 2 3 5];
y=[4 3.5 4 5.6];
N=length(x);
x1=linspace(x(1),x(N),100);
n=N-1;%grado del polinomio: 3
p=polyfit(x,y,n);
ycalc=polyval(p,x);%muestras
ycalc1=polyval(p,x1);%graf polinomio
v1=polyval(p,4)
plot(x,y,'o',x1,ycalc1)
p = -0.1000+1.1000-3.1000x + 6.1000
grid minor
v4 = 4.9000
INTERPOLACIÓN SEGMENTARIA: SPLINE
...
𝒇 (𝒙 ¿¿𝒊)
𝒎𝒊= 𝒇 (𝒙 ¿¿𝒊+𝟏)− ¿¿
𝒙𝒊+𝟏 −𝒙 𝒊
INTERPOLACIÓN SEGMENTARIA: SPLINE LINEAL
𝒇 (𝒙 ¿¿𝒊)
EJEMPLO: 𝒎𝒊= 𝒇 (𝒙 ¿¿𝒊+𝟏)− ¿¿
𝒙𝒊+𝟏 −𝒙 𝒊
Interpolar los datos dados mediante un Spline de Primer Grado.
Luego, evaluar en x = 5.
X F(x)
1− 2.5
3.0 2.5 𝑚0 =
4.5 −3
=−1.00
Ecuación de la recta:
S ( 5 ) = 1.3
INTERPOLACIÓN SEGMENTARIA: SPLINE LINEAL
x = [ 3 4.5 7 9 ];
y = [ 2.5 1 2.5 0.5 ];
XX = 3 : 0.1 : 9;
YY=interp1(x,y,XX,'linear');
plot(x,y,'o',XX,YY)
Yo = interp1( x , y ,5)
Yo =1.3000
INTERPOLACIÓN SEGMENTARIA: SPLINE CUADRÁTICO
Procedimiento:
Para “n+1” datos ( i = 0, 1, 2, …, n) “n” intervalos.
Por lo tanto, son “3xn” incógnitas y se requiere de “3xn”
ecuaciones o condiciones.
INTERPOLACIÓN SEGMENTARIA: SPLINE CUADRÁTICO
(ó
(ó
INTERPOLACIÓN SEGMENTARIA: SPLINE CUADRÁTICO
EJEMPLO:
Interpolar los datos dados mediante un Spline de Segundo Grado.
Luego, evaluar en x = 5.
X F(x)
3.0 2.5
4.5 1.0
7.0 2.5
9.0 0.5
INTERPOLACIÓN SEGMENTARIA: SPLINE
Condición de interpolación:
(ó
(ó )
Condición adicional:
INTERPOLACIÓN SEGMENTARIA: SPLINE CUADRÁTICO
INTERPOLACIÓN SEGMENTARIA: SPLINE
A=[ 3 1 0 0 0 0 0 0; 0 0 0 0 0 81 9 1 ;
4.5 1 0 0 0 0 0 0; 0 0 20.25 4.5 1 0 0 0;
0 0 49 7 1 0 0 0; 0 0 0 0 0 49 7 1;
1 0 -9 -1 0 0 0 0;0 0 14 1 0 -14 -1 0]
x=inv(A)*x x =-1.0000
5.5000
0.6400
-6.7600
18.4600
-1.6000
24.6000
-91.3000
INTERPOLACIÓN SEGMENTARIA: SPLINE
:
Luego, estos 9 coeficientes son reemplazados en las ecuaciones
cuadráticas originales, obteniéndose lo siguiente por cada intervalo.
Y(5)=0.66
INTERPOLACIÓN SEGMENTARIA: SPLINE CÚBICO
EJEMPLO:
Interpolar los datos usando un Spline cúbico. Luego, evaluar en x = 5.
>> x = [ 3 4.5 7 9 ];
>> y = [ 2.5 1 2.5 0.5 ];
>> XX = 3 : 0.1 : 9;
>> YY = spline( x , y , XX );
>> plot(x,y,'o',XX,YY)
>> Xo = 5;
>> Yo = spline( x , y , Xo )
Yo =1.1519
INTERPOLACIÓN SEGMENTARIA: SPLINE
x = [3 4.5 7 9];
y = [2.5 1 2.5 0.5];
a = 5;
function [fa]=spline_cubico(x,y,a)
%spline_cubico calcula interpolación usando splines
%cúbicos
fa=spline(x,y,a); % trazadores cúbicos
figure(1),clf
x1=linspace(x(1),x(end),500);
fx1=spline(x,y,x1); % calcula trazadores únicamente
cúbicos
hold on
plot(x,y,'ro','LineWidth',3)
plot(x1,fx1,'b','LineWidth',2)
plot(a,fa,'ko','LineWidth',3)
stem(x,y,'r','LineWidth',2)
hold off
grid minor
end
INTERPOLACIÓN SEGMENTARIA: SPLINE
Y=0.66 Y=1.15
x=5
ACTIVIDAD DE APRENDIZAJE TA-04
https://ayudasingenieria.com/files/METODOS_NUMERICOS/chapra.pdf
Cap 20 – pag 463