文档介绍:计算物理计算物理·数值计算数值计算 II PUTATIONAL PHYSICS PHYSICS · · NUMERICAL NUMERICAL PUTATION EQUATION EQUATION SOLVING SOLVING 王王骏骏· ·南京大学物理系南京大学物理系 ******@nju. 虫口模型分叉→混沌)1( 1nnnxxx n-周期解 n=1 : n=2 : n=3: 稳定性: x+dx → F(x+dx)=F(x)+F ’(x)dx xxfffxf n)))) ( (..( ()( )(xxx)1(xxxxx)1 )(1( 2 2xxfffxf))) ((()( )3(1|)('|xF 区间压缩 [a,b] →[a 1,b 1 ] →[a 2,b 2 ] →…其中 a<a 1 <a 2<…<b 2 <b 1 <b 效率其中结果预测:高效 vs 一般性 n) /()( 11iiiiabab压缩变化压缩变化代数方程求根 05)( 2xxf求方程的正根 1 搜索法(二分) 3 Newton-Raphson 方法 2弦割法(插值函数近似) 搜索法步骤: (假设 x比根小x=0 ) x正步长增加 x之值 ,将x倒退一步,并将步长减半 05)( 2xxf容许误差:1 e-6 ; 初值: x =0; 初始步长: dx = x = double func(double x) { return x * x-5; } double solve(double& x, double& dx){ static const double eps=1e-6; double f_old,f_new; f_old=func(x); while(fabs(dx)>eps) { x+=dx; f_new=func(x); if(f_new * f_old<0) dx * =-; f_old=f_new; }; return x+dx; } 考察具体过程:反向后第二步是冗余的含解区间可每次减小 double func(double x); double solve(double& a,double& b){ static const double eps=1e-6; double c,fa,fb,fc; fa=func(a); fb=func(b) while(fabs(b-a)>eps+eps) { c= * (a+b); fc=func(c); if(fa * fc<0) { b=c; fb=fc; } else { a=c; fa=fc; } }; return * (a+b); } 基本条件局部的多项式近似快速求解:线性、二次式端点信息+函数变化趋势→更快