博文

目前显示的是标签为“自适应辛普森算法”的博文

数值积分

靠,除了刘汝佳的书和一些人的博客,什么中文资料都找不到 定积分真是迷人…… 有时可以算出原函数,有的时候算不出来原函数。(俗称“积不出来”) 我们需要一些求积分的方法——数值积分算法。 牛顿-莱布尼茨公式 应用于我们能容易地算出 f ( x ) f ( x ) 的原函数的情况。往往是多项式函数。 float F ( float x ) //已经计算出F(x)为f(x)的导函数 { return 3 * x + 1 ; } float integral ( float a , float b ) { return F ( b ) - F ( a ); //基本定理 } 拉格朗日中值定理 对求积分也没什么用…… 如果 f ( x ) f ( x ) 满足: 1. 在闭区间 [ a , b ] [ a , b ] 上连续; 2. 在开区间 ( a , b ) ( a , b ) 上可导。 那么开区间 ( a , b ) ( a , b ) 中至少有一点 ε ε ,使得 f ( b ) − f ( a ) = f ′ ( ε ) ( b − a ) f ( b ) − f ( a ) = f ′ ( ε ) ( b − a ) 。 辛普森公式 辛普森公式用于求我们 很难求原函数 的函数的积分。 很玄学的公式:  ∫ b a f ( x ) d x ≈ b − a 6 [ f ( a ) + 4 f ( a + b 2 ) + f ( b ) ] ∫ a b f ( x ) d x ≈ b − a 6 [ f ( a ) + 4 f ( a + b 2 ) + f ( b ) ] 大意是:选取在 x = a x = a 、 x = a + b 2 x = a + b 2 和 x = b x = b ,拿二次函数来拟合这三个点。 当然,这样搞精度误差很大。解决的方法是, 把 [ a , b ] [ a , b ] 分割成很多个区段,对每个区段用辛普森公式求积分。  区段的个数由要求的精度确定。(我喜欢取 233 233 段 自适...