麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Python > 正文

復化梯形求積分實例――用Python進行數值計算

2024-09-09 19:02:36
字體:
來源:轉載
供稿:網友

用程序來求積分的方法有很多,這篇文章主要是有關牛頓-科特斯公式。

學過插值算法的同學最容易想到的就是用插值函數代替被積分函數來求積分,但實際上在大部分場景下這是行不通的。

插值函數一般是一個不超過n次的多項式,如果用插值函數來求積分的話,就會引進高次多項式求積分的問題。這樣會將原來的求積分問題帶到另一個求積分問題:如何求n次多項式的積分,而且當次數變高時,會出現龍悲歌現象,誤差反而可能會增大,并且高次的插值求積公式有可能會變得不穩定:詳細原因不贅述。

牛頓-科特斯公式解決這一問題的辦法是將大的插值區間分為一堆小的插值區間,使得多項式的次數不會太高。然后通過引入參數函數

將帶有冪的項的取值范圍固定在一個固定范圍內,這樣一來就將多項式帶有冪的部分的求積變為一個固定的常數,只需手工算出來即可。這個常數可以直接帶入多項式求積函數。

上式中x的求積分區間為[a, b],h = (b - a)/n, 這樣一來積分區間變為[0, n],需要注意的是從這個公式可以看出一個大的區間被分為n個等長的小區間。 這一部分具體請參見任意一本有關數值計算的書!

n是一個事先確定好的值。

又因為一個大的插值區間需要被分為等長的多個小區間,并在這些小區間上分別進行插值和積分,因此此時的牛頓-科特斯公式被稱為:復化牛頓-科特斯公式。

并且對于n的不同取值牛頓-科特斯有不同的名稱: 當n=1時,叫做復化梯形公式,復化梯形公式也就是將每一個小區間都看為一個梯形(高為h,上底為f(t), 下底為f(t+1))。這與積分的本質:無限分隔 相同。

當n=2時,復化牛頓-科特斯公式被稱為復化辛普森公式(非美國法律界著名的那個辛普森)。

我這篇文章實現的是復化梯形公式:

首先寫一個函數求節點函數值求和那部分:

"""@brief: 求和 ∑f(xk) : xk表示等距節點的第k個節點,不包括端點  xk = a + kh (k = 0, 1, 2, ...)  積分區間為[a, b]   @param: xk  積分區間的等分點x坐標集合(不包括端點)@param: func 求積函數@return: 返回值為集合的和"""def sum_fun_xk(xk, func): return sum([func(each) for each in xk])

然后就可以寫整個求積分函數了:

"""@brief: 求func積分 :   @param: a 積分區間左端點@param: b 積分區間右端點@param: n 積分分為n等份(復化梯形求積分要求)@param: func 求積函數@return: 積分值""" def integral(a, b, n, func): h = (b - a)/float(n) xk = [a + i*h for i in range(1, n)] return h/2 * (func(a) + 2 * sum_fun_xk(xk, func) + func(b))

相當的簡單

試驗:

當把大區間分為兩個小區間時:

分為20個小區間時:

求的積分值就是這些彩色的梯形面積之和。

測試代碼:

if __name__ == "__main__":   func = lambda x: x**2 a, b = 2, 8 n = 20 print integral(a, b, n, func)   ''' 畫圖 ''' import matplotlib.pyplot as plt plt.figure("play") ax1 = plt.subplot(111) plt.sca(ax1)   tmpx = [2 + float(8-2) /50 * each for each in range(50+1)] plt.plot(tmpx, [func(each) for each in tmpx], linestyle = '-', color='black')   for rang in range(n):  tmpx = [a + float(8-2)/n * rang, a + float(8-2)/n * rang, a + float(8-2)/n * (rang+1), a + float(8-2)/n * (rang+1)]  tmpy = [0, func(tmpx[1]), func(tmpx[2]), 0]  c = ['r', 'y', 'b', 'g']  plt.fill(tmpx, tmpy, color=c[rang%4]) plt.grid(True) plt.show()
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日本黄色一级视频 | 日韩理论电影网 | 国产精品99久久久久久大便 | 成年性羞羞视频免费观看 | 国产精品视频免费网站 | 九九热精品免费 | 国产成年人视频 | 国产在线精品区 | 美女在线视频一区二区 | 亚洲国产一区二区三区 | 国产1区2区在线 | 2021免费日韩视频网 | 黄色高清视频网站 | 日日噜噜噜噜久久久精品毛片 | 亚洲免费视频大全 | 久久精品伊人网 | 久久精品男人 | 国产二区三区在线播放 | 黄色99视频 | 精品国产一区二区三区蜜殿 | 黄在线观看 | 国产做爰全免费的视频黑人 | 在线观看免费av网 | 亚洲成人福利网站 | 欧美极品欧美精品欧美视频 | 91精品国产777在线观看 | 国产免费看 | 色播视频在线播放 | 特片网久久 | 成人黄视频在线观看 | 欧美一级毛片大片免费播放 | 九九热免费在线观看 | 美女黄网站免费观看 | 91午夜视频| 国产人成精品一区二区三 | 欧美1区2区| 亚洲国产精品一区二区久久 | 亚洲成人在线免费观看 | 国产在线观看免费视频软件 | 久久精品一区二区三区不卡牛牛 | 国产一区网址 |