自適應辛普森 入門篇 積分問題的巧妙解法

2022-08-20 13:24:13 字數 1186 閱讀 2002

自適應辛普森,乙個非常有趣的演算法。

感覺也不需要多麼高深的數學知識,果然演算法這種東西實踐起來總比想象中容易許多。

考慮對於任何乙個函式圖象,在\(\delta x\)極小的時候,都可以將這一範圍內的函式視為一段拋物線。

假設這段拋物線擬合後的函式為\(ax^2+bx+c\),然後推導一下:

\[\begin\int_l^r(ax^2+bx+c)&=\frac a3(r^3-l^3)+\frac b3(r^2-l^2)+\frac c3(r-l)\\&=\frac6(2a(l^2+lr+r^2)+3b(l+r)+6c)\\&=\frac6((al^2+bl+c)+4(a(\frac2)^2+b(\frac2)+c)+(ar^2+br+c))\\&=\frac6(f(l)+4f(\frac2)+f(r))\end

\]這就是所謂辛普森積分的公式了:

\]考慮到這一公式的前提是\(\delta x\)極小,因此我們需要不斷二分遞迴以保證精度,不難發現複雜度顯然**。

所以我們需要改進這一演算法。

遞迴次數少,難以保持精度;遞迴次數多,複雜度又難以接受。

而所謂的自適應辛普森演算法,就是在二分的過程中根據精度,自動控制區間分割的大小。

可以直接看**。

namespace simpsonint

i db simpson(con db& l,con db& r) //辛普森積分

i db asr(con db& l,con db& r,con db& ans,con db& eps)//自適應辛普森演算法 }

真正的模板題。

只要在上面給出**中的函式\(f(x)\)裡填上(c*x+d)/(a*x+b)即可。

可證明\(a<0\)時積分發散,\(a>0\)時積分收斂。(具體證明這裡略去)

這道題看似是要求無限積分,實際上當\(x\)到\(15\)左右\(x^\)就已經小得可以忽略不計了。

所以說,我們只要求\(\int_0^x^dx\)即可。

最後要做的就是在**中的函式\(f(x)\)裡填上pow(x,a/x-x)

自適應辛普森演算法是乙個簡單而又有用的演算法。

具體來說,就是學了並不會造成多大負擔,而萬一碰到了這種題目又能發揮出巨大的作用。

所以,餘認為,這還是非常值得一學的。

自適應辛普森積分

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