原理:
利用復化梯形公式,復化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)) / (4 + x ** 2)
if i == 4:
return math.log(1+x,math.e) / (1 + x ** 2)
"""列印顯示函式"""
defp
(i,n):
return
"第" + str(i) + "題,n=" + str(n) + "時的積分值為:"
"""復化simpson函式"""
defsimpson
(a, b, n, i):
h = (b - a) / (2 * n)
f0 = f(a,i) + f(b,i)
f1 = 0
f2 = 0
for j in range(1,2 * n):
x = a + (j * h)
if j % 2 == 0:
f2 = f2 + f(x,i)
else:
f1 = f1 + f(x,i)
sn = (h * (f0 + 2 * f2 + 4 * f1)) / 3
print("復化simpson函式" + p(i,n) + str("%-10.7f"%(sn)))
return sn
deft
(a, b, n, i):
h = (b - a) / n
f0 = f(a,i) + f(b,i)
f = 0
for j in range(1,n):
x = a + (j * h)
f = f + f(x,i)
sn = (h * (f0 + 2 * f)) / 2
print("復化梯形函式" + p(i,n) + str("%-10.7f"%(sn)))
return sn
defsimpsontimes
(x):
n = 1
y = simpson(0, math.pi/4, n, 1)
while(abs(y - 1.5343916) > x):
n = n + 1
y = simpson(0, math.pi/4, n, 1)
else:
return n
deftimes
(x):
n = 1
y = t(0, math.pi/4, n, 1)
while(abs(y - 1.5343916) > x):
n = n + 1
y = t(0, math.pi/4, n, 1)
else:
return n
""" 測試部分
"""simpson(0, math.pi/4, 10, 1)
simpson(0, 1, 10, 2)
simpson(0, 1, 10, 3)
simpson(0, 1, 10, 4)
simpson(0, math.pi/4, 20, 1)
simpson(0, 1, 20, 2)
simpson(0, 1, 20, 3)
simpson(0, 1, 20, 4)
t(0, math.pi/4, 10, 1)
t(0, 1, 10, 2)
t(0, 1, 10, 3)
t(0, 1, 10, 4)
t(0, math.pi/4, 20, 1)
t(0, 1, 20, 2)
t(0, 1, 20, 3)
t(0, 1, 20, 4)
print("復化梯形函式求解第一問,精度為0.00001時需要" + str(times(0.00001)) + "個步數")
print("復化simpson函式求解第一問,精度為0.00001時需要" + str(simpsontimes(0.00001)) + "個步數")
print("復化梯形函式求解第一問,精度為0.000001時需要" + str(times(0.000001)) + "個步數")
print("復化simpson函式求解第一問,精度為0.000001時需要" + str(simpsontimes(0.000001)) + "個步數")
python做數值積分 積分區間為小數 數值積分
一.組合梯形公式 數值積分 問題描述 組合梯形公式求函式f x 2 sin 2 sqrt x 的積分近似值。輸入形式 在螢幕上依次輸入積分上限 下限和等距子區間個數。輸出形式 輸出使用組合梯形公式求得的積分近似值。樣例1輸入 1 6 10 樣例1輸出 8.19385457 樣例1說明 輸入 積分上限...
Matlab數值積分
function gc,ak,xk guasschebyshev fun,n 高斯 勒讓德數值積分 引數說明 fun 積分表示式,可以是函式控制代碼 inline函式 匿名函式 字串表示式,但是必須可以接受向量輸入 a,b 積分上下限只能 1 1 故忽略 n 積分階數,可以任意正整數,但是不建議設定...
matlab 數值積分!
1.梯形格式 2.其他格式 matlab提供了quad quadl 等函式命令計算一元函式的數值積分,其中quad 採用遍歷的自適應simpson法計算函式的數值積分,quadl採用遍歷的自適應lobatto法計算函式的數值積分。其呼叫格式一般為 q,fcnt quad function,a,b 其...