Vous êtes sur la page 1sur 5

20/10/2015

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

Vous aimerez peut-être aussi