# HELP please, Can't fit data properly

7 messages
Open this post in threaded view
|

## HELP please, Can't fit data properly

 Hi, I'm trying to fit some data to a function of degree 4 or 5, but when I plot it, it doesn't fit: DATA: C30 =    0.063330   0.057200   0.052870   0.047380   0.044860   0.039710   0.037070   0.036030   0.034990 t =     1.0000    1.5000    2.0000    3.0000    5.0000    7.0000   10.0000   13.0000   18.0000 FIT: p=polyfit(t,C30,4)    0.0000027990  -0.0001193780   0.0018221783  -0.0125401220   0.0727802050 The problem is that when I plot(t,C30) and plot(p) I get totally different curves, am I missing somethiing??? -- Sent from: http://octave.1599824.n4.nabble.com/Octave-General-f1599825.html
Open this post in threaded view
|

## Re: HELP please, Can't fit data properly

 On Wed, Oct 3, 2018 at 4:07 PM T.G.ALG <[hidden email]> wrote:Hi, I'm trying to fit some data to a function of degree 4 or 5, but when I plot it, it doesn't fit: DATA: C30 =    0.063330   0.057200   0.052870   0.047380   0.044860   0.039710  0.037070   0.036030   0.034990 t =     1.0000    1.5000    2.0000    3.0000    5.0000    7.0000   10.0000  13.0000   18.0000 FIT: p=polyfit(t,C30,4)    0.0000027990  -0.0001193780   0.0018221783  -0.0125401220   0.0727802050 The problem is that when I plot(t,C30) and plot(p) I get totally different curves, am I missing somethiing??? -- Sent from: http://octave.1599824.n4.nabble.com/Octave-General-f1599825.html Hi T.G.,Yes, I believe it is safe to say that you are missing something.  Look at vector that is returned from polyfit that you print out:p=   0.0000027990  -0.0001193780   0.0018221783  -0.0125401220   0.0727802050 these are the coefficients of the polynomial (see help polyfit for more explanation).  And the "curve" from plotting that vector is just the coefficients wrt their index.  The function you're probably looking for is polyval (help polyval for info) so that you can evaluate the fitted curve at the values of x that you want.Hope this helps,James Sherman Jr.
Open this post in threaded view
|

## Re: HELP please, Can't fit data properly

 On Wed, Oct 3, 2018 at 4:25 PM James Sherman Jr. <[hidden email]> wrote:On Wed, Oct 3, 2018 at 4:07 PM T.G.ALG <[hidden email]> wrote:Hi, I'm trying to fit some data to a function of degree 4 or 5, but when I plot it, it doesn't fit: DATA: C30 =    0.063330   0.057200   0.052870   0.047380   0.044860   0.039710  0.037070   0.036030   0.034990 t =     1.0000    1.5000    2.0000    3.0000    5.0000    7.0000   10.0000  13.0000   18.0000 FIT: p=polyfit(t,C30,4)    0.0000027990  -0.0001193780   0.0018221783  -0.0125401220   0.0727802050 The problem is that when I plot(t,C30) and plot(p) I get totally different curves, am I missing somethiing??? -- Sent from: http://octave.1599824.n4.nabble.com/Octave-General-f1599825.html Hi T.G.,Yes, I believe it is safe to say that you are missing something.  Look at vector that is returned from polyfit that you print out:p=   0.0000027990  -0.0001193780   0.0018221783  -0.0125401220   0.0727802050 these are the coefficients of the polynomial (see help polyfit for more explanation).  And the "curve" from plotting that vector is just the coefficients wrt their index.  The function you're probably looking for is polyval (help polyval for info) so that you can evaluate the fitted curve at the values of x that you want.Hope this helps,James Sherman Jr. Polyfit can do that[P, S] = polyfit (X, Y, N)S.yf  should have the fitted Y values for your x values.-- DAS
Open this post in threaded view
|

## Re: HELP please, Can't fit data properly

 On 10/03/2018 05:15 PM, Doug Stewart wrote: On Wed, Oct 3, 2018 at 4:25 PM James Sherman Jr. <[hidden email]> wrote: On Wed, Oct 3, 2018 at 4:07 PM T.G.ALG <[hidden email]> wrote: Hi, I'm trying to fit some data to a function of degree 4 or 5, but when I plot it, it doesn't fit: DATA: C30 =    0.063330   0.057200   0.052870   0.047380   0.044860   0.039710  0.037070   0.036030   0.034990 t =     1.0000    1.5000    2.0000    3.0000    5.0000    7.0000   10.0000  13.0000   18.0000 FIT: p=polyfit(t,C30,4)    0.0000027990  -0.0001193780   0.0018221783  -0.0125401220   0.0727802050 The problem is that when I plot(t,C30) and plot(p) I get totally different curves, am I missing somethiing??? Yes, I believe it is safe to say that you are missing something.  Look at vector that is returned from polyfit that you print out: p=    0.0000027990  -0.0001193780   0.0018221783  -0.0125401220   0.0727802050 these are the coefficients of the polynomial (see help polyfit for more explanation).  And the "curve" from plotting that vector is just the coefficients wrt their index.  The function you're probably looking for is polyval (help polyval for info) so that you can evaluate the fitted curve at the values of x that you want. Hope this helps, James Sherman Jr. Polyfit can do that [P, S] = polyfit (X, Y, N) S.yf  should have the fitted Y values for your x values. True, but it does not show how bad the fit is. These datapoints aren't likely to fit a polynomial model, and to see it it helps to see the actual fitted polynomial with more resolution than the 9 points provided: C30 = [ 0.063330   0.057200   0.052870   0.047380   0.044860   0.039710  0.037070   0.036030   0.034990] t      = [ 1.0000      1.5000       2.0000       3.0000      5.0000       7.0000    10.0000     13.0000     18.0000] plot(t,C30,'o',x=1:.1:20,polyval(polyfit(t,C30,4),x)) which shows nicely the deficiency of the fourth-order polynomial, by creating artifacts where the data has none.
Open this post in threaded view
|

## Re: HELP please, Can't fit data properly

 On Wed, Oct 3, 2018 at 6:19 PM Przemek Klosowski <[hidden email]> wrote: On 10/03/2018 05:15 PM, Doug Stewart wrote: On Wed, Oct 3, 2018 at 4:25 PM James Sherman Jr. <[hidden email]> wrote: On Wed, Oct 3, 2018 at 4:07 PM T.G.ALG <[hidden email]> wrote: Hi, I'm trying to fit some data to a function of degree 4 or 5, but when I plot it, it doesn't fit: DATA: C30 =    0.063330   0.057200   0.052870   0.047380   0.044860   0.039710  0.037070   0.036030   0.034990 t =     1.0000    1.5000    2.0000    3.0000    5.0000    7.0000   10.0000  13.0000   18.0000 FIT: p=polyfit(t,C30,4)    0.0000027990  -0.0001193780   0.0018221783  -0.0125401220   0.0727802050 The problem is that when I plot(t,C30) and plot(p) I get totally different curves, am I missing somethiing??? Yes, I believe it is safe to say that you are missing something.  Look at vector that is returned from polyfit that you print out: p=    0.0000027990  -0.0001193780   0.0018221783  -0.0125401220   0.0727802050 these are the coefficients of the polynomial (see help polyfit for more explanation).  And the "curve" from plotting that vector is just the coefficients wrt their index.  The function you're probably looking for is polyval (help polyval for info) so that you can evaluate the fitted curve at the values of x that you want. Hope this helps, James Sherman Jr. Polyfit can do that [P, S] = polyfit (X, Y, N) S.yf  should have the fitted Y values for your x values. True, but it does not show how bad the fit is. These datapoints aren't likely to fit a polynomial model, and to see it it helps to see the actual fitted polynomial with more resolution than the 9 points provided: C30 = [ 0.063330   0.057200   0.052870   0.047380   0.044860   0.039710  0.037070   0.036030   0.034990] t      = [ 1.0000      1.5000       2.0000       3.0000      5.0000       7.0000    10.0000     13.0000     18.0000] plot(t,C30,'o',x=1:.1:20,polyval(polyfit(t,C30,4),x)) which shows nicely the deficiency of the fourth-order polynomial, by creating artifacts where the data has none. You are correct. And this is very important to see what the curve looks like between the given data points.Thanks :-)-- DAS