牛顿迭代算法matlab程序1.牛顿迭代法描述:牛顿法求实系数高次代数方程f(x)=a0x^n+a1x^(n-1)+…+an-1x+an=0(an≠0)(1)的在初始值x0附近的一个根。解非线性议程f(x)=0的牛顿法是把非线性方程线性化的一种近似方法。把f(x)在x0点附近展开成泰勒级数f(x)=f(x0)+(x-x0)fˊ(x0)+(x-x0)2+…取其线性部分,作为非线性方程f(x)=0的近似方程,则有f(x0)+fˊ(x0)(x-x0)=0设fˊ(x0)≠0则其解为x1=x0-f(x0)/fˊ(x0)再把f(x)在x1附近展开成泰勒级数,也取其线性部分作f(x)=0的近似方程。若f(x1)≠0,则得x2=x1-f(x1)/fˊ(x1)这样,得到牛顿法的一个迭代序列xn+1=xn-f(xn)/fˊ(xn)2.MATLAB函数说明Y=NEWTON_1(A,N,X0,NN,EPS1)输入变量:An+1元素的一维实数组,输入参数,按升幂存放方程系数。N整变量,输入参数,方程阶数。X0实变量,输入参数,初始迭代值。NN整变量,输入参数,允许的最大迭代次数。EPS1实变量,输入参数,控制根的精度。3.程序代码:newton_1.mfunctiony=newton_1(a,n,x0,nn,eps1)x(1)=x0;b=1;i=1;while(abs(b)eps1*x(i))i=i+1;x(i)=x(i-1)-n_f(a,n,x(i-1))/n_df(a,n,x(i-1));b=x(i)-x(i-1);if(inn)error(ˊnnisfullˊ);return;endendy=x(i);i程序中调两个子函数n_f.m和n_df.m文件如下:n_f.m:functiony=n_f(a,n,x)%待求根的实数代数方程的函数y=0.0;fori=1:(n+1)y=y+a(i)*x^(n+1-i);endn_df.m:functiony=n_df(a,n,x)%方程一阶导数的函数y=0.0;fori=1:ny=y+a(i)*(n+1-i)*x^(n-i);end4.程序实现说明:(1)程序中调用n_f.m和n_df.m文件。n_f.m是待求根的实数代数方程的函数,n_df.m是方程一阶导数的函数。由使用者自己编写。(2)牛顿迭代法的收敛速度:如果f(x)在零点附近存在连续的二阶微商,ξ是f(x)的一个重零点,且初始值x0充分接近于ξ,那么牛顿迭代是收敛的,其收敛速度是二阶的,即平方收敛速度。5.算法例题用牛顿法求下面方程的根f(x)=x3+2x2+10x-20运行结果a=[1,2,10,-20];n=3;x0=1;nn=1000;eps1=1e-8;y=newton_1(a,n,x0,nn,eps1)y=1.368808107821373e+000i=6