自適應辛普森積分是一種解決定積分求解問題的演算法。
給出乙個函式\(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 中不...
辛普森積分(自適應辛普森公式求積分)
自適應辛普森公式求積分 第一回接觸辛普森積分,至於這個辛普森是幹嘛的呢,在這裡就有必要好好地講一講了。應用 立體幾何中用來求擬柱體體積的公式。這裡就不詳細說辛普森公式了,有需要的朋友可以看這裡 接下來我們好好的說說自適應辛普森公式求積分,自適應辛普森公式求積分是很重要的乙個知識點,弄懂了自適應辛普森...