自適應Simpson積分

2022-08-16 19:24:14 字數 1144 閱讀 4746

作用

如標題所示,這玩意就是當你不會微積分的時候來求積分的。

總所周知,積分的定義就是函式的某一段與座標軸之間的面積。

那麼,自適應simpson積分就是一種可以再某些精度下計算出較為平滑的函式的積分的比較簡單優美的演算法。

(ps:這玩意的時間複雜度?大概是o(玄學)吧)

引子

積分的定義是面積,那麼我們可以通過最基本的切割法來求出一定精度下面積。

(ps:就是0.0000……01那樣掃過去,把這個當做寬,把函式值當做高,然後乘起來當做面積)

然而這個耗費的時間太多,而且精度也不如人意,所以就出現了simpson積分。

正文

依舊是總所周知,一條二次函式曲線由三個點確定,那麼也意味著,我們確定三個點可以確定一條二次函式曲線。

還是總所周知,二次函式的積分是好求的,也就是牛頓科特斯的公式中n=2的情況。那麼我們就可以通過二分取點來吧當前區間的積分擬成乙個二次函式的積分。

來寫份偽**可能會清楚一點

double get(double l,double r)

double simpson(double l,double r){

double mid=(l+r)/2;

s1=get(l,mid)+get(mid,r);

s2=get(l,r);

if(abs(s1-s2)如**所示,自適應simpson積分就是不停地二分區間,然後把每一段函式看成兩段二次函式,然後積分,再中間取點,若這個與繼續分下去的差小於精度誤差,那麼這個區間再分下去也不會對答案的精度範圍造成什麼影響,那麼就直接返回這一段區間的值。

然而據大佬yww講,這玩意是假的自適應simpson積分,因為沒有精度保障,他的都是把eps也二分傳下去。這樣做確實能有精度保障(然而在bzoj的某道題目,yww的真丶自適應積分**了,假的自適應積分過了),所以我還是寫假的自適應simpson積分吧。

某些注意事項

有許多根本積不了分的函式也照樣可以被自適應simpson積分摁在地上日,原因很顯然,就是這玩意就一逼近演算法,沒太多數學上的限制。當然,越平滑的函式用simpson積分所造成的誤差會越小,如果有什麼七次函式八次函式什麼的倒是也可以用,不過效果怎麼樣就不知道了。

自適應辛普森積分

寫在前面方便複習 例題 題目大意 給定 a,b l,r a,b,l,r a,b,l,r 求橢圓 x2a 2 y2 b2 1 frac frac 1 a2x2 b2y2 1 在 l,r l,r l,r 的積分 題目分析 題目所求即為 2 l rb1 x2a2 dx 2 int l rb sqrt dx...

自適應辛普森積分

乙個完全不會計算幾何的蒟蒻的自我拯救 有的時候會有一些毒瘤計算幾何題,要求的圖形面積邊緣是一段函式,而這個函式解析式通常非常繁瑣,沒辦法直接用公式積分,所以就需要用辛普森積分求近似值。辛普森積分的用途就是在精度要求不高的時候 通常是求圖形面積 求函式積分的近似值,大概步驟就是在積分區間 a,b 中不...

自適應辛普森積分

自適應辛普森積分是一種解決定積分求解問題的演算法。給出乙個函式 f x 求 int l rf x x 我們考慮用一條拋物線來近似這個函式,設 g x ax 2 bx c 那麼可得 begin fraca r 3 l 3 fracb r 2 l 2 c r l frac frac end 那麼這個玩意...