代码之家  ›  专栏  ›  技术社区  ›  user2121

如何使用apache lib获取衍生品

  •  1
  • user2121  · 技术社区  · 8 年前

    我正在使用apache库来计算导数。我想做的是得到下面的导数 方程式

    2+(2*x^2)+(3*x)+5
    

    我遵循了下面发布的代码,但我对下面所述的参数有点困惑。 请帮我找出如何得到上面方程的导数。

    密码 :

    int params = 1;
    int order = 2;
    double xRealValue = 5;
    DerivativeStructure x = new DerivativeStructure(params, order, 0,  
        xRealValue);
    DerivativeStructure y = x.pow(2);                    //COMPILE ERROR
    Log.i(TAG, "y = " + y.getValue());
    Log.i(TAG, "y = " + y.getPartialDerivative(1));
    Log.i(TAG, "y = " + y.getPartialDerivative(2));
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   sgpalit    8 年前

    commons-math3版本3.6不会出现任何编译错误,您的代码可以正常工作。

    import org.apache.commons.math3.analysis.differentiation.DerivativeStructure;
    

    你的方程式可以写如下

    int xValue = 5;
    
    int howManyUnknowParamsHasFunction = 1;
    int howManyDeriviationWillYouTake = 2;
    int whatIsTheIndexOfThisParameterX = 0;
    
    DerivativeStructure x = new DerivativeStructure(howManyUnknowParamsHasFunction, howManyDeriviationWillYouTake, whatIsTheIndexOfThisParameterX, xValue);
    
    // x --> x^2.
    DerivativeStructure x2 = x.pow(2);
    
    //y = 2x^2 + 3x + 7
    DerivativeStructure y = new DerivativeStructure(2.0, x2, 3.0, x).add(7);