# commons-issues mailing list archives

##### Site index · List index
Message view
Top
From "Luc Maisonobe (JIRA)" <j...@apache.org>
Subject [jira] Commented: (MATH-341) Test for firsst Derivative in PolynomialFunction ERROR
Date Fri, 05 Feb 2010 21:52:28 GMT
```
[ https://issues.apache.org/jira/browse/MATH-341?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12830314#action_12830314
]

Luc Maisonobe commented on MATH-341:
------------------------------------

I think there are no bugs here.
The first part of the test (method testfirstDerivativeComparison) runs without error.
The second part of the test (method testfirstDerivativeComparisonFullPower) prints coefficients
that do not match.

However, the coefficients computed seem wrong to me because
* the getCoefficients method returns an array in increasing degree order (i.e. coeff[0] is
the constant term)
* the coefficients array length is d+1 when d is the degree

This implies that the g_coeff array which should contain the coefficients of the derivative
must have length myPolyNom.degree() and not myPolyNom.degree()-1 and the following loop should
match.  Also the computation of the coefficients of the derivative shoud be:

g_coeff[i] = f_coeff[i+1] * (i + 1);

g_coeff[i] = f_coeff[i]*(myPolyNom.degree()-i);

With these changes, the automatic computation of derivative works.

A first comment on this case is that using polynomial fitting for such functions with large
numbers of points shows very large Gibbs oscillations near the interval ends. One way to see
this is to draw the curve from the sample points and from evaluation of myPolyNom with x varying
from 5 to 30 with a 0.1 step. You will see that the polynomial fits the sample points perfectly,
but near interval ends it has HUGE oscillations.

Another comment is that extracting the coefficients from the lagrangian form should be used
with caution. Unfortunately, this is written only in the protected computationCoefficients()
method javadoc, not in the public getCoefficients() method javadoc ... The computation is
ill-conditioned and in fact the coefficients returned in your case are really bad. This could
be seen by evaluating the original lagrangian form polynomial and the one reconstructed from
the coefficients. The original does match the expected points, the reconstructed one does
not.

So I think there is only a documentation problem: we should warn the user about extracting
coefficients in this implementation.

Do you agree with this analysis ?

> Test for firsst Derivative in PolynomialFunction ERROR
> ------------------------------------------------------
>
>                 Key: MATH-341
>                 URL: https://issues.apache.org/jira/browse/MATH-341
>             Project: Commons Math
>          Issue Type: Bug
>    Affects Versions: 2.0
>            Reporter: Roger BAll
>         Attachments: FirstDerivativePolyNomTest.java
>
>
> I have written the attached test using our data for generating a curve function
> However the first derivative test fails see: testfirstDerivativeComparisonFullPower
> Either my test is in error or there is a bug in PolynomialFunction class.
> Roger Ball