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

数值分析与实验(2)

2013-09-26 01:03
导读:1.2 题目 雅可比法解方程组 方程组为: 1.2.1 雅可比迭代法算法 设方程组Ax=b的系数矩阵的对角线元素 (i=1,2,…,n),M为迭代次数容许的最大值 为容许误差

  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 <stdio.h>

#include <math.h>

#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<n;i++) x[i]=0;

  while(1)

{

  epsilon=0;

  k++;

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

  {

  s=0;

  for(j=0;j<n;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<n;i++)x[i]=y[i];

if(epsilon<eps)

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

  

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