您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 高斯--塞德尔以及雅可比迭代法
计算方法实验报告指导老师:易昆南专业班级:统计0802班学号:1304080408姓名:梁远飞学号1304080408班级统计0802姓名梁远飞指导教师易昆南实验题目二分法评分1、设计(实习)目的:1.了解雅可比迭代法以及高斯—塞德尔迭代法的原理2.利用matlab实现雅可比迭代法求解线性方程组3.利用matlab实现高斯--塞德尔迭代法求解线性方程组2、实验内容:1.x1+0.4*x2+0.4*x3=1;2.x1+2*x2-2*x3=1;0.4*x1+*x2+0.8*x3=2;x1+x2+x3=1;0.4*x1+0.8*x2+x3=3.2*x1+2*x2+x3=1.3、详细设计:1.用高斯—塞德尔迭代法求解方程组的解程序如下:functionx=Gauss_Seidel(A,b,x0,tol)if(nargin==2)x0=ones(size(b));tol=1e-6;elseif(nargin==3)tol=1e-6;elsesprintf('USAGE:Gauss_Seidel(A,b,x0,tol)')endD=diag(diag(A));U=triu(A,1);L=tril(A,-1);G=-(D+L)\U;d1=(D+L)\b;x=G*x0+d1;n=1;whilenorm(x-x0)=tolx0=x;x=G*x0+d1;n=n+1;endn在MATLAB主窗口中输入:A=[1,0.4,0.4;0.4,1,0.8;0.4,0.8,1];b=[1;2;3];x=gauss_seidel(A,b)2.用雅可比迭代法求解线性方程组的解程序如下:functionvarargout=Jacobiliu(varargin)A=[1,2,-2;111;221];b=[1;1;1];x0=[0;0;0];x=Jacobi(A,b,x0)functionx=Jacobi(A,b,x0)n=100;%最大迭代次数ee=0.0001;%精度n1=length(b);x1=zeros(n1,1);fori=1:nforj=1:n1s=0;fork=1:n1ifk~=js=s+A(j,k)*x0(k);endendx1(j)=(b(j)-s)/A(j,j);endifnorm(x1-x0)eebreakendx0=x1;endx=x14、实验结果:(1).n=33x=-0.1351-1.08113.9189(2).x=-3315、实验总结:通过这次实验,我对雅可比迭代法以及高斯--塞德尔求解线性方程的基本原理有了进一步的理解,同时了解了雅可比和高斯—塞德尔相对于迭代法的优点,即雅可比和高斯—塞德尔在求解线性方程的过程中具有更快的收敛速度。而高斯法比雅可比的收敛速度更快。牛。在运用MATLAB编程的过程中,通过对while循环结构的运用,帮助我复习了上学期所学的MATLAB程序结构,让我对顺序、选择、循环三种程序结构有了更好的认识,进一步巩固了运用MATLAB编程的能力。
本文标题:高斯--塞德尔以及雅可比迭代法
链接地址:https://www.777doc.com/doc-4935316 .html