1、数值分析实验五班级: 10 信计二班 学号:59 姓名: 王志桃 分数: 一实验名称高斯-赛德尔迭代法解线性方程组二实验目的1. 学会利用高斯赛德尔方法解线性方程组2. 明白迭代法的原理3. 对于大型稀疏矩阵方程组适用于迭代法比较简单三实验内容利用 Gauss-Seidel 迭代法求解下列方程组, 其中取 。361264081xx 0)(x四、算法描述由 Jacobi 迭代法中,每一次的迭代只用到前一次的迭代值,若每一次迭代充分利用当前最新的迭代值,即在计算第 个分量 时,用最新分量 , 代i)1(kix)1(kx)1(2k)1(-kix替旧分量 , ,就得到所谓解方程组的 Gauss-Sei
2、del 迭代法。)(1kx)(2k)(1-kix其迭代格式为 Tnx)(0()0(2)1)0, (初始向量),11)()()1(ijiijkjkjii axbax )210i21n,;,或者写为 )(i011()()1()( ij ijkjkjiiikki xaxbax ,;,五、 编码#include #include #include #include #define MAX_n 100#define PRECISION 0.0000001#define MAX_Number 1000void VectorInput(float x,int n) /输入初始向量int i;for(i=1;
3、iPRECISION) return 1;return 0;int Jacobi_(float AMAX_n,float x,int n) /具体计算float x_formerMAX_n;int i,j,k;printf(“nInput vector x0:n“);VectorInput(x,n);k=0;dofor(i=1;iPRECISION)xi/=Aii;elsereturn 1;+k;while(IsSatisfyPricision(x,x_former,n) elseprintf(“nG-S %d times!“,k);return 0;int main() /主函数int n;
4、float AMAX_nMAX_n,xMAX_n;printf(“nInput n=“);scanf(“%d“,if(n=MAX_n-1)printf(“n007n must %d!“,MAX_n);exit(0);MatrixInput(A,n,n+1);if(Jacobi_(A,x,n)printf(“nG-S Failed!“);elseprintf(“nOutput Solution:“);VectorOutput(x,n);printf(“nn007Press any key to quit!n“);getch();通过实验使我更加熟练的掌握和使用高斯赛贝尔迭代法来解线性方程组,而且这个方法可以用来解大型的稀疏矩阵,是的解线性方程组更加的便捷。但是,这个实验很繁琐,必须要仔细的对待。