论文网首页|会计论文|管理论文|计算机论文|医药学|经济学论文|法学论文|社会学论文|文学论文|教育论文|理学论文|工学论文|艺术论文|哲学论文|文化论文|外语论文|论文格式
中国论文网

用户注册

设为首页

您现在的位置: 中国论文网 >> 计算机论文 >> 计算机应用论文 >> 正文 会员中心
 计算机应用论文   计算机理论论文   计算机网络论文   电子商务论文   软件工程论文   操作系统论文   通信技术论文
数值分析与实验

  论文关键词: 列主元高斯消去法  雅可比法  高斯-赛德尔迭代法  幂法

  论文摘要:本文通过实例对线性方程组数值解法和矩阵的特征值及特向量的计算进行了探讨。在对线性方程组数值解法的讨论下用到了列主元高斯消去法、雅可比法和高斯-赛德尔迭代法。正是高斯消去法在消元时存在一些必须的条件,才启发我们通过列主元高斯消去法来对线性方程组数值解法作进一步的研究,达到了很好的的效果。同时用雅可比法和高斯-赛德尔迭代法对相类似的问题的探讨来比较它们的优劣,使我们在分析问题时能更好的把握方法。在求矩阵按模最大的特征值及对应特征向量时,本文用到了幂法,可以使现实中很多复杂的计算简单。

  第一章:线性方程组数值解法

  实验目的

  熟悉求解线性方程组的有关理论和方法 ;会编制列主元消去法,雅可比及高斯-赛德尔迭代法的程序 ;通过实际计算,进一步了解各种方法的优缺点,选择合适的数值方法。

  实验内容

  列主元高斯消去法求解线形方程组;

  雅可比法和高斯-赛德尔迭代法解方程组;

  1.1  题目:列主元高斯消去法求解线形方程组

  方程组为:

  1.1.1  列主元高斯消去法算法

  将方程用增广矩阵 表示

  1)            消元过程

  对k=1,2,….,n-1

  1 选主元,找 使得

  2 如果 则矩阵a奇异,程序结束;否则执行3

  3 如果 则交换第k行与第 行对应元素位置, j=k,…,n+1

  4 消元,对i=k+1,…,n计算 对j=k+1,…,n+1计算

  2)  回代过程

  1 若 则矩阵a奇异,程序结束;否则执行2

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

#include

#include

void colpivot(float *c,int n,float x[])

 { int i,j,t,k;

  float p;

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

{k=i;

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

if(fabs(*(c+j*(n+1)+i))>(fabs(*(c+k*(n+1)+i))))k=j;

  if(k!=i)

  for(j=i;j<=n;j++)

   {

    p=*(c+i*(n+1)+j);

    *(c+i*(n+1)+j)=*(c+k*(n+1)+j);

    *(c+k*(n+1)+j)=p;

   }

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

{

  p=(*(c+j*(n+1)+i))/(*(c+i*(n+1)+i));

for(t=i;t<=n;t++)*(c+j*(n+1)+t)-=p*(*(c+i*(n+1)+t));

}

}

  for(i=n-1;i>=0;i--)

  {

  for(j=n-1;j>=i+1;j--)

    (*(c+i*(n+1)+n))-=x[j]*(*(c+i*(n+1)+j));

  x[i]=*(c+i*(n+1)+n)/(*(c+i*(n+1)+i));

  }

}


void main()

{

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

 int i;

 float x[4];

 float c[4][5]={1,-1,2,-1,-8,2,-2,3,-3,-20,1,1,1,0,-2,1,-1,4,3,4,};

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

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

}

  1.1.3  输出结果

  

  1.1.4结果分析

  从输出结果可以得到 =-6.999999,=3.000000,

   =2.000000,=2.000000

  从结果和过程可以知道这种方法一般能保证舍入误差不扩散,这个方法基本上是稳定的。wWw.11665.cOm


  1.2  题目  雅可比法解方程组

  方程组为: 

  1.2.1  雅可比迭代法算法

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

  1 取初始向量 令k=0.

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

  3 如果则输出结果;否则执行4

  4 如果则不收敛,终止程序;否则,转2


  1.2.2   程 序

#include

#include

#define eps 1e-6

#define max 100

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

{

  int i,j,k=0;

  float epsilon,s;

  float *y= new float [n];

  for(i=0;i

  while(1)

{

  epsilon=0;

  k++;

  for(i=0;i

  {

  s=0;

  for(j=0;j

  {

   if(j==i)continue;

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

  }

  y[i]=(*(a+i*(n+1)+n)-s)/(*(a+i*(n+1)+i));

  epsilon+=fabs(y[i]-x[i]);

}

for(i=0;i

if(epsilon

{printf("die dai ci shu wei:%d\n",k);return;}

if(k>=max)

{printf("die dai fa san");return;}

}

delete y;

}

void main()

{s

int i;

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

 float x[4];

 jacobi(a[0],4,x);

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

}

  1.2.3  输出结果

  
  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

#include

#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

  while(1)

{eps=0;

  for(i=0;i

 {

  d=0;

  for(j=0;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  输出结果

  

  1.3.4  结果分析

  从输出结果可以看出此方程组的迭代次数为7,此时能得到精确结果是

   =-1.377632, =-1.281579, =0.747368, =-107374176

  从结果和原有知识可以知道其系数矩阵是严格对角占优的。所以此迭代解法有很好的收敛性。

  1.4  方法比较

  雅可比法和高斯-赛德尔迭代法解方程组两种方法的比较 。

  由于此题的系数矩阵是严格对角占优的,所以雅克比迭代法和高斯-赛德尔迭代法都是收敛的,这两种迭代法没迭代一步均是作一次矩阵和向量的乘法,但前者需要2组工作单元分别存放,而后者只需要1组工作单元。对于同一个线性方程组,这两种方法可能同时收敛,也可能同时发散,也可能其一收敛,而另一发散。但当两者皆收敛时,一般来说高斯-赛德尔迭代法比雅克比迭代法收敛快。实际中更多的是使用逐次超松弛迭代法。

  第二章  矩阵的特征值及特征向量的计算

  实验目的

  在数学和物理中,很多问题都需要计算矩阵的特征值及特征向量,它们是线性代数中的一个重要课题,而在实际问题中,这样的计算是很复杂的,有的要求矩阵按模最大特征值及相应的特征向量,有些则要求全部特征值及特征向量,根据不同的要求计算方法大体上可分为2种类型。本实验用的是幂法求矩阵按模最大的特征值及对应特征向量,要求领会求矩阵特征值及特征向量的幂法的方法,并要求会编制幂法的计算程序,来计算有关问题。

  实验内容

  利用幂法求矩阵按模最大的特征值及对应特征向量。

  2.1 幂法求矩阵按模最大的特征值及对应特征向量

   用幂法求矩阵按模最大的特征值及其相应的特征向量,使 , 

            

  2.1.1 幂法算法

  幂法是求矩阵主特征值的一种迭代方法。设有n个线性无关的特征向量,而相应的特征值满足,则对任意非零初始向量按下述公式构造向量序列:

  

  其中表示中最大的分量,并且有

  用幂法计算实对称矩阵的特征值时,可用rayleigh商作加速。设的rayleigh商为

 

  当时,将比更快趋于

  2.1.2   程 序

  
  2.1.3  输出结果

  

  2.1.4结果分析

  主特征值为:98.521690;相应的特征向量为

  幂法是求矩阵主特征值的一种有效方法,特别当矩阵为大型稀疏(即矩阵元素中0元素较多)时,更显得如此。但由于特征值的分布无法事先预测,因此不能控制收敛速度,往往需要利用某些加速技巧。所以计算时我们要根据需要选择计算方法来计算矩阵的特征值及特征向量。

  参考文献

  [1]  袁尉平,孙志忠等.计算实习方法.南京:东南大学出版社.2005

  [2]  李庆扬,王能超等.数值分析.北京:清华大学出版社. 2001

  [3]  谭浩强.c程序设计.北京:清华大学出版社.1999

  [4]  孙志忠.计算方法与实习学习指导.南京:东南大学出社.2005

  [5]  孙志忠.计算方法典型例题分析.北京:科学出版社.2005

  [6]  曹志浩.张玉德等.矩阵计算与方程求根.北京:人民教育出版社.1979

  • 上一个计算机论文:
  • 下一个计算机论文:
  •  作者:佚名 [标签: 数值分析 ]
    姓 名: *
    E-mail:
    评 分: 1分 2分 3分 4分 5分
    评论内容:
    发表评论请遵守中国各项有关法律法规,评论内容只代表网友个人观点,与本网站立场无关。
    房屋建筑工程施工中的防水问题分析与探讨
    从语法衔接角度分析CET—4听力预测和推理策
    沿海220 kV架空线路风偏故障分析与防治措施
    试论系统功能语法及物性分析中的语态建构
    湖南省区域文化的特色景观分析与构建
    建设单位工程项目管理存在问题分析及对策措
    对高层房屋建筑施工技术的分析与思考
    变电站高压闸刀运行中异常发热原因分析及对
    火力发电厂省煤器气力输送流速分析与计算
    白血病患者自我感受负担水平的分析与护理干
    计算机网络通信协议的分析研究
    浅谈网络通信安全分析及其安全防御措施
    | 设为首页 | 加入收藏 | 联系我们 | 网站地图 | 手机版 | 论文发表

    Copyright 2006-2013 © 毕业论文网 All rights reserved 

     [中国免费论文网]  版权所有