- 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
 
  复制代码 |   
 
  
 |