ApacheCommonsMath3之数值积分的示例分析
这篇文章给大家分享的是有关Apache Commons Math3之数值积分的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
创新互联公司是一家专注于成都做网站、成都网站设计与策划设计,民乐网站建设哪家好?创新互联公司做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:民乐等地区。民乐做网站价格咨询:18980820575
Apache.Commons.Math4里面的数值积分支持类采用的是“逼近法”,即,先对大区间做一次积分,再对小区间做一次积分,若两次积分结果的差值小于某一设定的误差值,则认为积分完成。否则,将区间再次细分,对细分后的区间进行积分,与前一次积分相比较,如此反复迭代,直至最近的两次积分差值足够小。这样的结果,有可能会导致无法收敛。
为了使用org.apache.commons.math4.analysis.integration包中的积分器类,需要先实现UnivariateFunction接口(本文以MyFunction为例),实现其value方法。然后创建指定的积分器对象,本文以SimpsonIntegrator为例,最后调用其integrate(...)方法即可算出MyFunction的积分。
调用integrate(...)方法时需要提供4个参数:
第1个是最大逼近次数,要适当大一些,否则可能会无法收敛;
第2个是MyFunction类的实例;
第3个是积分区间下限;
第4个是积分区间上限。
SimpsonIntegrator在第一次迭代时一定是分别以积分下限和积分上限作为x调用连词MyFunction.value(...)方法,下一次则会将区间分成2份(除上下限x值之外,还有一个中间x值),再下一次则是分成4份……
以下是使用辛普森积分类的例子:
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.math4.analysis.UnivariateFunction;
import org.apache.commons.math4.analysis.integration.SimpsonIntegrator;
import org.apache.commons.math4.analysis.integration.UnivariateIntegrator;
interface TestCase
{
public Object run(List
上述代码中,注释为1. 2. 3.的可以正常计算出结果,但注释为4.的就无法收敛。
基于org.apache.commons.math4.analysis.integration.UnivariateIntegrator的积分器的另一个局限性在于必须编写一个继承于UnivariateFunction的函数类,实现其value方法(根据输入的x值计算出y值),这种做法有利于可用解析式表达的情况,不利于对存放于外存的大量数据做积分处理。
感谢各位的阅读!关于“Apache Commons Math3之数值积分的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
本文标题:ApacheCommonsMath3之数值积分的示例分析
转载注明:
http://hbruida.cn/article/giiood.html