Hi.

It's great to have reported here.  But it would indeed be easier to follow up
in the bug tracking system.
Better than included in the email below would be to add JUnit tests to the
appropriate source files (under the "sr/test" directory), and upload the "diff"
to the JIRA ticket page.

Thanks,
Gilles

Le lun. 16 déc. 2024 à 00:01, Jay van Bruggen
<jay12...@upcmail.nl.invalid> a écrit :
>
>
> Hi, I have used Apache math a lot lately,
> to my great satisfaction.
> However,
> Using FiniteDifferencesDifferentiator, In both 3.6 and 4.0 I have tried
> and compared the
> Numerical Differentiation methods, using functions I can differentiate
> by hand for control.
> For 2 simple functions , I get wrong values returned.
>
> the first derivative of the function
>
> f(x) = 2x^3 - 3x^2 + 4x - 1
>
> f'  = 6x^2 -6x + 4
>
> should return   16   in x=2      .
> Apache always returns 11     , I have tried many different parameter
> settings.   That's wrong.
>
> Lowering the bar ,
>
> the function
> f(x) = 15x^2 + 3x
> f'()  =   30x+3
> should return 303.
>
> It returns 1530         which is very wrong.
>
> something seems quite wrong off in the FiniteDifferencesDifferentiator.
> I could always be mistaken , but  everything compiles, and I have
> checked many times.
> If I am wrong I apologize, but I should at least mention this.
>
> Below is two implementations I did using mentioned functions.
>
> I've tried several approaches and i have used many other Apache math
> methods like integration and curvefitting before,
> But I cannot get this one to work, It's pretty serious if it returns
> something wrong.
>
> I have a hard time finding the right entrance for this bug report, doI
> have really to create a Jira account?
> What can I do to get in contact to report this problem, if this is not
> the right way?
>
> Greets,
>
> Jay van Bruggen
>
> Java 17 , IntelliJ pro 2024.3    Windows 10.
>
> // Import statements import 
> org.apache.commons.math3.analysis.UnivariateFunction;
> import org.apache.commons.math3.analysis.differentiation.DerivativeStructure;
> import 
> org.apache.commons.math3.analysis.differentiation.FiniteDifferencesDifferentiator;
>
> public class chatdiff {
>
>      public static void main(String[] args) {
>          // Define the function f(x) = 2x^3 - 3x^2 + 4x - 1 
> UnivariateFunction function = x ->2 * Math.pow(x,3) -3 * Math.pow(x,2) +4 * x 
> -1;
>
>          // Create a finite differences differentiator // The first argument 
> is
> the number of points for interpolation; the second is the range size 
> FiniteDifferencesDifferentiator differentiator =new 
> FiniteDifferencesDifferentiator(5,0.01);
>
>          // Differentiate the function UnivariateFunction derivative = 
> differentiator.differentiate(function);
>
>          // Evaluate the first derivative at x = 2 double x =2.0;
>          double derivativeAtX = derivative.value(x);
>
>          // Print the result System.out.println("The derivative of f(x) at x 
> = " + x +" is approximately: " + derivativeAtX);
>      }
> }
>
>      // Numerical differentiation using finite differences 
> System.out.println("\nNumerical Differentiation using Finite Differences:");
>      UnivariateFunction f =new UnivariateFunction() {
>          @Override public double value(double x) {
>              return 15 * Math.pow(x,2) +3 * x;
>          }
>      };
>
>      FiniteDifferencesDifferentiator differentiator =new 
> FiniteDifferencesDifferentiator(5,0.25);
>      UnivariateFunction derivative_numerical = 
> differentiator.differentiate(f);
>
>      // Compare results at x = 2 double x_eval =10.0;
>      System.out.println("Numerical derivative at x = " + x_eval +": " + 
> derivative_numerical.value(x_eval));
>      System.out.println("Exact derivative at x = " + x_eval +": " + 
> derivative.value(x_eval));
> }

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@commons.apache.org
For additional commands, e-mail: user-h...@commons.apache.org

Reply via email to