學習筆記 自適應辛普森積分

2022-02-04 23:58:47 字數 2721 閱讀 1885

開計算幾何的坑辣

之前就是一些點、線、面、以及凸包、半平面交、旋轉卡殼

對於面積的並,如果全是矩形,可以矩形面積並,輪廓線全是直線,可以叉積

當遇到非常不規則的圖形組合的時候,如圓弧,就要用到積分了。

好部落格:我

思想:不斷用二次函式(最常見簡單的帶弧函式)擬合影象計算面積。

但是這個擬合,不是直接求出最接近的二次函式,而是用橫座標為l,r,mid三點直接確定二次函式,並且計算積分。

證明見上面部落格。

顯然直接做,,,精度不知道差到**去了。

思想:不斷用二次函式(最常見簡單的帶弧函式)擬合影象計算面積。通過分治縮小規模以保證精度。

通過和l,lmid,mid加上mid,rmid,r的計算面積進行比較,如果誤差在允許範圍內,直接返回

否則遞迴計算左右面積加起來。

顯然規模越小,越精確。

複雜度:o(玄學)

適用條件:

其實比較差勁。

影象必須資料範圍不大,並且精度要求不高。

而且輪廓線必須「平滑」,出題人不會卡你:

除去三個「角」,如果那個弧線就是拋物線的話,直接涼涼了。

【模板】自適應辛普森法1 套公式。也可以直接手推積分。待定係數法求ln(|ax+b|)的係數

double

a,b,c,d,l,r;

double f(double

x)double ji(double a,double

b)double calc(double l,double r,double eps,double

ans)

intmain()

【模板】自適應辛普森法2 套公式。大力推導(也可以打表),a<0時候不是收斂的。

[noi2005]月下檸檬樹

難點在求f(x)

求出相鄰圓的公切線(用相似三角形)。求f時候,把所有的圓和線都掃一遍,如果x在其中,則對計算出的縱座標求max

直接simpson時候傳入f(l),f(r),f(mid)可以從6次計算變成2次計算

//

luogu-judger-enable-o2

#include#define reg register int

#define il inline

#define fi first

#define se second

#define mk(a,b) make_pair(a,b)

#define numb (ch^'0')

using

namespace

std;

typedef

long

long

ll;template

il void rd(t &x)

template

il void output(t x)

template

il void ot(t x)

template

il void prt(t a,int st,int nd)

namespace

miraclec[n];

struct

po po(

double xx,double

yy)};

struct

linet[n];

inttot;

double gou(double c,double

b)void com(int i,int

j)else

}double f(double

x) }

for(reg i=1;i<=tot;++i)

}return

ret;

}double ji(double l,double r,double fl,double fr,double

fm)double calc(double l,double r,double eps,double fl,double fr,double fm,double

ans)

intmain()

for(reg i=1;i<=n;++i)

++n;

c[n].r=0

;

//for(reg i=1;i<=n;++i)

for(reg i=1;ii)

//cout<

for(reg i=1;i<=tot;++i)

double l=23333333,r=-23333333

;

for(reg i=1;i<=n;++i)

double fl=f(l),fr=f(r),fm=f((l+r)/2

); printf(

"%.2lf

",2*calc(l,r,1e-3

,fl,fr,fm,ji(l,r,fl,fr,fm)));

return0;

}}signed main()

/*author: *miracle*

*/

view code

自適應辛普森積分

寫在前面方便複習 例題 題目大意 給定 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 那麼這個玩意...