1.对方程f(x)=0,先用二分法得到一个较好的初始解,再用牛顿迭代法求一个精度较高的解。一、Matlab编程1.先用二分法得到较好初始解symsx;fun=input('(输入函数形式)fx=');a=input('(输入二分法下限)a=');b=input('(输入二分法上限)b=');d=input('输入误差限d=')%二分法求根%f=inline(x^2-4*x+4);%修改需要求解的inline函数的函数体f=inline(fun);%修改需要求解的inline函数的函数体e=b-a;k=0;whileedc=(a+b)/2;iff(a)*f(c)0b=c;elseiff(a)*f(c)0a=c;elsea=c;b=cende=e/2;k=k+1;endx=(a+b)/2;x%x为答案k%k为次数2.初始解作为初值,利用牛顿迭代法求精度较高的解function[x,k]=Newtondd(f,x0,e)%%牛顿迭代法,求f(x)=0在某个范围内的根。%%f为f(x),x0为迭代初值(选用上述初始解),e为迭代精度,k为迭代次数x_a=x0;x_b=x_a-subs(f,x_a)/subs(diff(f),x_a);k=1;whileabs(x_a-x_b)e,k=k+1;x_a=x_b;x_b=x_a-subs(f,x_a)/subs(diff(f),x_a);endx=x_b;(x_b即为要求的精度更高的解)二、实例验证用二分法和牛顿迭代法分别计算方程sinx-2x2=0的实根,精度为0.0001。1.二分法求解较好的初始解首先画出函数的关系图,可知x1=0,x2在1-1.5之间,即只需求解x2。用二分法如上程序计算方程的根,初始区间为[1,1.5]。可得x2=1.4044,迭代次数为13次。2.以上述初始解作为牛顿迭代法的初值,求解更高精度的解取初值x0=1.4044,计算高精度解,可得x=1.4058,迭代次数为5次。2.对非奇异矩阵A,做A的Doolittle三角分解。(最好用紧凑形式,如有困难也可作通常的三角分解)一、Matlab编程clearallclcA=input('请输入一个方阵');%输入一个n阶方阵[n,n]=size(A);L=zeros(n,n);U=zeros(n,n);fori=1:n%将L的主对角线元素赋值1L(i,i)=1;endforj=1:n%求矩阵U的第一行元素U(1,j)=A(1,j);endfork=2:n%求矩阵L的第一列元素L(k,1)=A(k,1)/U(1,1);endfori=2:n%求L、U矩阵元素forj=i:ns=0;fort=1:i-1s=s+L(i,t)*U(t,j);endU(i,j)=A(i,j)-s;endfork=i+1:nr=0;fort=1:i-1r=r+L(k,t)*U(t,i);endL(k,i)=(A(k,i)-r)/U(i,i);endend%输出矩阵L、ULU二、实例验证输入方阵A[102030;204580;3080171]进行了实例计算。计算结果如下图。该计算结果与实际分解结果相同,初步验证该算法可行。3.实现n+1个插值点的牛顿插值,对任意输入的x值,输出插值多项式的值。一、Matlab编程function[p2,z]=newTon(x,y,t)%输入参数中x,y为元素个数相等的向量,t为待估计的点,可以为数字或向量。%输出参数中p2为所求得的牛顿插值多项式,z为利用多项式所得的t的函数值。n=length(x);chaS(1)=y(1);fori=2:nx1=x;y1=y;x1(i+1:n)=[];y1(i+1:n)=[];n1=length(x1);s1=0;forj=1:n1t1=1;fork=1:n1ifk==jcontinue;elset1=t1*(x1(j)-x1(k));endends1=s1+y1(j)/t1;endchaS(i)=s1;endb(1,:)=[zeros(1,n-1)chaS(1)];cl=cell(1,n-1);fori=2:nu1=1;forj=1:i-1u1=conv(u1,[1-x(j)]);cl{i-1}=u1;endcl{i-1}=chaS(i)*cl{i-1};b(i,:)=[zeros(1,n-i),cl{i-1}];endp2=b(1,:);forj=2:np2=p2+b(j,:);endiflength(t)==1rm=0;fori=1:nrm=rm+p2(i)*t^(n-i);endz=rm;elsek1=length(t);rm=zeros(1,k1);forj=1:k1fori=1:nrm(j)=rm(j)+p2(i)*t(j)^(n-i);endz=rm;endendplot(t,z,'y',x,y,'*r')二、实例验证输入函数值数表为下的函数f(x)进行实例验证.xf(x)0.40.410750.550.578150.650.696750.800.888110.901.026521.051.25386运算结果如下:clcclearx=[0.40.550.650.800.901.05];y=[0.410750.578150.696750.888111.026521.25386];t=0.4:0.1:1.05;[u,v]=newTon(x,y,t)执行结果:u=0.00850.00320.15870.00730.99710.0004v=0.41080.52110.63670.75860.88811.02651.17521.33561.5095则所求得的牛顿多项式为:5432()0.00850.00320.15870.00730.99710.0004fxxxxxx