当前位置: 首页 > 面试题库 >

Java-使用Apache Commons数学库进行派生计算

田修为
2023-03-14
问题内容

我在使用apache commons数学库时遇到问题。
我只想创建f(x)= 4x ^ 2 + 2x之类的函数,然后计算该函数的导数
-> f’(x)= 8x + 2

我阅读了有关差异化的文章(http://commons.apache.org/proper/commons-
math/userguide/analysis.html,第4.7节)。
有一个我不明白的例子:

int params = 1;
int order = 3;
double xRealValue = 2.5;
DerivativeStructure x = new DerivativeStructure(params, order, 0, xRealValue);
DerivativeStructure y = f(x);                    //COMPILE ERROR
System.out.println("y    = " + y.getValue();
System.out.println("y'   = " + y.getPartialDerivative(1);
System.out.println("y''  = " + y.getPartialDerivative(2);
System.out.println("y''' = " + y.getPartialDerivative(3);

在第5行中,当然会发生编译错误。该函数f(x)被调用且未定义。我怎么了?
有没有人对apache commons数学库进行微分/推导有任何经验,或者有人知道其他可以帮助我的库/框架吗?

谢谢


问题答案:

在该示例下面的段落中,作者描述了创建DerivativeStructures的方法。这不是魔术。在您引用的示例中,应该有人编写该函数f。好吧,这还不是很清楚。

用户可以通过多种方式创建UnivariateDifferentiableFunction接口的实现。第一种方法是直接使用DerivativeStructure的适当方法直接编写它,以计算加法,减法,正弦,余弦…这通常是很简单的,并且无需记住区分规则:用户代码仅表示功能本身,差异将在引擎盖下自动计算。第二种方法是编写经典的UnivariateFunction并将其传递给UnivariateFunctionDifferentiator接口的现有实现,以检索同一函数的差异版本。第一种方法更适合于用户已经控制了所有基础代码的小型功能。

使用第一个想法。

// Function of 1 variable, keep track of 3 derivatives with respect to that variable,
// use 2.5 as the current value.  Basically, the identity function.
DerivativeStructure x = new DerivativeStructure(1, 3, 0, 2.5);
// Basically, x --> x^2.
DerivativeStructure x2 = x.pow(2);
//Linear combination: y = 4x^2 + 2x
DerivativeStructure y = new DerivativeStructure(4.0, x2, 2.0, x);
System.out.println("y    = " + y.getValue());
System.out.println("y'   = " + y.getPartialDerivative(1));
System.out.println("y''  = " + y.getPartialDerivative(2));
System.out.println("y''' = " + y.getPartialDerivative(3));


 类似资料:
  • 本文向大家介绍java 数学计算的具体使用,包括了java 数学计算的具体使用的使用技巧和注意事项,需要的朋友参考一下 java.lang.Math 库提供了常用的数学计算工具 常量 取整 abs(x): 绝对值 floor(x): 向下取整 ceil(x): 向上取整 round(x): 四舍五入,如果有两个(x.5),返回较大的那个数 rint(x): 最接近的整数,如果有两个(x.5),返回

  • 本文向大家介绍Java学生信息管理系统设计(数据库版),包括了Java学生信息管理系统设计(数据库版)的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了数据库版的Java学生信息管理系统,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 我使用JEBL和跌跌撞撞的API,因为我找不到非常清晰的留档或示例。 我想做的是在一棵树上阅读,树上的树枝标注了长度,节点也标注了长度。然后,我应该能够获取树叶并向上遍历树,同时检查节点的注释(使用JEBL遍历很容易,我的问题实际上是注释)。 它们是系统发育树,其中每个节点都是一个物种,注释将标记特定节点上是否存在某些基因,并且可能有足够少的基因,一个字符串就足够了(例如,如果有三个基因a、B和C

  • 问题内容: 您能给我建议一些灵活,强大但快速的库,它可以涵盖SciPy(性能和功能)。我发现SciPy很有表现力-但我想在Scala中尝试一些东西。 我读了一些有关Scala的内容-但不如SciPy突出。还有其他选择吗?也许是Java库? 问题答案: Scipy中的功能相当类似于Matlab。因此,问题是您是否只需要核心线性代数/矢量矩阵数学运算,或者是诸如聚类之类的各种事物。 如果您同时不知道S

  • 我想知道这怎么会被COUNT然后ASC订购。 输出: 所需输出:

  • 我试图在压模上的单个pdf中添加多个签名。我可以添加多个母模。在我的一个案例中,我得到了错误 至少有一个签名无效。还需要使所有签名有效。 我想在一个PDF中添加多个有效符号。请帮帮我。在图中,只有一个符号是有效的,其他符号是无效的,所以让我看看我做错了什么 下面是我的代码快照