Aproximacion Funciones Con Matlab

Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1de 49

ANÁLISIS NUMÉRICO

PARA INGENIEROS
CIVILES CI 708
2023-01
TEMARIO

UNIDAD 1 UNIDAD 2 UNIDAD 3


INTRODUCCIÓ SISTEMA DE AUTOVALORE
N A MATLAB ECUACIONES SY
LINEALES AUTOVECTOR
ES
TEMARIO

UNIDAD 4 UNIDAD 5 UNIDAD 6 UNIDAD 7

RAICES DE APROXIMACIÓN INTEGRACIÓN ECUACIONES


ECUACIONES NO DE FUNCIONES NUMÉRICA DIFERENCIALE
LINEALES. S
CONTENIDO

1. INTRODUCCIÓN

2. AJUSTE DE CURVAS POLINOMIAL (LINEAL)

3. AJUSTE DE CURVAS NO POLINOMIAL

4. POLINOMIO DE INTERPOLACIÓN DE GRADO “n”: FÓRMULA DE


NEWTON POR DIFERENCIAS DIVIDIDAS.

5. INTERPOLACIÓN SEGMENTARIA(SPLINE)

6. APLICACIONES CON MATLAB


INTRODUCCIÓN

a) Datos dados.

b) Interpolación polinomial.

c) Ajuste de curvas polinomial.


AJUSTE DE CURVAS POLINOMIAL

 Ajustar una curva mediante un polinomio consiste en ubicar los


puntos dados y después trazar un polinomio que visualmente se
acerque a los datos.

 Se debe obtener una función que minimice la discrepancia entre los


puntos y la curva.

 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

El criterio de mínimos cuadrados


consiste en minimizar

𝑆𝑟 =∑ 𝑒 =¿ ∑ ¿ ¿ ¿
𝑖
2

𝑖 𝑖

Entonces derivamos e igualamos a 0,


con respecto a cada coeficiente de la
recta para hallar el mínimo:

}
Los ¨n¨ puntos 𝜕𝑆𝑟
conocidos, tiene como ¿ =− 2 ∑ ( 𝑦 𝑖 − 𝑎0 − 𝑎1 𝑥 𝑖 ) =0
𝜕𝑎0 𝑖
coordenadas para
𝜕 𝑆𝑟
¿ =−2 ∑ ( 𝑦 𝑖 − 𝑎0 − 𝑎1 𝑥𝑖 ) 𝑥 𝑖=0
𝜕 𝑎1 𝑖
AJUSTE DE CURVAS POLINOMIAL, LINEAL

Sistema de ecuaciones normales:

}
¿ ∑ 𝑦 𝑖=∑ 𝑎0+𝑎1 ∑ 𝑥 𝑖
𝑖 𝑖 𝑖
¿ ∑ 𝑥𝑖 𝑦 𝑖=𝑎0 ∑ 𝑥 𝑖 +𝑎1 ∑ 𝑥 2
𝑖
𝑖 𝑖 𝑖

En forma matricial, podemos escribir :


AJUSTE DE CURVAS POLINOMIAL, LINEAL
T=[100, 150, 200, 250, 300 , 400, 500];
u=[2506.7 ,2582.8,2658.1 ,2733.7 , 2810.4, 2967.9, 3131.6];

Temp(T) Energia(u) N=length(T);%numero de elementos


Sum_x=sum(T);
100 2506.7
Sum_x2=sum(T.^2);
150 2582.8
Sum_y=sum(u);
200 2658.1
Sum_xy=sum(T.*u);
250 2733.7
A=[N Sum_x;
300 2810.4
Sum_x Sum_x2 ] ;
400 2967.9
b=[Sum_y ; Sum_xy];
500 3131.6 x=inv(A)*b;
fprintf('a0 =% 7.4f \n',x(1));
fprintf('a1 =% 7.4f \n',x(2));
𝑐𝑎𝑙𝑐
𝑦 𝑖 =𝑎0 +𝑎1 𝑥 𝑖
a0 =-1505.7093
i
a1 = 0.6415
AJUSTE DE CURVAS POLINOMIAL, LINEAL

T=[100, 150, 200, 250,300 , 400, 500]; % valores x


u=[2506.7 ,2582.8,2658.1 ,2733.7 , 2810.4, 2967.9, 3131.6]; % valores y
x=u;y=T;
n=1; % grado uno (lineal)
p=polyfit(x,y,n);
ycalc=polyval(p,x);
plot(u,T,'o',u, ycalc,'--')
title(sprintf('Grado del polinomio %d’,n));
AJUSTE DE CURVAS POLINOMIAL

Se pueden ajustar los datos dados mediante un polinomio de


grado m:

La suma de los cuadrados de los residuos es:

Y, la derivada con respecto


a cada coeficiente será:
AJUSTE DE CURVAS POLINOMIAL

Sistema de ecuaciones con “m+1” incógnitas.


AJUSTE DE CURVAS POLINOMIAL

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));

p =1.8607 2.3593 2.4786


AJUSTE DE CURVAS POLINOMIAL

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

Inspeccionar los datos en forma visual. Luego, linealizar según


sea el caso.
a) Exponencial:
b) Potencias:
c) Razón de crecimiento:
FÓRMULA DE NEWTON Y TABLA DE DIFERENCIAS DIVIDIDAS
Interpolación Polinomial de Newton en Diferencias Divididas
• Dados n+1 puntos, hay uno y sólo un polinomio de grado
“n” que pasa a través de todos los puntos si los nodos son
diferentes.
• La interpolación polinomial consiste en determinar el
polinomio único de n-ésimo grado que pasa por los n+1
puntos dados.
• De esta forma se podrá estimar valores intermedios entre
datos dados.

𝑃 𝑛 ( 𝑥 )=𝑎0+𝑎1 𝑥+𝑎2 𝑥 2 +...+𝑎𝑛 𝑥 𝑛


FÓRMULA DE NEWTON Y TABLA DE DIFERENCIAS DIVIDIDAS

𝑷 𝒏 ( 𝒙 )=𝒃𝟎+ 𝒃𝟏 ( 𝒙 − 𝒙 𝟎 )+ …+𝒃 𝒏 ( 𝒙 − 𝒙 𝟎) ( 𝒙 − 𝒙 𝟏 ) …( 𝒙 − 𝒙 𝒏 −𝟏)

𝒇 ( 𝒙 𝑗 ) − 𝒇 (𝒙 𝒊 ) 𝒇 [𝒙 𝒋 , 𝒙𝑘 ]− 𝒇 [ 𝒙𝑖 , 𝒙 𝒋 ]
𝒇 [𝒙 𝒊 , 𝒙 𝒋 ]= 𝒇 [𝒙 𝒊 , 𝒙 𝒋 , 𝒙 𝒌]=
𝒙 𝑗 − 𝒙𝒊 𝒙 𝑘 − 𝒙𝒊
POLINOMIO DE INTERPOLACIÓN DE GRADO n

Determinar el único polinomio de grado n que pasa por los n+1


puntos dados.
POLINOMIO DE INTERPOLACIÓN DE GRADO n

EJEMPLO: calcular “Ln(3)”, utilizando un método de interpolación


lineal, y conociendo que Ln(1) = 0 y Ln(5) = 1.6094.

RPTA: 1.0986 , Er = 26.75%


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

Con tres datos, se utiliza un polinomio cuadrático.

Por un sistema de ecuaciones:


POLINOMIO DE INTERPOLACIÓN DE GRADO n

EJEMPLO: calcular “Ln(3)”, utilizando el método de interpolación cuadrática


y conociendo que Ln(1)=0, Ln(2)=0.6931 y Ln(5)=1.6094.

Hallando, b0, b1 y b2.


b0 = 0.0000
b1 = (0.6931-0) / (2-1) = 0.6931
b2 = ((1.6094-0.6931)/(5-2)-(0.6931-0)/(2-1))/(5-1)= -0.0969

= 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.

(x) = 4 – 0.5(x-1) + 0.5(x-1)(x-2) - 0.1(x-1)(x-2)(x-3)

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 por Polinomios de orden elevado:


Polinomios de “grado n” para interpolar “n+1” puntos.
Desventaja: el polinomio tiende a oscilar hacia los extremos y puntos
lejanos.

Interpolación por Polinomios de orden reducido:


Polinomios de “menor grado” interpolando a tramos los datos dados:
SPLINES o TRAZADORES.
INTERPOLACIÓN SEGMENTARIA: SPLINE LINEAL
SPLINES LINEALES:
Los Splines de 1er Grado para un grupo de datos ordenados, se
define como un conjunto de funciones lineales.

...

Donde “” es la pendiente de la línea recta que une los puntos.

𝒇 (𝒙 ¿¿𝒊)
𝒎𝒊= 𝒇 (𝒙 ¿¿𝒊+𝟏)− ¿¿
𝒙𝒊+𝟏 −𝒙 𝒊
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

4.5 1.0 𝑚1=


2.5− 1
=0.60
7 − 4.5
7.0 2.5 0.5 − 2.5
𝑚2= =− 1.00
9−7
9.0 0.5

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

Para n+1 puntos dados, para , se desea construir un


polinomio de grado 2 a tramos:
, para
Para que el polinomio a tramos sea un spline e interpole a los
datos dados, se deben cumplir las siguientes condiciones:
• Condición de interpolación: el spline debe pasar por los
puntos dados.
• Condición de continuidad para : el spline debe ser
continuo en el intervalo de interpolación (basta con
verificar que es continuo en los nodos internos).
• Condición de continuidad para la primera derivada del
spline debe ser continua en el intervalo de interpolación
(basta con verificar en los nodos internos).
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

Condición de interpolación: , para



INTERPOLACIÓN SEGMENTARIA: SPLINE CUADRÁTICO

Condición de continuidad para : los segmentos adyacentes


deben ser iguales en los nodos interiores, esto es, para .
INTERPOLACIÓN SEGMENTARIA: SPLINE CUADRÁTICO

Condición de continuidad para : las primeras derivadas en los


nodos interiores son iguales, esto es, para .

Condición Adicional (para completar el sistema): Suponemos


que en el 1er punto la segunda derivada es igual a 0.
INTERPOLACIÓN SEGMENTARIA: SPLINE CUADRÁTICO

EJEMPLO:
Interpolar los datos dados mediante un Spline de Segundo Grado.
Luego, evaluar en x = 5.

Se cuenta con 4 datos y n = 3 intervalos.


Entonces, 3 x (3 ) = 9 incógnitas.

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 de continuidad para :

Condición de continuidad para :

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]

b=[2.5; 0.5; 1; 1; 2.5 ;2.5 ;0; 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.

Finalmente, se evalúa para x = 5, en la segunda expresión:


INTERPOLACIÓN SEGMENTARIA: SPLINE CUADRÁTICO

Y(5)=0.66
INTERPOLACIÓN SEGMENTARIA: SPLINE CÚBICO

El objetivo es obtener un polinomio de tercer grado para cada


intervalo entre los nodos.
INTERPOLACIÓN SEGMENTARIA: SPLINE

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

También podría gustarte