如何在java中实现中点规则(集成)?

时间:2013-10-23 15:18:16

标签: java integration

取自实验室:

  

本练习的目的是实现中点规则(也称为矩形方法)>用于函数的数值积分。

     

声明通用接口函数如下:

     

public interface Function {B apply(A arg); }

     

然后使用方法集成编写一个Maths类,该方法集成实现了>函数f的中点规则,该函数将在n个等间距的>步骤中集成在lowerBound和upperBound之间:

     

public static double integration(函数f,             double lowerBound,double upperBound,int n)

     

通过0到1之间的平方函数的数值积分来测试你的代码(结果应该是大约1.0 / 3.0)

0和PI / 2之间的正弦函数(参见类java.lang.Math,结果应该是>大约1.0)使用命名的本地类(比如“Sinus”和“Square”)似乎很自然运动,>但如果您愿意,也可以使用匿名本地类。

我查看了维基百科页面,但我无法真正理解整个概念(特别是上下界的含义)。 Afaik它只是让区域在一条线下的方式,给定N个矩形用于获得线上每个切线点的面积。我不知道如何将它与上述函数联系起来 - 可能是递归吗?而且我也从未见过像:

B申请(A arg)

-

到目前为止,我已取得这一进展:

public class MidPointRule {
    public MidPointRule() {
    }
    public static double integrate(Function<Double,Double> f, double lowerBound,double upperBound, int n){
        double width = upperBound-lowerBound/n; // width is current width-nextwidth/n?
        return integrate(f,lowerBound,upperBound,n);
    }
    public static void main(String[] args) {
        // sq function between 0 and 1, sinus function between 0 and PI/2.

    }
}

1 个答案:

答案 0 :(得分:1)

看起来你被要求首先为功能创建一个界面。你的函数采用类型A作为参数并返回类型B的东西。它可能看起来像这样:

// here I am using Float for both A and B
Function<Float, Float> myFunc = new SineFunction();
float result = myFunc.apply(1.0f);

完成此操作后,系统会要求您编写一个函数来集成任何其他函数。假设我想在x = 0和x = pi / 2之间整合sin(x)。这就是下限和上限的意思(0表示较低,pi / 2表示较高)。所以你的积分函数应该使用一些n步数在0到pi / 2的某个范围内作用于某个函数。

这就像我要说的那样,没有给你任何答案。祝你好运!