0% encontró este documento útil (0 votos)
12 vistas4 páginas

Interpolacion

Este documento describe un programa para modelar datos de temperatura utilizando interpolación lineal, cuadrática, cúbica y spline. Presenta funciones para seleccionar el método de modelado, graficar los datos originales y modelados, y calcular valores de temperatura para puntos específicos utilizando cada método. Los usuarios pueden seleccionar un método, ver la gráfica resultante, y calcular valores de temperatura individuales.

Cargado por

Jhon Ricaldi
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)
12 vistas4 páginas

Interpolacion

Este documento describe un programa para modelar datos de temperatura utilizando interpolación lineal, cuadrática, cúbica y spline. Presenta funciones para seleccionar el método de modelado, graficar los datos originales y modelados, y calcular valores de temperatura para puntos específicos utilizando cada método. Los usuarios pueden seleccionar un método, ver la gráfica resultante, y calcular valores de temperatura individuales.

Cargado por

Jhon Ricaldi
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

INTRODUCCIÓN A LOS MÉTODOS COMPUTACIONALES (CI171)

ACTIVIDAD DE APRENDIZAJE TA04


Ciclo 2019-02

[Link]

function grado_Callback(hObject, eventdata, handles)

% capturo el grado del popupmenu

global n;
contenido=get(hObject,'string');
a1=get(hObject,'value');
n=contenido(a1);
function Graficar_Callback(hObject, eventdata, handles)

% BOTON GRAFICAR

global n;
global X ;
global Y;
global Z
global p;
global pp;

X=[1:1:15]
Y=[39.9 37.2 35.8 35.7 29.5 29.4 29.2 29.0 27.6 27.5 27.3 26.7 26.5 25.7 25.7]
Z=[39.5 37.9 35.6 35.5 29.8 29.7 29.0 27.3 26.4 25.4 23.7 23.4 23.3 23.2 21]

%Capturo los datos de la tabla


%t=str2double(get([Link],'data'));
%X=t(:,1);
%Y=t(:,2);
%Z=t(:,3);

%Capturo datos de un edittext


%X=str2num(get(handles.edit7,'string'));
%Y=str2num(get(handles.edit8,'string'));
%Z=str2num(get(handles.edit9,'string'));

%gráfica con curvas


m=length(X);
X1=linspace(X(1),X(m),100);

switch cell2mat(n)
case 'Lineal'
Y1=interp1(X,Y,X,'linear');
Y11=interp1(X,Y,X1,'linear');
%z
Z1=interp1(X,Z,X,'linear');
Z11=interp1(X,Z,X1,'linear');
%plot
axes(handles.axes1)
plot(X,Y,'o',X,Z,'o',X1,Y11,'g',X1,Z11,'r');
grid minor
dat=[Y1' Z1'];
set(handles.uitable2,'data',dat);
case 'Cuadratico'
%y
p=polyfit(X,Y,2);
ycalc=polyval(p,X);
%z
pp=polyfit(X,Z,2);
zcalc=polyval(pp,X);
%con curvas
ycalc1=polyval(p,X1);
zcalc1=polyval(pp,X1);

%coeficiente Ry
nelem=length(Y);
yp=sum(Y)/nelem;
N=sum((ycalc-yp).^2);
D=sum((Y-yp).^2);
ry=N/D;
%coeficiente Rz
nelem=length(Z);
yp=sum(Z)/nelem;
N=sum((zcalc-yp).^2);
D=sum((Z-yp).^2);
rz=N/D;
%-----------------
plot(X,Y,'o',X,Z,'o',X1, ycalc1,'g',X1, zcalc1,'r')
title(sprintf('Grado del polinomio %d',2));
xlabel(sprintf('Ry: %7.7f RZ: %7.7f',ry,rz));
grid minor
dat=[ycalc' zcalc'];
set(handles.uitable2,'data',dat);

case 'Cubico'
%y
p=polyfit(X,Y,3);
ycalc=polyval(p,X);
%z
pp=polyfit(X,Z,3);
zcalc=polyval(pp,X);
%con curvas
ycalc1=polyval(p,X1);
zcalc1=polyval(pp,X1);

%coeficiente Ry
nelem=length(Y);
yp=sum(Y)/nelem;
N=sum((ycalc-yp).^2);
D=sum((Y-yp).^2);
ry=N/D;
%coeficiente R z
nelem=length(Z);
yp=sum(Z)/nelem;
N=sum((zcalc-yp).^2);
D=sum((Z-yp).^2);
rz=N/D;
%-----------------
plot(X,Y,'o',X,Z,'o',X1, ycalc1,'g',X1, zcalc1,'r')
title(sprintf('Grado del polinomio %d',3));
xlabel(sprintf('Ry: %7.7f RZ: %7.7f',ry,rz));
grid minor
dat=[ycalc' zcalc'];
set(handles.uitable2,'data',dat);

case 'Spline'
%Y3
Y3 = spline( X , Y , X );
Y33 = spline( X , Y , X1 );
%Z3
Z3 = spline( X , Z , X );
Z33 = spline( X , Z , X1 );
axes(handles.axes1)
plot(X,Y,'o',X,Z,'o',X1,Y33,'g',X1,Z33,'r');
grid minor
dat=[Y3' Z3']
set(handles.uitable2,'data',dat);
case 'ERROR'
E=((abs((Y-Z).^1))./Y)*100
set(handles.uitable2,'data',E');
end

function Calcular_Callback(hObject, eventdata, handles)

% BOTON CALCULAR
global n;
global X ;
global Y;
global Z
global p;
global pp;

x=eval(get([Link],'string'));

switch cell2mat(n)
case 'Lineal'
valY1 = interp1( X , Y ,x);
valZ1 = interp1(X , Z ,x);
set([Link],'string',valY1);
set([Link],'string',valZ1);
case 'Cuadratico'
valY2 = polyval(p,x);
valZ2 = polyval(pp,x);
set([Link],'string',valY2);
set([Link],'string',valZ2);

case 'Cubico'
valY3= polyval(p,x);
valZ3= polyval(pp,x);
set([Link],'string',valY3);
set([Link],'string',valZ3);
case 'Spline'
valY4 = spline( X , Y , x );
valZ4 = spline( X , Z , x );
set([Link],'string',valY4);
set([Link],'string',valZ4);
end

También podría gustarte