昨天ac
m acm
模擬的時候遇到了一道si
mpso
n sim
pson
積分相關的題
完全不知道怎麼求,我們組fi
shme
n fis
hmen
被bym bym
嘲諷了很久
於是今天下午結合各種資料還是看了一下
這個東西不要覺得它看上去講什麼積分很高階 實際上認真推導也不是很難首先s
imps
ons im
pson
積分的式子是這個東西
積分號的下標代表區間左端點,上標代表區間右端點
這個值的意思就是函式在[a
,b] [a,
b]
區間與x x
軸,x=
a' role="presentation" style="position: relative;">x=a
x=a,
x=b x=b
圍成的面積
首先引入一些東西,si
mpso
n sim
pson
積分就是用乙個二次曲線來無限逼近原曲線
來達到求得近似值的效果
首先引入乙個東西 對於乙個二次函式f(
x)=a
x2+b
x+c f(x
)=ax
2+bx
+c
求積分可得f(
x)=∫
x0f(
x)dx
=a3x
3+b2
x2+c
x+d f(x
)=∫0
xf(x
)dx=
a3x3
+b2x
2+cx
+d
在這裡d
d
是乙個常數 這個東西具體怎麼證等我問了物理組的同學再來填坑那麼∫
lrf(
x)dx
=f(r
)−f(
l)' role="presentation" style="position: relative;">∫rl
f(x)
dx=f
(r)−
f(l)
∫lrf
(x)d
x=f(
r)−f
(l)∫
rlf(
x)dx
=a3(
r3−l
3)+b
2(r2
−l2)
+c(r
−l) ∫lr
f(x)
dx=a
3(r3
−l3)
+b2(
r2−l
2)+c
(r−l
)∫rl
f(x)
dx=(
r−l)
[a3(
l2+r
2+lr
)+b2
(l+r
)+c]
∫ lr
f(x)
dx=(
r−l)
[a3(
l2+r
2+lr
)+b2
(l+r
)+c]
∫rlf(x)
dx=b
−a6(
2al2
+2ar
2+2a
lr+3
bl+3
br+6
c)∫ lr
f(x)
dx=b
−a6(
2al2
+2ar
2+2a
lr+3
bl+3
br+6
c)
∫rlf(x)
dx=b
−a6 ∫lr
f(x)
dx=b
−a
6∫rl
f(x)
dx=b
−a6[
f(l)
+f(r
)+4f
(l+r
2)] ∫lr
f(x)
dx=b
−a6[
f(l)
+f(r
)+4f
(l+r
2)
]就這樣證完了… 然後我們來考慮這個**怎麼實現
double simpson(double a, double b)
好了寫完了
這樣子直接計算我們發現誤差非常大,畢竟原影象可能不能很好的用二次函式逼近
自適應simpson積分
那怎麼辦呢,我們可以考慮模擬微分的過程,把區間分成無窮小份再把得到的答案積分就是最後的答案了
但是一般我們只要求乙個近似值,所以我們就遞迴到滿足正常誤差即可
還有乙個問題 每次遞迴下去都有精度誤差,那麼累加起來可能就和正確答案相差甚遠了
這個時候我們可以在遞迴的時候提高精度要求,盡量讓小的答案精確這樣就可以了
在劉汝佳的**中判斷是這樣寫的
double _asr(double l, double r, double v, double eps)
大概意思就是把多出的精度損失也加回去,這樣子能夠比較好的保證精確度
裸的模板題
這個就不用講了 套板子即可
codes
#include
using
namespace
std;
typedef
double db;
const db eps = 1e-6;
db a, b, c, d;
db f(db x)
db integral(db x1, db x2)
db simpson(db x1, db x2, db eps)
int main()
定積分學習筆記
定積分 sn 1 n 2 n 3 n n n 當n趨向無窮大時,sn logn 常數 冪的指數為分數 把指數化成分數形式,如2的2分之1次方,實際上就是先是2的一次方,再開方.如果指數是三分之二 那麼就是2的二次方再開三次方.x nm y x y mod m 法則 若x x mod m y y mo...
微積分 學習筆記
1階導 frac 2階導 frac frac y n階導 frac y 基本導數 c 0 x n n x sin x cos x cos x sin x e x e x e c e 鏈式法則 a x e a x ln a 除法法則 也可以用鏈式法則 1 次方去理解 csc x frac 1 frac...
自適應辛普森積分學習筆記
b af x dx b a6 f a 4 f a b2 f b ab f x dx b a6 f a 4 f a b2 f b 它的用處遠不止求解三次以下的函式,對於任意一段函式,我們也可以利用辛普森積分來求解積分的近似值。具體來講就是不斷地將當前的區間二分,把這一段的積分轉化為兩個子問題,使得求解...