1、3判断|x1-x0|是否满足精度要求,如不满足则重复上述步骤。4输出x1,即为方程的近似解。开始2.3 Newton迭代法设r是n的根,选取作为r的初始近似值,过点也氐丈做曲线S的切线L,L的方程为L 也八1丘一 Z;,求出L与x轴交点的2.计算JC 少1 =的切线,并求该切线与x轴交点的横坐标= ,称一为r的二次近似-迪值。重复以上过程,得r的近似值序列,其中, 称为r的.次近似值 步骤:1.计算原函数的导数f (x);构造牛顿迭代公式,若f (x0)=0,退出计算,否则继续向下迭代。3.若|x1-x0|满足精度要求,xi即为方程的近似解。yes输出/ x1/L(、结束2.4弦截法思想:为加
2、速收敛,改用两个端点都在变动的弦,用差商替代牛顿迭代公式 的导数f (x)1.构造双点弦法的公式2计算 x2=x1-f(x1)(x1-x0)/f(x1)-f(x0);3判断f(x2)是否满足精度要求,若没有则按照上述步骤继续迭代, 否则输出x2.x2即为方程的近似解。第3章测试结果及分析测试结果函数图像函数 Y=x5-3x3+x-1分法俵 1-1, 1-2, 1-3)-16-1.3kxk-1.455-1.5015610-1.504931-1.5256-1.5039111-1.5052-1.48757-1.5050812-1.505043-1.506258-1.5044913-1.505064-
3、1.496889-1.5047914-1.50507表1-1区间-12-0.9-1.05-0.998437-1.00005-0.975-1.00078-0.999976-1.0125-0.999609-1.00001-0.99375-1.0002-0.999994-1.00312-0.999902-1表1-2区间1.5,1.81.651.691021.690291.7251.69043151.68751.69014161.706251.69028171.696871.69036181.692191.690321.689841.6903表1-3简单迭代法(表2-1.2-2.2-3)初值-1.5-
4、1.5-1.50435-1.50217-1.50453-1.50497-1.50287-1.504661.50499-1.50341-1.50476-1.50501-1.50381-1.50483-1.50412-1.50489-1.50505表2-1初值-1x初值1.6 结果 x=1.690281.61.688621.690231.656691.689271.690251.669871.689671.690271.67791.689911.682781.69006191.685731.69015201.687531.6902表2-3牛顿迭代法(表3-1.3-2, 3-3)初值-1.5 结果
5、x=-1.50507-1.50471表3-1初值-1 结果 x=-1.50507表3-21.690241.686021.688931.68985表3-3双点弦法(表4-1.4-2, 4-3)区间卜1.6,-1.3 结果 x=-1.50507f(xk)0.03125-1.506670.0784566-1.661490.376502-0.010079-1.47175-1.563220.000440988-1.4920.1868012.30387e-006表4-1区间-12-0.9 结果 x= -1-1.013930.04156780.000607777-0.999999-3.11969e-0062
6、.11001e-010表4-2区间1.5,1.8 结果 X=1.690281.64403-0.6764551.68071-0.1511061.691260.0157988-0.000313515-6.3006e-007表4-3从测试结果可以看出二分法和简单迭代法的收敛速度远大于牛顿迭代和弦截法的收敛速度。二分法和简单迭代法的公式易于构造和计算,牛顿迭代法虽然收敛高,但要求导数,计算的复杂度高!双点弦法随稍慢于牛顿跌代法,可以用差商代替牛顿迭代法中的导数,降低了计算的复杂度!附录:源程序清单#in cludemath.husing namespace std;定义寻根步长解的区间/方程近似解/根
7、的个数/精度要求double foot =0.3;int a=-8 ,b=8;double * rn=new double5;double * r = new double 5; int m =0;int x_co unt;double precisi on = 0.000001;/函数的表达式(xA5-3xA3+x-1) double f (double x)/根据函数图像确定根的区间和迭代初值return (pow(x,5)-3* pow(x,3)+ x-1); void in it ()r0 =-1.5;r1 =-1;r2 = 1.6;rn 0=-1.6;rn 1=-1.2;rn 2=
8、1.5;/寻找根的区间void search() 若没有给出区间和初值,进行逐步搜索有根区间for(int i=0; i* foot-8 precisi on)mid = (a+ b)/ 2;if(f* f (mid )= 0) b= mid ; /判断与端点函数值得符号else a=mid;cout mid en dl;rx_count += mid ;return mid; /返回最终结果/=简单迭代法=/构造迭代公式 double fitera (double x)double result=0;double xx=3* pow (x ,3)-x+1;if( xx = 0)XX=-xx;return pow (xx ,1.0 /5.0)*(- 1);elsereturn pow (xx ,1.0 /5.0);/简单迭代double itera (double x0) x0 x0=x1;x1= fitera (x0); /没有到达精度要
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1