自適應辛普森積分

2022-05-30 19:30:12 字數 1412 閱讀 6988

自適應辛普森積分是一種解決定積分求解問題的演算法。

給出乙個函式\(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

\]那麼這個玩意就叫\(simpson\)公式。

上面這個玩意顯然精度不夠,甚至可以說根本就不對。

那麼怎麼解決這個問題呢,我們可以考慮模擬微分的過程,把定義域切成一小段一小段,然後在近似,這樣精度就有了。

但是顯然這樣是很慢的,所以我們有了一種自適應的想法,即若當前區間精度夠了就退出,否則二分然後遞迴計算左右兩個區間,具體來說,**應該這麼寫:

double _int (double l,double r) 

double calc(double l,double r,double ans)

void print(int x)

void write(int x)

#define lf double

const int maxn = 2e5+10;

const lf eps = 1e-9;

lf a,b,c,d;

lf f(lf x)

lf integral(lf l,lf r)

lf calc(lf l,lf r,lf ans,lf eps)

\int\frac}x&=\int\frac-\frac}}x\\

&=\frac-\frac(d-\frac)\ln|ax+b|+c

\end

\]注意到中間有乙個很簡單的換元:

\[\int \frac}x=\frac\int\frac}(ax+b)=\frac\ln|ax+b|

\]注意到\(a<0\)時,\(\lim_f(x)=+\infty\),此時積分發散。

否則積分收斂,我也不是特別清楚為什麼

那麼直接套公式就好了。

#includeusing namespace std;

void read(int &x)

void print(int x)

void write(int x)

#define lf double

const int maxn = 2e5+10;

const lf eps = 1e-8;

lf a;

lf f(lf x)

lf _int(lf l,lf r)

lf calc(lf l,lf r,lf res,lf eps)

int main()

自適應辛普森積分

寫在前面方便複習 例題 題目大意 給定 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 中不...

辛普森積分(自適應辛普森公式求積分)

自適應辛普森公式求積分 第一回接觸辛普森積分,至於這個辛普森是幹嘛的呢,在這裡就有必要好好地講一講了。應用 立體幾何中用來求擬柱體體積的公式。這裡就不詳細說辛普森公式了,有需要的朋友可以看這裡 接下來我們好好的說說自適應辛普森公式求積分,自適應辛普森公式求積分是很重要的乙個知識點,弄懂了自適應辛普森...