解线性方程组的完整代码

xiaoxiao2021-02-28  92

// 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() 000; } 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("O",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维线性方程组

转载请注明原文地址: https://www.6miu.com/read-74490.html

最新回复(0)