- UID
- 3
- 积分
- 8169
- 帖子
- 259
- 主题
- 68
- 论坛币
- 5016
- 威望
- 54
- EP值
- 2533
- MP值
- 20
- 阅读权限
- 200
- 注册时间
- 2011-8-3
- 在线时间
- 1097 小时
- 最后登录
- 2022-10-8
|
嗯 上周論壇開了個會沒更新
不再拖進度了 抽個時間補上
simpson積分法
用法上可能比牛頓法還容易理解
嘛 就是因為用法簡單 2次近似精度也比較好 所以廣泛被使用
通常積分簡單來說理解成算面積就可以了 最初提出這概念貌似就是用來算面積的
嘛 大家高中應該都學過的 分割然後近似成許多長方形 那麼長方形面積的和就是面積了
這是一種近似方法 1次近似精度略低
另外還有如下圖
這樣近似為梯形,同樣1次近似 不過要比上面那個要精確一點
那麼simpson積分的近似是將兩區間(兩長條)近似為2次曲綫
曲綫的地方利用拉格朗日插值法代入曲綫的多項式後得到公式
這地方不具體演示推導了 感覺很難有人理解
那麼來說算法 很簡單而且是萬能型
輸入:a(左端點),b(右端點),m(分割數自己定),f0,…,f2m(各個分割點x對應的y值)
輸出:j(積分結果)
s0=f0+f2m (兩端點的y值之和)
s1=f1+f3+...+f2m-1 (奇數項y值之和)
s2=f2+f4+...+f2m-2 ( 除去端點偶數項之和)
h=(b-a)/2m #分割條的寬度
j=h/3(s0+4s1+2s2) #純粹公式 原理省略
結束
wiki上居然放了個python的例子 想套用可以直接用- def simpson(f, a, b, n):
- """f=function, a=initial value, b=end value, n=number of intervals of size h, n must be even"""
-
- h = float(b - a) / n
- S = f(a)
-
- for i in range(1, n, 2):
- x = a + h * i
- S += 4 * f(x)
-
- for i in range(2, n-1, 2):
- x = a + h * i
- S += 2 * f(x)
-
- S += f(b)
- F = h * S / 3
-
- return F
复制代码 |
|