取自实验室:
本练习的目的是实现中点规则(也称为矩形方法)>用于函数的数值积分。
声明通用接口函数如下:
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)
我查看了维基百科页面,但我无法真正理解整个概念(特别是上下界的含义)。 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.
}
}
答案 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的某个范围内作用于某个函数。
这就像我要说的那样,没有给你任何答案。祝你好运!