[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: polyfit -> polyval problem
From: |
Ben Abbott |
Subject: |
Re: polyfit -> polyval problem |
Date: |
Wed, 22 Jun 2011 10:21:54 -0400 |
On Jun 22, 2011, at 10:03 AM, Sergei Steshenko wrote:
> --- On Wed, 6/22/11, Ben Abbott <address@hidden> wrote:
>
>> From: Ben Abbott <address@hidden>
>> Subject: Re: polyfit -> polyval problem
>> To: "Sergei Steshenko" <address@hidden>
>> Cc: address@hidden
>> Date: Wednesday, June 22, 2011, 6:21 AM
>>
>> On Jun 22, 2011, at 9:16 AM, Sergei Steshenko wrote:
>>
>>> Hello,
>>>
>>> I can't figure out what I an doing wrong in the
>> following example:
>>>
>>> "
>>> octave:42> [p, s, mu] = polyfit ((1:10)(:), 2 *
>> (1:10)(:), 1);
>>> octave:43> p
>>> p =
>>>
>>> 6.0553 11.0000
>>>
>>> octave:44> polyval(p, 1:10)
>>> ans =
>>>
>>> 17.055 23.111 29.166 35.221 41.277 47.332 53.387 59.442
>>> 65.498 71.553
>>>
>>
>> I think the problem is with the syntax you're using for
>> polyval. If "mu" is an output for polyfit(), then it must be
>> used as an input for polval().
>>
>> octave:3> [p, s, mu] = polyfit ((1:10)(:), 2 *
>> (1:10)(:), 1);
>> octave:4> polyval(p, 1:10, [], mu)
>> ans =
>>
>> 2.0000 4.0000
>> 6.0000
>> 8.0000 10.0000 12.0000 14.0000 16.0000 18.0000 20.0000
>>
>> Ben
>>
>>
>
>
> Thanks.
>
> Well, this:
>
> "
> octave:48> p = polyfit ((1:10)(:), 2 * (1:10)(:), 1);
> octave:49> p
> p =
>
> 2.0000e+00 2.2753e-15
>
> octave:50> polyval(p, 1:10)
> ans =
>
> 2.0000 4.0000 6.0000 8.0000 10.0000 12.0000 14.0000
> 16.0000 18.0000 20.0000
>
> octave:51>
> "
>
> also works.
>
> Now, this is the documentation:
>
> "
> octave:47> help polyfit
> -- Function File: [P, S, MU] = polyfit (X, Y, N)
> Return the coefficients of a polynomial P(X) of degree N that
> minimizes the least-squares-error of the fit.
>
> The polynomial coefficients are returned in a row vector.
>
> The second output is a structure containing the following fields:
>
> `R'
> Triangular factor R from the QR decomposition.
>
> `X'
> The Vandermonde matrix used to compute the polynomial
> coefficients.
>
> `df'
> The degrees of freedom.
>
> `normr'
> The norm of the residuals.
>
> `yf'
> The values of the polynomial for each value of X.
>
> The second output may be used by `polyval' to calculate the
> statistical error limits of the predicted values.
>
> When the third output, MU, is present the coefficients, P, are
> associated with a polynomial in XHAT = (X-MU(1))/MU(2). Where
> MU(1) = mean (X), and MU(2) = std (X). This linear transformation
> of X improves the numerical stability of the fit.
>
> See also: polyval, polyconf, residue.
>
> /mnt/sdb8/sergei/AFSWD_debug/20110424/octave-3.0.5/share/octave/3.0.5/m/polynomial/polyfit.m
>
> Additional help for built-in functions and operators is
> available in the on-line version of the manual. Use the command
> `doc <topic>' to search the manual index.
>
> Help and information about Octave is also available on the WWW
> at http://www.octave.org and via the address@hidden
> mailing list.
> "
>
> - could you point exactly which part of the above documentation _clearly_
> explains how to use 'polyval' with 'polyfit' results ?
>
> I.e., for starters, I do not even see in the documentation that
>
> p = polyfit(...);
>
> is a legal form of usage.
>
> Thanks,
> Sergei.
Checking the current sources the polyfit() and polyval() docs-trings, it
appears the lack of clarity has been fixed. The doc-strings are below.
Ben
-- Function File: P = polyfit (X, Y, N)
-- Function File: [P, S] = polyfit (X, Y, N)
-- Function File: [P, S, MU] = polyfit (X, Y, N)
Return the coefficients of a polynomial P(X) of degree N that
minimizes the least-squares-error of the fit.
The polynomial coefficients are returned in a row vector.
The second output is a structure containing the following fields:
`R'
Triangular factor R from the QR decomposition.
`X'
The Vandermonde matrix used to compute the polynomial
coefficients.
`df'
The degrees of freedom.
`normr'
The norm of the residuals.
`yf'
The values of the polynomial for each value of X.
The second output may be used by `polyval' to calculate the
statistical error limits of the predicted values.
When the third output, MU, is present the coefficients, P, are
associated with a polynomial in XHAT = (X-MU(1))/MU(2). Where
MU(1) = mean (X), and MU(2) = std (X). This linear transformation
of X improves the numerical stability of the fit.
See also: polyval, residue.
-- Function File: Y = polyval (P, X)
-- Function File: Y = polyval (P, X, [], MU)
Evaluate the polynomial P at the specified values of X. When MU
is present evaluate the polynomial for (X-MU(1))/MU(2). If X is a
vector or matrix, the polynomial is evaluated for each of the
elements of X.
-- Function File: [Y, DY] = polyval (P, X, S)
-- Function File: [Y, DY] = polyval (P, X, S, MU)
In addition to evaluating the polynomial, the second output
represents the prediction interval, Y +/- DY, which contains at
least 50% of the future predictions. To calculate the prediction
interval, the structured variable S, originating form `polyfit',
must be present.
See also: polyfit, polyvalm, poly, roots, conv, deconv, residue,
filter, polyderiv, polyint.