Geomerty
preprocess
1 | typedef double db; |
Point&Vector
1 | struct Point{ |
PolarPoint
1 | struct PolarPoint { |
Line&Segment
1 | struct Line { |
Ciercle
1 | struct Circle { |
Simpson
用二次曲线逼近原函数,在平面直角坐标系中,由三点 $(x_1,y_1),(x_2,y_2),(x_3,y_3) (x_1<x_2<x_3,x_2=\frac{x_1+x_3} 2)$ 确定的抛物线 $y=f(x)$ 的定积分为
将要积分的区域 $[L, R]$ 划分成 $n$ 份,横坐标为 $x_0\sim x_n$,对应的函数值分别为 $y_0\sim y_n$ 其结果为
自适应Simpson
对要积分的区域 $[L, R]$ 分成两半 $[L, mid]$ 和 $[mid, R]$,如果用二次曲线对 $(L, mid, R)$ 求出的积分值,和对 $(L, \frac {L+mid} 2, mid)$ 和 $(mid,\frac {L+mid} 2, R)$ 分别积分再加起来的值,相差不超过某个精确度,那么就可以停止划分。
1 | // 1 |
1 | // 2 |