-2

取自实验室:

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

声明一个泛型接口函数如下:

公共接口函数 {B apply(A arg); }

然后编写一个 Maths 类,其方法为实现 > 函数 f 的中点规则,该函数 f 将在 n 个等间距 > 步骤中在 lowerBound 和 upperBound 之间进行积分:

公共静态双积分(函数f,双下界,双上界,int n)

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

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

我查看了维基百科页面,但我无法真正理解整个概念(尤其是上限和下限的含义)。Afaik 这只是获取线下面积的方法,给定 N 个矩形用于获取线上每个切点的面积。我不知道如何将它与上述函数联系起来——也许是递归?而且我也从未见过类似的东西:

B 应用(A 参数)

--

到目前为止,我已经取得了进展:

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.

    }
}
4

1 回答 1

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)作用于某个功能。

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

于 2013-10-23T15:29:38.137 回答