概述
//高斯消元法求解方程组
#include#include
using namespacestd;#define MaxNum 10
int array[MaxNum][MaxNum] ={
{3,5,-4,0},
{7,2,6,-4},
{4,-1,5,-5}};//输入的增广矩阵
intunuse_result[MaxNum];int GaussFun(int equ,int var,intresult[])
{inti,j,k,col,num1,num2;intmax_r,ta,tb,gcdtemp,lcmtemp;inttemp,unuse_x_num,unuse_index;
col=0;for(k=0;k
{
max_r=k;for(i=k+1;i
{if(abs(array[i][col])>abs(array[max_r][col]))
{
max_r=i;//保存绝对值最大的行
}
}if(max_r!=k)
{for(j=k;j
{
temp=array[k][j];
array[k][j]=array[max_r][j];
array[max_r][j]=temp;
}
}if(array[k][col]==0)
{
k--;continue;
}for(i=k+1;i
{if(array[i][col]!=0)
{
num1=abs(array[i][col]);
num2=abs(array[k][col]);while(num2!=0)
{
temp=num2;
num2=num1%num2;
num1=temp;
}
gcdtemp=num1;//最大公约数
lcmtemp=(abs(array[i][col])*abs(array[k][col]))/gcdtemp;
ta= lcmtemp/abs(array[i][col]);
tb= lcmtemp/abs(array[k][col]);if(array[i][col]*array[k][col]<0)
{
tb= -tb;
}for(j=col;j
{
array[i][j]=array[i][j]*ta-array[k][j]*tb;
}
}
}
}for(i=k;i
{if(array[i][col]!=0)
{return -1;
}
}if(k
{for(i=k-1;i>=0;i--)
{
unuse_x_num=0;for(j=0;j
{if(array[i][j]!=0&&unuse_result[j])
{
unuse_x_num++;
unuse_index=j;
}
}if(unuse_x_num>1)
{continue;
}
temp=array[i][var];for(j=0;j
{if(array[i][j]!=0&&j!=unuse_index)
{
temp-=array[i][j]*result[j];
}
}
result[unuse_index]=temp/array[i][unuse_index];
unuse_result[unuse_index]=0;
}return var-k;
}for(i=var-1;i>=0;i--)
{
temp=array[i][var];for(j=i+1;j
{if(array[i][j]!=0)
{
temp-=array[i][j]*result[j];
}
}if(temp%array[i][i]!=0)
{return -2;
}
result[i]=temp/array[i][i];
}return 0;
}intmian()
{inti,type;intequnum,varnum;intresult[MaxNum];
equnum=3;
varnum= 3;
type=GaussFun(equnum,varnum,result);//调用高斯函数
if(type ==-1)
{
cout<
}else if(type==-2)
{
cout<
}else if(type>0)
{
cout<
{if(unuse_result[i])
{
cout<
}else{
cout<
}
}
}else{
cout<
{
cout<
}
}return 0;
}
最后
以上就是柔弱季节为你收集整理的高斯消元法解矩阵方程c语言,c++高斯消元法求解线性方程组的全部内容,希望文章能够帮你解决高斯消元法解矩阵方程c语言,c++高斯消元法求解线性方程组所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复