数值分析与实验(3)
作者:佚名; 更新时间:2014-12-05

  1.2.4  结果分析

  迭代次数增加时,精度越高。从输出结果可以看出此方程组的迭代次数为17,迭代结果越来越接近精确解了,于是

   =2.842391

  1.3  题目  高斯-赛德尔迭代法解方程组

  方程组为:

  1.3.1 高斯-赛德尔迭代法算法

  设方程组Ax=b的系数矩阵的对角线元素 为容许误差。

  1 取初始向量 令k=0.

  2 对i=1,2,…,n计算

  3 如果 结束;否则执行4

  4 如果 ,转2

  1.3.2  程 序

#include <stdio.h>

#include <math.h>

#define N 600

void main()

{

 int i;

 float x[4];

 float c[4][5]={10,-1,2,0,-11,0,8,-1,3,-11,2,-1,10,0,6,-1,3,-1,11,25};

 void GaussSeidel(float *,int,float[]);

 GaussSeidel(c[0],4,x);

 for(i=0;i<=3;i++)printf("x[%d]=%f\n",i,x[i]);

}

void GaussSeidel(float *a,int n,float x[])

{

  int i,j,k=1;

  float d,dx,eps;

  for(i=0;i<n-1;i++)x[i]=0.0;

  while(1)

{eps=0;

  for(i=0;i<n-1;i++)

 {

  d=0;

  for(j=0;j<n-1;j++)

  {

   if(j==i)continue;

   d+=*(a+i*(n+1)+j)*x[j];

}

  dx=(*(a+i*(n+1)+n)-d)/(*(a+i*(n+1)+i));

 eps+=fabs(dx-x[i]);

 x[i]=dx;

}

if(eps<1e-6)

{printf("迭代次数是:%d\n",k);return;}

if(k>N)

{

printf("迭代发散n\n");

return;

}

  k++;}}

  1.3.3  输出结果

  

数值分析与实验

核心期刊快速发表
Copyright@2000-2030 论文期刊网 Corporation All Rights Reserved.
《中华人民共和国信息产业部》备案号:ICP备07016076号;《公安部》备案号:33010402003207
本网站专业、正规提供职称论文发表和写作指导服务,并收录了海量免费论文和数百个经国家新闻出版总署审批过的具有国内统一CN刊号与国际标准ISSN刊号的合作期刊,供诸位正确选择和阅读参考,免费论文版权归原作者所有,谨防侵权。联系邮箱:256081@163.com