用列主元Gauss消元法解线性方程组{-x2-x3+x4=0,x1-x2+x3-3x4=1,2x1-2x2-4x3+6x
来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 20:23:40
用列主元Gauss消元法解线性方程组{-x2-x3+x4=0,x1-x2+x3-3x4=1,2x1-2x2-4x3+6x4=-1,x1-2x2-4x3+x4=-1
第二个方程减去第四个方程得
x2+3x3-4x4=2
然后再加上第一个方程得
2x3-3x4=2 (1)(消去了x1)
第三个方程减去2倍第四个方程得
2x2+4x3-4x4=1
然后加上2倍第一个方程得
2x3-2x4=1 (2)……(消去了x2)
(2)-(1)
得x4=-1 (消去了x3)
然后反过来将x4带入(2)求出x3,依次再求出x2,x1.
然后层层代回去
编程的话,代码太多,给你剪切复制一个仅作参考
--------
//红色部分为后来修改内容,程序的错误在所难免,你们的反馈是程序完善的动力!
//解线性方程组
//By JJ,2008
#include
#include
#include
#include
//----------------------------------------------全局变量定义区
const int Number=15; //方程最大个数
double a[Number][Number],b[Number],copy_a[Number][Number],copy_b[Number]; //系数行列式
int A_y[Number]; //a[][]中随着横坐标增加列坐标的排列顺序,如a[0][0],a[1][2],a[2][1]...则A_y[]={0,2,1...};
int lenth,copy_lenth; //方程的个数
double a_sum; //计算行列式的值
char * x; //未知量a,b,c的载体
//----------------------------------------------函数声明区
void input(); //输入方程组
void print_menu(); //打印主菜单
int choose (); //输入选择
void cramer(); //Cramer算法解方程组
void gauss_row(); //Gauss列主元解方程组
void guass_all(); //Gauss全主元解方程组
void Doolittle(); //用Doolittle算法解方程组
int Doolittle_check(double a[][Number],double b[Number]); //判断是否行列式>0,若是,调整为顺序主子式全>0
void xiaoqu_u_l(); //将行列式Doolittle分解
void calculate_u_l(); //计算Doolittle结果
double & calculate_A(int n,int m); //计算行列式
double quanpailie_A(); //根据列坐标的排列计算的值,如A_y[]={0,2,1},得sum=a[0][ A_y[0] ] * a[1][ A_y[1] ] * a[2][ A_y[2] ]=a[0][0]*a[1][2]*a[2][1];
void exchange(int m,int i); //交换A_y[m],A_y[i]
void exchange_lie(int j); //交换a[][j]与b[];
void exchange_hang(int m,int n); //分别交换a[][]和b[]中的m与n两行
void gauss_row_xiaoqu(); //Gauss列主元消去法
void gauss_all_xiaoqu(); //Gauss全主元消去法
void gauss_calculate(); //根据Gauss消去法结果计算未知量的值
void exchange_a_lie(int m,int n); //交换a[][]中的m和n列
void exchange_x(int m,int n); //交换x[]中的x[m]和x[n]
void recovery(); //恢复数据
//主函数
void main()
{
int flag=1;
input(); //输入方程
while(flag)
{
print_menu(); //打印主菜单
flag=choose(); //选择解答方式
}
}
//函数定义区
void print_menu()
{
system("cls");
cout
x2+3x3-4x4=2
然后再加上第一个方程得
2x3-3x4=2 (1)(消去了x1)
第三个方程减去2倍第四个方程得
2x2+4x3-4x4=1
然后加上2倍第一个方程得
2x3-2x4=1 (2)……(消去了x2)
(2)-(1)
得x4=-1 (消去了x3)
然后反过来将x4带入(2)求出x3,依次再求出x2,x1.
然后层层代回去
编程的话,代码太多,给你剪切复制一个仅作参考
--------
//红色部分为后来修改内容,程序的错误在所难免,你们的反馈是程序完善的动力!
//解线性方程组
//By JJ,2008
#include
#include
#include
#include
//----------------------------------------------全局变量定义区
const int Number=15; //方程最大个数
double a[Number][Number],b[Number],copy_a[Number][Number],copy_b[Number]; //系数行列式
int A_y[Number]; //a[][]中随着横坐标增加列坐标的排列顺序,如a[0][0],a[1][2],a[2][1]...则A_y[]={0,2,1...};
int lenth,copy_lenth; //方程的个数
double a_sum; //计算行列式的值
char * x; //未知量a,b,c的载体
//----------------------------------------------函数声明区
void input(); //输入方程组
void print_menu(); //打印主菜单
int choose (); //输入选择
void cramer(); //Cramer算法解方程组
void gauss_row(); //Gauss列主元解方程组
void guass_all(); //Gauss全主元解方程组
void Doolittle(); //用Doolittle算法解方程组
int Doolittle_check(double a[][Number],double b[Number]); //判断是否行列式>0,若是,调整为顺序主子式全>0
void xiaoqu_u_l(); //将行列式Doolittle分解
void calculate_u_l(); //计算Doolittle结果
double & calculate_A(int n,int m); //计算行列式
double quanpailie_A(); //根据列坐标的排列计算的值,如A_y[]={0,2,1},得sum=a[0][ A_y[0] ] * a[1][ A_y[1] ] * a[2][ A_y[2] ]=a[0][0]*a[1][2]*a[2][1];
void exchange(int m,int i); //交换A_y[m],A_y[i]
void exchange_lie(int j); //交换a[][j]与b[];
void exchange_hang(int m,int n); //分别交换a[][]和b[]中的m与n两行
void gauss_row_xiaoqu(); //Gauss列主元消去法
void gauss_all_xiaoqu(); //Gauss全主元消去法
void gauss_calculate(); //根据Gauss消去法结果计算未知量的值
void exchange_a_lie(int m,int n); //交换a[][]中的m和n列
void exchange_x(int m,int n); //交换x[]中的x[m]和x[n]
void recovery(); //恢复数据
//主函数
void main()
{
int flag=1;
input(); //输入方程
while(flag)
{
print_menu(); //打印主菜单
flag=choose(); //选择解答方式
}
}
//函数定义区
void print_menu()
{
system("cls");
cout
用列主元Gauss消元法解线性方程组{-x2-x3+x4=0,x1-x2+x3-3x4=1,2x1-2x2-4x3+6x
求线性方程组 x2-x3-x4=0 x1+x2-x3+3x4=1 x1-x2+x3+5x4=-1 x1+2x2-2x3+
解线性方程组 求齐次线性方程组X1+X2+X3+X4=0,2X1+3X2+4X3+5X4=0,4X1+5X2+6X3+7
解线性方程组 求齐次线性方程组X1+X2+X3+X4=0,2X1+3X2-X3-2X4=0,5X1+6X2+2X3+X4
设齐次线性方程组:x1+x2+x3+x4=0,x2-x3+2x4=0,2x1+3x2+(a+2)x3+4x4=0,3x1
求齐次线性方程组{X1+X2+3X3+2X4=0 2X1+3X2+X3-X4=0 5X1+6X2+10X3+5X4=0}
求齐次线性方程组x1+2x2+x3+x4+x5=1 2x1+4x2+3x3+x4+x5=2 -x1-2x2+x3+3x4
求非齐次线性方程组:2x1-x2+4x3-3x4=-4;x1+x3-x4=-3;3x1+x2+x3=1;7x1+7x3-
求线性方程组{X1+X2+2X3-3X4=0; X1+2X2-X3+2X4=0; 2X1+3X2+X3-X4=0}的基础
求线性方程组一般解,2X1+X2-2X3+3X4=03X1+2X2-X3+2X4=0X1+X2+X3-X4=0
求非齐次线性方程组的通解:2x1+x2-x3-x4=1;2x1+x2+x3-x4=1;4x1+2x2+x3-2x4=2
.解线性方程组|X1+X2+X3+X4=5 |X1+2X2-X3+4X4=-2 |2X1-3X2-X3-5X4=-2 |