Cramer法则求解线性方程组_C/C++语言_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

Cramer法则求解线性方程组

作者:黑客防线网安C/C++教程基地 来源:黑客防线网安C/C++教程基地 浏览次数:0

本篇关键词:方程法则tempsize
黑客防线网安网讯:   /*当方程组是多维的时候,求解效率很低。  Cramer法则详细如下:  设线性方程组为:  a11x1 + a12x2 + ... + a1nxn = b1  a21x1 + a22x2 + ... + a2nxn = b2  ..................
   /*当方程组是多维的时候求解效率很低
  Cramer法则详细如下:
  设线性方程组为:
  a11x1 + a12x2 + ... + a1nxn = b1
  a21x1 + a22x2 + ... + a2nxn = b2
  ................
  an1x1 + an2x2 + ... + annxn = bn
  那么 x1 = D1/D x2 = D2/D,......, xn = Dn/D
  其中 D是系数行列式,Di是用常数向量替换D的第j列所得的n阶行列式
  */
  void cramer_calculate(int (*p)[3], int* B, int size)
  {
  double* X = new double[size];
  int D = 0;
  for(int j, i = 0; i < size; i++) //求取D的值
  {
  j = 0;
  int temp = 1;
  while(j < size)
  {
  if( i + j < size)
  temp *= p[i + j][j];
  else
  temp *= p[i + j - size][j];
  j++;
  }
  D += temp;
  j = 0;
  temp = 1;
  while(j < size)
  {
  if(i - j >= 0)
  temp *= p[i - j][j];
  else
  temp *= p[i - j + size][j];
  j++;
  }
  D -= temp;
  }
  int k = 0, Di;
  while(k < size) //求解Xi的值
  {
  Di = 0;
  for(int j, i = 0; i < size; i++)
  {
  j = 0;
  int temp = 1;
  
   while(j < size)
  {
  if(i + j <size)
  {
  if(j == k)
  temp *= B[i + j];
  else
  temp *= p[i + j][j];
  }
  else
  {
  if(j == k)
  temp *= B[i + j - size];
  else
  temp *= p[i + j - size][j];
  }
  j++;
  }
  Di += temp;
  j = 0;
  temp = 1;
  while(j < size)
  {
  if(i - j >= 0)
  {
  if(j == k)
  temp *= B[i - j];
  else
  temp *= p[i - j][j];
  }
  else
  {
  if(j == k)
  temp *= B[i - j + size];
  else
  temp *= p[i - j + size][j];
  }
  j++;
  }
  Di -= temp;
  }
  X[k] = Di * 1.0/D * 1.0;
  k++;
  }
  for(int i = 0; i < size; i++)
  std::cout << X[i] << ' ';
  delete[]X;
  }
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-15251-1.html
网站维护教程更新时间:2012-04-04 22:52:12  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer