一. 組合梯形公式(數值積分)
【問題描述】組合梯形公式求函式f(x)=2+sin(2*sqrt(x))的積分近似值。
【輸入形式】在螢幕上依次輸入積分上限、下限和等距子區間個數。
【輸出形式】輸出使用組合梯形公式求得的積分近似值。
【樣例1輸入】
1 6 10
【樣例1輸出】
8.19385457
【樣例1說明】輸入:積分上限a為1、下限b為6和等距子區間個數m為10。輸出:積分近似值(保留小數點後8位有效數字)
【評分標準】根據輸入得到的輸出準確
二. 組合辛普森公式(數值積分)
【問題描述】組合辛普森公式求函式f(x)=2+sin(2*sqrt(x))的積分近似值。
【輸入形式】在螢幕上依次輸入積分上限、下限和等距子區間個數。
【輸出形式】輸出使用組合辛普森公式求得的積分近似值。
【樣例1輸入】
1 6 5
【樣例1輸出】
8.18301549
【樣例1說明】輸入:積分上限a為1、下限b為6和等距子區間個數m為5。輸出:積分近似值(保留小數點後8位有效數字)
【評分標準】根據輸入得到的輸出準確
import math
def fun(x):
return math.sin(2*math.sqrt(x))+2
# 復合梯度
def tx(a,b,m):
h = (b-a)/m
s = 0
for i in range(1,m):
x = a+h*i
s = s+fun(x) #s=f1+f2+----+fm-1
result = (h/2)*(fun(a)+s*2+fun(b))
return result
#復合辛普森
def xps(a,b,m):
h = (b-a)/(2*m)
s1 = 0
s2 = 0
for i in range(1,m+1):
x = a+ h*(2*i -1)
s1 = s1+fun(x)
s1 = 4*h*s1/3
for i in range(1,m):
x = a+ h*2*i
s2 = s2+fun(x)
s2 = 2 * h * s2 / 3
result = (h/3)*(fun(a)+fun(b))+s1+s2
return result
def xps(a,b,m):
h = (b-a)/(2*m)
s1 = 0
for i in range(1,m+1):
x = a+ h*2*i
s1 = s1+fun(x)+4*fun(x-h)+fun(x-2*h)
result = (h/3)*s1
return result
def main():
a,b,m= input().split()
a =int(a)
b =int(b)
m =int(m)
print("%.8f"%xps(a, b, m))
if __name__ == '__main__':
main()
數值積分 Python實現
原理 利用復化梯形公式,復化simpson公式,計算積分。步驟 測試函式 deff x,i if i 1 return 4 math.sin x 2 0.5 if i 2 if x 0 return 1else return math.sin x x if i 3 return math.exp x...
數值分區間 數值積分 使用FFT來降低計算量
我們考慮如下積分的數值計算問題 我們假定 是有界的,因為 的快速下降性,我們知道上述積分的主要貢獻來自於 這樣的乙個鄰域 當然,只是乙個示例。因此,我們可以採用復合梯形公式來數值求解積分。取為等距節點,則復合梯形公式給出數值積分近似 下面我們以 以及 為例來計算一下,首先這個積分的精確值為 數值上,...
Matlab數值積分
function gc,ak,xk guasschebyshev fun,n 高斯 勒讓德數值積分 引數說明 fun 積分表示式,可以是函式控制代碼 inline函式 匿名函式 字串表示式,但是必須可以接受向量輸入 a,b 積分上下限只能 1 1 故忽略 n 積分階數,可以任意正整數,但是不建議設定...