计算机应用 | 古代文学 | 市场营销 | 生命科学 | 交通物流 | 财务管理 | 历史学 | 毕业 | 哲学 | 政治 | 财税 | 经济 | 金融 | 审计 | 法学 | 护理学 | 国际经济与贸易
计算机软件 | 新闻传播 | 电子商务 | 土木工程 | 临床医学 | 旅游管理 | 建筑学 | 文学 | 化学 | 数学 | 物理 | 地理 | 理工 | 生命 | 文化 | 企业管理 | 电子信息工程
计算机网络 | 语言文学 | 信息安全 | 工程力学 | 工商管理 | 经济管理 | 计算机 | 机电 | 材料 | 医学 | 药学 | 会计 | 硕士 | 法律 | MBA
现当代文学 | 英美文学 | 通讯工程 | 网络工程 | 行政管理 | 公共管理 | 自动化 | 艺术 | 音乐 | 舞蹈 | 美术 | 本科 | 教育 | 英语 |

数值分析与实验(3)

2013-09-26 01:03
导读:1.2.4 结果分析 迭代次数增加时,精度越高。从输出结果可以看出此方程组的迭代次数为17,迭代结果越来越接近精确解了,于是 =-1.467391, =-2.358696, =0.6576

  1.2.4  结果分析

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

   =-1.467391, =-2.358696, =0.657609, =2.842391

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

  方程组为:

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

  设方程组Ax=b的系数矩阵的对角线元素 (i=1,2,…,n),M为迭代次数容许的最大值 为容许误差。

  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  输出结果

  

上一篇:基于X3D的虚拟植物建模与可视化研究 下一篇:没有了