Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FACULTAD DE INGENIERÍA
INGENIERÍA QUÍMICA, AMBIENTAL, ALIMENTOS Y PETROQUIMICA
TAREA No. 8
1.- Dados los datos:
x 1 2 3 5 7 8
f(x) 3 6 19 99 291 444
Calcule f(4) con el uso de polinomios de interpolación de Newton de órdenes 1 a 4. Elija los puntos
base para obtener una buena exactitud. ¿Qué indican los resultados en relación con el orden del
polinomio que se emplea para generar los datos de la tabla?
PROGRAMA EN MATLAB
function [C,D] = difdivabs(X,Y)
%-------
%Este programa realiza la
interpolación de un conjunto de
puntos (x,y)
%por el metodo de diferencias
divididas hacia abajo INICIO
%--------------
%ENTRADAS
% x : Conjunto de abcisas
% y : Conjunto function [C,D] = difdivabs(X,Y)
%SALIDAS
% C : Coeficientes del
polinomio interpolante de Newton
% D : Coeficientes de la n=length(X)
tabla por el método de diferencias
%--------------------------
n=length(X);
D=zeros(n,n); D=zeros(n,n)
D(:,1)=Y';%todas las filas, pero D(:,1)=Y'
solo la 1ra. columna
%Formula de la tabla de diferencia
divididasd hacia abajo. j=2;j=j+1;j=<n
for j=2:n
for k=j:n
D(k,j)=(D(k,j-1)-D(k-1,j-
1))/(X(k)-X(k-j+1));
end
k=j;k=k+1;k=<n
end
%Determinando los coeficientes de
los polinomios interpolantes de
Newton D(k,j)=(D(k,j-1)-D(k-1,j-1))/(X(k)-X(k-j+1))
C=D(n,n);
for k=(n-1):-1:1
C=conv(C,poly(X(k)));
k
m=length(C);
C(m)=C(m)+D(k,k);
end
j
end
RESULTADOS k=(n-1):-1:1
>> X=[1 2 3 5 7 8]
X= C=conv(C,poly(X(k)))
m=length(C)
1 2 3 5 7 8 C(m)=C(m)+D(k,k)
Y=
C
3 6 19 99 291 444
D=
3 0 0 0 0 0
6 3 0 0 0 0
19 13 5 0 0 0
99 40 9 1 0 0
291 96 14 1 0 0
444 153 19 1 0 0
>> P=poly2sym(C)
P=
x^3 - x^2 - x + 4
>> f=inline(P)
f=
Inline function:
f(x) = -x-x.^2+x.^3+4.0
>> f(4)
ans =
48
2.- Determine los coeficientes de la ecuación cúbica que pasa por los primeros cuatro puntos del
problema anterior.
RESULTADOS
>> X=[1 2 3 5 7 8]
X=
1 2 3 5 7 8
Y=
3 6 19 99 291 444
C=
0 0 1 -1 -1 4
D=
3 0 0 0 0 0
6 3 0 0 0 0
19 13 5 0 0 0
99 40 9 1 0 0
291 96 14 1 0 0
444 153 19 1 0 0
>> P=poly2sym(C)
P=
x^3 - x^2 - x + 4
a) Encontrar la ecuación del polinomio interpolante que pase por los datos experimentales.
b) Calcular la velocidad de sedimentación para una concentración volumétrica de 2.5%.
Conc. Vol, % 0.00 1.00 2.00 3.00 4.00 5.00 6.00 7.00 8.00
Vel. Sediment, g/cm2hr 0.00 3.20 4.80 4.25 3.23 2.87 2.75 2.70 2.65
PROGRAMA EN MATLAB
function [C,D] = difdivabs(X,Y)
%-------
%Este programa realiza la interpolación
de un conjunto de puntos (x,y)
%por el metodo de diferencias divididas
hacia abajo
%--------------
%ENTRADAS
% x : Conjunto de abcisas
% y : Conjunto
%SALIDAS
% C : Coeficientes del polinomio
interpolante de Newton
% D : Coeficientes de la tabla
por el método de diferencias
%--------------------------
n=length(X);
D=zeros(n,n);
D(:,1)=Y';%todas las filas, pero solo
la 1ra. columna
%Formula de la tabla de diferencia
divididasd hacia abajo.
for j=2:n
for k=j:n
D(k,j)=(D(k,j-1)-D(k-1,j-
1))/(X(k)-X(k-j+1));
end
end
%Determinando los coeficientes de los INICIO
polinomios interpolantes de Newton
C=D(n,n);
for k=(n-1):-1:1
C=conv(C,poly(X(k))); function [C,D] = difdivabs(X,Y)
m=length(C);
C(m)=C(m)+D(k,k);
end
end n=length(X)
RESULTADOS
>> X=[0 1 2 3 4 5 6 7 8] D=zeros(n,n)
D(:,1)=Y'
X=
0 1 2 3 4 5 6 7
Column 9
k=j;k=k+1;k=<n
8
D(k,j)=(D(k,j-1)-D(k-1,j-1))/(X(k)-X(k-j+1))
>> Y=[0 3.20 4.80 4.25 3.23 2.87 2.75 2.70 2.65]
Y= k
Columns 1 through 4
j
0 3.2000 4.8000 4.2500
Columns 5 through 8
k=(n-1):-1:1
3.2300 2.8700 2.7500 2.7000
Column 9 C=conv(C,poly(X(k)))
m=length(C)
2.6500 C(m)=C(m)+D(k,k)
Column 9
D=
Columns 1 through 4
0 0 0 0
3.2000 3.2000 0 0
4.8000 1.6000 -0.8000 0
4.2500 -0.5500 -1.0750 -0.0917
3.2300 -1.0200 -0.2350 0.2800
2.8700 -0.3600 0.3300 0.1883
2.7500 -0.1200 0.1200 -0.0700
2.7000 -0.0500 0.0350 -0.0283
2.6500 -0.0500 -0.0000 -0.0117
Columns 5 through 8
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0.0929 0 0 0
-0.0229 -0.0232 0 0
-0.0646 -0.0083 0.0025 0
0.0104 0.0150 0.0039 0.0002
0.0042 -0.0013 -0.0027 -0.0009
Column 9
0
0
0
0
0
0
0
0
-0.0001
>> V=poly2sym(C)
V=
-
(2639824238722827*x^8)/18446744073709551616
+ (4853021769887763*x^7)/1152921504606846976
- (3448506314669319*x^6)/72057594037927936 +
(18407*x^5)/72000 -
(2624277214116349*x^4)/4503599627370496 +
(6905769628614417*x^3)/36028797018963968 +
(3808508342025039*x^2)/36028797018963968 +
(91657*x)/28000
>> V=inline(V)
V=
Inline function:
V(x) =
x.*3.273464285714286+x.^2.*1.057073412698295e-
1+x.^3.*1.916736111111211e-1-
x.^4.*5.827065972222265e-
1+x.^5.*2.556527777777778e-1-
x.^6.*4.785763888888904e-
2+x.^7.*4.209325396825408e-3-
x.^8.*1.431051587301591e-4
>> V(2.5)
ans =
4.7102
4.- La potencia generada por un molino de viento varía con la velocidad del viento. En un
experimento, se obtuvieron las cinco mediciones siguientes:
Determine el polinomio de Lagrange de 4to. orden que pase por los cinco puntos. Usando este
polinomio calcular la potencia a una velocidad de viento de 42 km/hr.
PROGRAMA EN MATLAB
function [C] = lagran(X,Y)
%------------------------------- V=1
%Este programa realiza la interpolación
de Lagrange a un conjunto de
% puntos (x,y) y muestra la lista de
coeficientes del polinomio j=1; j=j+1; j<n+1
% interpolante
% ENTRADAS
NO
% X : Vector de las abcisas
% Y : Vector de las ordenadas
% SALIDAS k~=j
% C : Lista de coeficientes del
polinomio de Lagrange SI
%-----------------------------------
n1=length(X);
n=n1-1; V=conv(V,poly(X(j)))/(X(k)-X(j))
L=zeros(n1,n1);
for k=1:n+1,
V=1;
j
for j=1:n+1,
if k~=j
V=conv(V,poly(X(j)))/(X(k)-
X(j));
L(k,:)=V
end
end
L(k,:)=V;
end k
C=Y*L;
end
RESULTADOS C=Y*L
>> X=[22.53 35.41 48.28 61.15 74.03]
X= C
C=
>> P=poly2sym(C)
P=
(140311507112827*x^4)/1152921504606846976 -
(20309136268297*x^3)/1125899906842624 +
(1360600532165*x^2)/2199023255552 +
(97575570550203*x)/8796093022208 -
75935472333177/1099511627776
>> P=inline(P)
P=
Inline function:
P(x) =
x.*1.109305805473502e+1+x.^2.*6.1872948761674
71e-1-x.^3.*1.803813655625053e-
2+x.^4.*1.217008326691539e-4-
6.906290976364926e+1
>> P(42)
ans =
530.5709
6.- Emplee la porción de la tabla de vapor que se da para el H2O supercalentada a 200 MPa, para:
a) encontrar la entropía correspondiente S para un volumen específico v de 0.108 m3 /kg con
interpolación lineal, b) encontrar la misma entropía correspondiente con el uso de interpolación
cuadrática, y c) hallar el volumen correspondiente a una entropía de 6.6 con el empleo de
interpolación inversa.
PROGRAMA EN MATLAB
%P8-E6
clc
clear all
X=input('lea el conjunto de
abcisas\n');
Y=input('lea el conjunto de
ordenadas\n');
[C,P]=Lagrange(X,Y)
fprintf('¿Quiere evaluar la
funcion en algun punto?\n')
l=input('ingrese 1 si quiere
evaluar la funcion\n');
if l==1
EV=inline(P);
r=input('ingrese el punto a
evaluar\n');
q=EV(r);
fprintf('la funcion evaluada es:
%4.3f \n',q)
end
PROGRAMA FUNCTION EN MATLAB
function [C] = lagran(X,Y)
%-------------------------------
%Este programa realiza la
interpolación de Lagrange a un
conjunto de
% puntos (x,y) y muestra la lista
de coeficientes del polinomio
% interpolante
% ENTRADAS
% X : Vector de las abcisas
% Y : Vector de las ordenadas
% SALIDAS
% C : Lista de coeficientes del INICIO
polinomio de Lagrange
%---------------------------------
--
function [C] = lagran(X,Y)
n1=length(X);
n=n1-1;
L=zeros(n1,n1); n1=length(X);
for k=1:n+1,
V=1; n=n1-1;
for j=1:n+1, L=zeros(n1,n1)
if k~=j
V=conv(V,poly(X(j)))/(X(k)-X(j));
k=1;k=k+1;k<n+1
end
end
L(k,:)=V;
end
V=1
C=Y*L;
end
NO
k~=j
SI
V=conv(V,poly(X(j)))/(X(k)-X(j))
L(k,:)=V
C=Y*L
FIN
7.- Desarrolle, depure y pruebe un sub-programa (function) en MATLAB, para encontrar un
polinomio interpolante de grado n y el valor de f(x) para cualquier x en el intervalo [x min, xmax].
Formule un Programa interactivo en GUIDE. Pruebe el programa con los datos del ejercicio 4. a)
Usando el método de Lagrange, b) Para el método de Newton.
PROGRAMA EN MATLAB
function varargout = P8_E7(varargin)
% P8_E7 MATLAB code for P8_E7.fig
% P8_E7, by itself, creates a new P8_E7 or raises the existing
% singleton*.
%
% H = P8_E7 returns the handle to a new P8_E7 or the handle to
% the existing singleton*.
%
% P8_E7('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in P8_E7.M with the given input arguments.
%
% P8_E7('Property','Value',...) creates a new P8_E7 or raises the
% existing singleton*. Starting from the left, property value pairs
are
% applied to the GUI before P8_E7_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property
application
% stop. All inputs are passed to P8_E7_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Outputs from this function are returned to the command line.
function varargout = P8_E7_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
8.- Cual es la diferencia entre ajuste de curvas por mínimos cuadrados (suavisado de curvas) y
interpolación polinómica de Lagrange? Que usos tiene cada uno?
2. Los valores de y son variables aleatorias independientes y todas tienen la misma varianza.