注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

倚楼听风雨

没有理想的人,永远也不能翱翔与蓝天白云之上~

 
 
 

日志

 
 

用C++实现的雅可比迭代法  

2007-11-22 00:37:35|  分类: 算法 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

#include <iostream.h>
#include "math.h"
#define  row 3
void read_a(float a[][row])
{
 
 int i,j;
 cout<<"请输入系数矩阵a["<<row<<"]["<<row<<"]:"<<endl;
 for(i=0;i<row;i++)
 {
  for(j=0;j<row;j++)
   cin>>a[i][j];
  cout<<endl;
 }
}
void read_b(float b[])
{
 
 int i;
 cout<<"请输入方程组的结果矩阵b["<<row<<"]\n";
 for(i=0;i<row;i++)
  cin>>b[i];
}
void read_x0(float x0[])
{
 int i;
 cout<<"请输入初始迭代值x0["<<row<<"]"<<endl;
 for(i=0;i<row;i++)
  cin>>x0[i];
}
float max_e(float x0[],float x1[])
{
 float e=fabs(x0[0]-x1[0]);
 float t;
 int i;
 for(i=1;i<row;i++)
 {
  t=fabs(x1[i]-x0[i]);
  if(t>e)
   e=t;
 }
  return e;
}
void print_x1(float x[],int k)
{
 int i;
 cout<<"times "<<k<<" root:";
 for(i=0;i<row;i++)
  cout<<"  "<<x[i];
 cout<<endl;
}
void main()
{
 //void read_a(),read_b(),read_x0(),print_x1();
 //float max_e();
 float a[row][row],b[row],x0[row],x1[row];
 float e,e1,d;
 int n,k=1,i,j;
 cout<<"请输入最小精度:";
 cin>>e;
 cout<<"请输入最大迭代次数:";
 cin>>n;
 read_a(a);
 read_b(b);
 read_x0(x0);
 cout<<"-------------------------------------------------------------------"<<endl;
 do
 {
  for(i=0;i<row;i++)
  {
   float t=0;
   for(j=0;j<row;j++)
    if(j!=i)
     t+=a[i][j]*x0[j];
    x1[i]=(b[i]-t)/a[i][i];
  }
 print_x1(x1,k);
 e1=max_e(x1,x0);
  for(i=0;i<row;i++)
   x0[i]=x1[i];
  k++;
 }while(e1>e&&k<n);
 if(k>=n)
  cout<<"迭代失败!"<<endl;
}

 

  评论这张
 
阅读(711)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017