积分面积函数
积分面积又称为积分函数,是苏联数据家引入的一种特殊积分。具体的介绍请查看积分面积
例如:计算函数为f(x)=ax^2+bx+c在区间[-1,1]上的积分函数.
假设a=1,b=0,c=0的时候,f(x)=x^2为一个经典的开口朝上的抛物线
通过在线计算抛物线的方式计算出是0.6667
示例代码:
java代码如下,复制粘贴就可以使用:
// 使用辛普森法则估计积分
public static double simpsonsRule(TriFunction<Double, Double, Double, Double, Double> function, double x1, double x2, int n, double a, double b, double c) {
if (n % 2 != 0) {
throw new IllegalArgumentException("Number of subintervals must be even for Simpson's Rule.");
}
double h = (x2 - x1) / n;
double sum = function.apply(x1, a, b, c) + function.apply(x2, a, b, c);
for (int i = 1; i < n; i++) {
double x = x1 + i * h;
sum += (i % 2 == 0) ? 2 * function.apply(x, a, b, c) : 4 * function.apply(x, a, b, c);
}
return h * sum / 3.0;
}
public static void main(String[] args) {
TriFunction<Double, Double, Double, Double, Double> function = (x, alpha, beta, ppio) -> alpha * (Math.pow(x, 2)+beta*x+ppio);
double v = simpsonsRule(function, -1, 1, 200, 1, 0, 0);
System.out.println(v);
}
interface TriFunction<A, B, C, D, R> {
R apply(A a, B b, C c, D d);
}
该方法是使用了“辛普森法则”估计积分的,当n值越大划分的区间越多,值越逼近。
其他积分面积函数实现方式:
1、修改示例代码的TriFunction,修改为函数的入参数类型。
2、修改函数TriFunction的实现方式。
3、修改调用调用入参。
举个例子:
函数为:f(x)=x^3+ax;
实现方式如下:
public static double simpsonsRule(TriFunction<Double, Double, Double> function, double x1, double x2, int n, double a) {
if (n % 2 != 0) {
throw new IllegalArgumentException("Number of subintervals must be even for Simpson's Rule.");
}
double h = (x2 - x1) / n;
double sum = function.apply(x1, a) + function.apply(x2, a);
for (int i = 1; i < n; i++) {
double x = x1 + i * h;
sum += (i % 2 == 0) ? 2 * function.apply(x, a) : 4 * function.apply(x, a);
}
return h * sum / 3.0;
}
public static void main(String[] args) {
TriFunction<Double, Double, Double> function = (x,a) -> Math.pow(x, 3)+a*x;
double v = simpsonsRule(function, -1, 1, 200,2);
System.out.println(v);
}
interface TriFunction<A, B, R > {
R apply(A a, B b);
}