辛普森计算公式如下:
def XPS(f:(Double) => Double ,a : Double,b : Double,n : Int) : Double = {
// f 需要求积分的公式,【a,b】为区间,n 是切分的数量
var h : Double = (b - a) / (2 * n)
var si : Double = f(a) + f(b)
var xk : Double = 0.0
var k = 1
for(k <- 1 to n){
xk = a + k * 2 * h
si = si + 2 * f(xk)
}
for(k <- 0 to n-1){
xk = a + (k * 2 + 1) * h
si = si + 4 * f(xk)
}
var FHXPs : Double = si*h/3
return FHXPs
}
def funcx(x:Double) : Double = {
// 要积分的公式在此展示
return math.pow(x,4)
}
XPS(funcx,1.0,10.0,20)