1、Xk+1=Xkf(Xk)/f (Xk).3、实验用例 (1)在区间0,1上用二分发求方程+10x-2=0近似根,要求误差不超过0.0005. (2)取初值X0=0,用迭代公式Xk+1=(2-)/10,(k=0,1,2,.)求方程+10x-2=0的近似根。误差不超过0.0005. (3)取初值X0=0,用牛顿迭代法求方程+10x-2=0的近视根。要求误差不超过0.0005.四、实验程序二分法MATLAB程序:function x=agui_bisect(fname,a,b,e)%fname为函数名,a,b为端点,e 为精确度fa=feval(fname,a);fb=feval(fname,b);
2、if fa*fb0 error();endk=0x=(a+b)/2while(b-a)(2*e) fx=feval(fname,x); if fa*fxe&kN %循环条件的控制:x0-x的绝对值大于某一精度,和迭代次数小于N k=k+1 %显示迭代的第几次 x0=x;x=(2-exp(x0)/10;%迭代公式 disp(x)%显示xif k=N warning(已达到最大迭代次数%如果K=N则输出已达到最大迭代次数 牛顿迭代法MATLAB程序:function x=agui_newton(fname,dfname,x0,e)N=100N x0=x; x=x0-feval(fname,x0)/
3、feval(dfname,x0); disp(x)已达最大迭代次数5、实验结果和总结 由上面的对二分法、迭代法、牛顿法三种方法的三次实验结果,我们可以得出这样的结论:二分法要循环k=11次,迭代法要迭代k=5次,牛顿法要迭代k=2次才能达到精度为0.0005的要求,而且方程+10x-2=0的精确解经计算为0.0905250,计算量从大到小依次是:二分法,迭代法,牛顿法。 解方程组的直接法1、实验目的 用高斯消去法解线性方程组Ax=b,式中A为n阶列向量。并分析选主元的重要性。二、实验方法 (1)顺序消去法 通过变换,将系数矩阵转换成等价的上三角阵,经过回代,求出方程组的解。 (2)列主元消去法
4、 在第i步时,首先,将(jk t=a(k,:a(k,:)=a(r,:a(r,:)=t; a(k+1):n,(k+1):(n+1)=a(k+1):(n+1)-a(k+1):n,k)/a(k,k)*a(k,(k+1):(n+1);%Lik=Aik/Akkn,k)=zeros(n-k,1); ax=zeros(n,1);x(n)=a(n,n+1)/a(n,n);for k=n-1:1 x(k,:)=(a(k,n+1)-a(k,(k+1):n)*x(k+1):n)/a(k,k);5、实验结果和总结 当用顺序消去法和列主元消去法求解方程组时,列主消去法比较简单,它保留了化简的第二步,然后一步步的消去,最
5、后再一个个的回代,求出线性方程组的解,顺序消去法过程的乘除法将会产生大量的舍入误差,往往使结果很不可靠,而此题目中列主元消去法能得出精确解,而顺序消去法只能求出近似解,两者所求结果的误差是比较小的,甚至是没有区别的。 解线性方程组的迭代法 用雅克比和高斯塞德尔迭代法解线性方程组Ax = b,式中A为非奇异实矩阵。在给定迭代初值的情况下,进行迭代,直到满足精度要求。2、实验方法(1)雅克比迭代法 设系数矩阵A为非奇异矩阵,且(i=1,2,.,n),从第i个方程中解出得其等价形式:,取初始向量,可建立I相应的迭代公式:(2)高斯塞德尔迭代法 每计算出一个新的分量便立即用它取代对应的旧分量进行迭代,
6、可能收敛更快,据此思想可构造高斯塞德尔迭代法,其迭代公式为:三、实验用例 求使的近似解及相应的迭代次数。初值选为常向量b。4、实验程序雅克比迭代法MATLAB程序:function x=agui_jacobi(a,b)%a为系数矩阵,b为右端向量,X0为初始向量(默认为零向量)%e为精度,N为最大迭代次数,x为返回解向量e=1e-6;x0=zeros(n,1);d=diag(diag(a);l=-tril(a,-1);u=-triu(a,1);while norm(x0-x,inf) k=k+1; x=inv(d)*(l+u)*x+inv(d)*b; k disp(x)已达最大次数结果截图:
7、.高斯-塞德尔迭代法MATLAB代码:function x=agui_GS(a,b)a1=tril(a);a2=inv(a1); x=-a2*(a-a1)*x0+a2*b; format long . 做这两个实验时,由于对课本知识不是很了解所以对程序的内容也不是很熟悉,调试出错了也不容易找到错误原因,在老师的帮助下,我读懂了程序并且找出了其中的错误。通过实验验证了高斯-塞德尔迭代比雅克比迭代速度快且效果明显。在计算时要根据实际情况来判断采用哪种方法。 插值问题 用拉格朗日插值和牛顿插值的方法,在已知函数在点,.,的函数值的情况下,求插值节点x的函数值y,即求f(x).并比较结果,说明为什么相
8、等。二、试验方法(1)拉格朗日插值 根据;构造插值多项式将插值点x代入上式,就可以得到函数f(x)在点x处的函数近视值。 (2)牛顿插值牛顿插值公式中各项的系数就是函数f(x)的各阶均差(差商),因此,在构造牛顿公式时,常常先把均差列成一个表,此表成为均差表。 从函数表 x 0.4 0.55 0.8 0.9 1 F(x) 0.41075 0.57815 0.88811 1.02652 1.17520出发,计算f(0.5),f(0.7)及f(0.85)的近似值。拉格朗日插值MATLAB程序:function f=agui_lagrange(x0,y0,x)n=length(x0);m=lengt
9、h(x);format longs=0.0;n p=1.0; for j=1: if j=k p=p*(x-x0(j)/(x0(k)-x0(j);end s=p*y0(k)+s;f=s;牛顿插值MATLAB程序:function f=agui_newton(x0,y0,x) m=length(x);N=0.0; p=p*(x-x0(k); T=0.0; for i=1: q=1.0; if j=i q=q*(x0(i)-x0(j); T=y0(i)/q + T; N=T*p/(x-x0(k)+N;f=N;五、实验结果总结1、由实验结果可以看出两种方法的计算结果一致2、当插值多项式从n-1次增加到n次时,拉格朗日型插值必须从新计算所有的基本插值多项式;对于牛顿插值多项式,只需要表格在计算一个n阶差,然后加上一项就可以了。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1