Commons Math學習筆記——函數積分
2.4 函數積分
看其他篇章到目錄選擇。
積分可以說是最常見的了,在函數的一節中我們講過函數的微分和給定變量求值,這里我們講講通過函數求積分,具體的數值積分方法和應用。什么是數值積分?在數值分析中,數值積分是計算定積分數值的方法和理論。在數學分析中,給定函數的定積分的計算不總是可行的。許多定積分不能用已知的積分公式得到精確值。數值積分是利用黎曼積分等數學定義,用數值逼近的方法近似計算給定的定積分值。借助于電子計算設備,數值積分可以快速而有效地計算復雜的積分。Commons Math中的積分包analysis.integration提供了幾種數值積分的實現,UnivariateRealIntegrator接口是積分包中的基礎接口,該接口繼承了math包中的ConvergingAlgorithm接口。具體定義了一系列方法,其中比較主要的有double integrate(UnivariateRealFunction f, double min, double max)方法,這個方法就是通過min和max設定積分區間,通過f設定被積函數,最后返回定積分值的方法。可以看到這個接口的實現是針對單變量實函數的。多元積分的實現,目前還沒有看到。
其實在UnivariateRealIntegrator接口下,并不是實現類直接實現該接口,而是通過一個Abstract類來間接實現,首先UnivariateRealIntegratorImpl實現接口,然后具體的積分方法類來繼承這個接口,我認為這是一種策略-模板方法模式~~~
那么看到了具體的結構類圖。我們以辛普森法則求積分的方法為例來看看如何應用Commons Math庫。具體的辛普森積分法可以見本文的參考資料。
測試代碼如下,其中用到的正弦函數類在2.1節講述函數的時候有定義,忘記的同學可以回顧一下。

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

輸出結果:
f(x)=sin(x)
integration of f(x) from 0 to Pi is 2.000000064530001
相關資料:
積分:http://zh.wikipedia.org/zh-cn/%E7%A7%AF%E5%88%86
辛普森積分法:http://zh.wikipedia.org/zh-cn/%E8%BE%9B%E6%99%AE%E6%A3%AE%E7%A9%8D%E5%88%86%E6%B3%95
辛普森積分法2: http://mathworld.wolfram.com/SimpsonsRule.html
Commons math包:http://commons.apache.org/math/index.html
posted on 2010-12-19 21:27 changedi 閱讀(3403) 評論(0) 編輯 收藏 所屬分類: 數學