我使用Apache Math使用此代码计算某些高阶多项式的积分(40度,含有多个项):
simpsonIntegrator.integrate(Integer.MAX_VALUE, uf, 0, 100);
但是我得到了这个例外:
Exception in thread "main" org.apache.commons.math3.exception.TooManyEvaluationsException: illegal state: maximal count (2,147,483,647) exceeded: evaluations
at org.apache.commons.math3.analysis.integration.BaseAbstractUnivariateIntegrator.computeObjectiveValue(BaseAbstractUnivariateIntegrator.java:235)
at org.apache.commons.math3.analysis.integration.TrapezoidIntegrator.stage(TrapezoidIntegrator.java:135)
at org.apache.commons.math3.analysis.integration.SimpsonIntegrator.doIntegrate(SimpsonIntegrator.java:112)
at org.apache.commons.math3.analysis.integration.BaseAbstractUnivariateIntegrator.integrate(BaseAbstractUnivariateIntegrator.java:280)
Apache Math可以计算这个复杂的积分吗?
以下示例代码:
double[] coefficients = new double[] { 120.38735982092798, -7.432833370751281, -4.197678241326614,
1.935518550792998, -0.2717208510603644, 0.010272539175964844, 0.0014583652338223108,
-2.3545889963370238E-4, 1.7089604714800273E-5, -7.940595470645408E-7, 2.60400363658514E-8,
-6.295312573702475E-10, 1.147109622979095E-11, -1.591490268563359E-13, 1.683228910193124E-15,
-1.3473343508219034E-17, 8.022211284926259E-20, -3.4419978519650748E-22, 1.0053973045968942E-24,
-1.7889385990234268E-27, 1.4626500062261931E-30 };
PolynomialFunction p = new PolynomialFunction(coefficients);
UnivariateFunction uf = (UnivariateFunction) new PolynomialFunction(p.multiply(p).getCoefficients());
// integrate regression
SimpsonIntegrator integrator = new SimpsonIntegrator();
System.out.println("answer: " + (Math.PI * integrator.integrate(Integer.MAX_VALUE, uf, 0, 100)));
如果需要很长时间才能解决,我只需要一个答案。