Académique Documents
Professionnel Documents
Culture Documents
Inicio
AjustededatosconMATLAB
MATLAB
Numrico
AjustededatosconMATLAB
Racesdeecuaciones
Sistemasdeecuaciones
Valoresyvectores
propios
Integracinnumrica
Ecuaciones
diferenciales
Interpolacin,regresin
MATLABdisponedelafuncinpolyfitparaajustardatosaunpolinomiodegradon.Tambintienela
posibilidaddeajustarlosdatosdeformainteractivaenlaventanagrfica(FigureWindows)seleccionadoenel
menTools/BasicFitting.
Ajustededatosconeloperador,divisinporlaizquierda\.
Conocidoslosnparesdedatos(xi,yi)i=1,2...nresolvemoselsistemadenecuacionesparadeterminarlas
incgnitas,loscoeficientesa1,a2,a3delpolinomioquemejorajusta
2
y = a1 x
y1
+ a2 x + a3
2
1
2
x
y2
2
=
...
...
yn
2
xn
x1
x2
...
xn
a
1
1
a2
...
a3
Tenemosn=9paresdedatos(xi,yi).Porloquetenemosunsistemadenueveecuacionescontresincgnitas,que
podemosresolverconeloperador\(divisinporlaizquierda)
x=[0,1,2,3,4,5,6,7,7.44]'
y=[0,4.03,8.12,14.23,20.33,27.1,34.53,42.63,46.43]'
M=[x.^2,x,ones(size(x))]
a=M\y%coeficientesdelpolinomio
holdon
plot(x,y,'ro','markersize',8,'markerfacecolor','r')
x=(0:0.1:max(x))'
y=[x.^2,x,ones(size(x))]*a%evalaelpolinomioparacadavalordex
plot(x,y,'b')
xlabel('x')
ylabel('y')
title('Polinomioaproximador')
holdoff
Enlaventanadecomandosvemosloscoeficientesa1,a2,a3comoelementosdelvectora.Enlaventanagrfica
seobtieneunafigurasimilar.
a=
0.3446
3.7004
0.1188
Ajustededatosconpolyfit
ParaelajustededatosaunpolinomioseutilizalafuncinMATLABpolifit,cuyasintaxiseslasiguiente:
p=polyfit(x,y,n)
x,ysonlosvectoresdelasabscisasydelasordenadasdelosdatos,respectivamente
n,eselgradodelpolinomioalquesequierenajustarlosdatos
p,eselvectordeloscoeficientesdedichopolinomio.
Paran=1tenemoslaregresinlineal.Simeselnmerodedatos,elpolinomiopasaatravsdetodoslospuntossi
http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/numerico/datos/datos_1.html
1/5
20/10/2015
AjustededatosconMATLAB
n=m1.Elgradondelpolinomionopuedesermayorquem1.
Renombramoselscriptdatos_5comodatos_6,paracambiarlallamadaalafuncinMATLABpolyfitenvezdea
pol_regresion
x=[012345677.44]
y=[04.038.1214.2320.3327.134.5342.6346.43]
p=polyfit(x,y,2)
%grficos
holdon
plot(x,y,'ro','markersize',8,'markerfacecolor','r')
x=linspace(min(x),max(x),50)
y=polyval(p,x)
plot(x,y,'b')
xlabel('x')
ylabel('y')
title('Polinomioaproximador')
holdoff
Enlaventanadecomandoscorremoselscriptdatos_6,ynosapareceelvectorpquecontieneloscoeficientes
a1,a2,a3delpolinomio
>>datos_6
p=
0.34463.70040.1188
Tambinsepuedeutilizarpolyfitpararealizarajustesaunafuncinpotencial,exponencial,logartmica,etc,tal
comosemuestraenelsiguientecuadro
Funcin
Llamadaapolyfit
y=cxa
p=polyfit(log(x),log(y),1)
y=ceax
y=aln(x)+c
p=polyfit(x,log(y),1)
1
y =
ax + c
p=polyfit(log(x),y,1)
p=polyfit(x,1./y,1)
Elprimerelementodelvectorpdevueltoporpolyfit,p(1)guardaelparmetroayelsegundoelemento,p(2)
guardaelparmetroc.
Renombramoselscriptdatos_2comodatos_7paracambiarlallamadaalafuncinMATLABpolyfitenvezde
regresion.
x=[1020304050607080]
y=[1.061.331.521.681.811.912.012.11]
p=polyfit(log10(x),log10(y),1)
fprintf('exponentea=%2.3f\n',p(1))
fprintf('coeficientec=%3.3f\n',(10^p(2)))
holdon
plot(x,y,'ro','markersize',8,'markerfacecolor','r')
x=linspace(min(x),max(x),50)
z=(10^p(2))*x.^p(1)
plot(x,z,'b')
xlabel('x')
ylabel('y')
title('Regresinpotencial')
holdoff
Corremoselscriptdatos_7enlaventanadecomandos
>>datos_7
exponentea=0.331
coeficientec=0.495
Renombramoselscriptdatos_3comodatos_8paracambiarlallamadaalafuncinMATLABpolyfitenvezde
regresion.
x=[124193147204264373509773]
y=[9308156324873702651477617]
http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/numerico/datos/datos_1.html
2/5
20/10/2015
AjustededatosconMATLAB
p=polyfit(x,log(y),1)
fprintf('exponentea=%2.3f\n',p(1))
fprintf('coeficientec=%3.3f\n',exp(p(2)))
holdon
plot(x,y,'ro','markersize',8,'markerfacecolor','r')
x=linspace(min(x),max(x),100)
z=exp(p(2))*exp(x*p(1))
plot(x,z,'b')
xlabel('x')
ylabel('y')
title('Regresinexponencial')
holdoff
Corremoselscriptdatos_8enlaventanadecomandos
>>datos_8
exponentea=0.005
coeficientec=1036.896
Ajustedeformainteractiva
Determinarlarectaderegresinparalasiguientetabladedatos,tomadasdeunaexperiencia
x
y
0.05
0.25
0.1
0.42
0.15
0.58
0.2
0.72
0.25
0.85
0.3
0.98
0.35
1.10
0.4
1.12
Escribimoselscriptdatos_9
x=[0.050.10.150.20.250.30.350.4]
y=[0.250.420.580.720.850.981.11.12]
p=polyfit(x,y,1)
xp=linspace(min(x),max(x),20)
yp=polyval(p,xp)
plot(x,y,'r+',xp,yp)
axis([min(x)0.05,max(x)+.05,min(y)0.1,max(y)+.1])
gridon
xlabel('x'),ylabel('y'),title('ajusteconpolyfit')
legend('datosoriginales','mejorajuste','Location','SouthEast')
Corremoselscriptenlaventanadecomandos
>>datos_9
p=
2.57620.1729
VamosarealizarelajustededatosdeformainteractivaenlaventanaFigureWindow.Enlaventanade
comandosescribimos
>>x=[0.050.10.150.20.250.30.350.4]
>>y=[0.250.420.580.720.850.981.11.12]
>>plot(x,y,'+')
Aparecelarepresentacingrficadelospuntosconelsmbolo+
http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/numerico/datos/datos_1.html
3/5
20/10/2015
AjustededatosconMATLAB
SeleccionamosenelmenTools/BasicFitting,yactivamoslacasillalinear(polinomiodegrado1)y
quadratic(polinomiodegradodos)enelprimerpaneltituladoPlotfits.ObservamosenlaventanaFigure1que
elpolinomiodesegundogradoencolorverdeparecequeseajustamejoralosdatosexperimentales
Ampliamoselcuadrodedilogopulsandoenelbotnconlaflechainferiorderecha>nosaprecelos
coeficientesdelpolinomiodeajuste:
SeleccionamosenelsegundopaneltituladoNumericalresultsFit/linearynosaparece
y=p1*x+p2
http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/numerico/datos/datos_1.html
4/5
20/10/2015
AjustededatosconMATLAB
Coefficients:
p1=2.5762
p2=0.17286
Normofresiduals=
0.1187
SeleccionamosenelsegundopaneltituladoNumericalresultsFit/quadraticynosaparece
y=p1*x^2+p2*x+p3
Coefficients:
p1=3.381
p2=4.0976
p3=0.046071
Normofresiduals=
0.045696
Pulsamoselbotnconlaflecha>paraampliarotravezelcuadrodedilogo,podemosintroducirunvalorouna
expresinparaserevaluadapulsandoelbotnEvaluateeneltercerpaneltituladoFindy=f(x).
ElajustededatosdeformainteractivaenlaventanaFigureWindowadmitemuchasposibilidades,quesepueden
consultarenelsistemadeayuda(Help).
EnergasRenovablesEUITIdeEibar
http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/numerico/datos/datos_1.html
5/5