解线性方程组的完整代码

// Det.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#define M 10//矩阵大小
#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
float  hanglieshi(float array[M][M])
{//计算行列式
   float temp[M][2*M];
   int i,j,c,c1;
   float result=0,t=1;
   for(i=0;i<M;i++)
   {//构造临时矩阵,用来计算行列式
      for(j=0;j<2*M;j++)
      {
          temp[i][j]=array[i][j%M];
      }
   }
   for(c1=0;c1<M;c1++)
   {//计算正值
      i=0;
      j=c1;
      t=1;
      for(c=0;c<M;c++)
      {
         t*=temp[i][j];
         i++;
         j++;
      }
      result+=t;
   }
   for(c1=0;c1<M;c1++)
   {//计算负值
      i=M-1;
      j=c1;
      t=1;
      for(c=0;c<M;c++)
      {
          t*=temp[i][j];
          i--;
          j++;
      }
      result-=t;
   }
   return result;
}
void init(float array[M][M])
{//初始化矩阵,用随机值填充矩阵
   int i,j;
   float m=3.0;
   //randomize();
   for(i=0;i<M;i++)
      for(j=0;j<M;j++)
         array[i][j]=rand()%20000;
}
void output(float array[M][M])
{//输出矩阵
   int i,j;
   for(i=0;i<M;i++)
   {
      printf("\n\n");
      for(j=0;j<M;j++)
          printf("%4f",array[i][j]);
   }
}
//非齐次方程
bool jieXianXingFangCheng(float xishu[M][M+1],float fangChengjie[M])
{
	//函数所占用的空间量应该动态fenp
	float D[M][M];
	float Dn[M][M];
	//根据克莱姆法则,求得D
	for(int i=0;i<M;i++)
			for(int j=0;j<M;j++)
			{
				D[i][j]=xishu[i][j];	
			    Dn[i][j]=xishu[i][j];	
			}
			if(hanglieshi(D)==0)return false;
    float tempVect[M];
	//下面求解:
    for(int m=0;m<M;m++)
	{	//替换第m列的值
		for(i=0;i<M;i++)
		{
            tempVect[i]=Dn[i][m];
		    Dn[i][m]=xishu[i][M];
			
		}
		fangChengjie[m]=hanglieshi(Dn)/hanglieshi(D);
		for(i=0;i<M;i++)
		{
            Dn[i][m]=tempVect[i];	
		}
		cout<<fangChengjie[m]<<endl;
	}
}
void main()
{
   float xishu[M][M+1];
   float fangchengjie[M];
   for(int i=0;i<M;i++)
   {
   for(int j=0;j<M;j++)
   {
	   if(i!=j)xishu[i][j]=0;
	   else xishu[i][j]=1;
   }
   }
   for(i=0;i<M;i++)
	   xishu[i][M]=1;
   jieXianXingFangCheng(xishu,fangchengjie);
  // float array[M][M];
 //  clrscr();
  // init(array);
  // output(array);
  // printf("\n%d",hanglieshi(array));//输出矩阵行列式的值
}

 以上代码求解M维线性方程组

你可能感兴趣的:(C++,c,C#,J#)