资源描述:
《c 解线性方程组几种方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、~//解线性方程组#include#include#include//----------------------------------------------全局变量定义区constintNumber=15;//方程最大个数doublea[Number][Number],b[Number],copy_a[Number][Number],copy_b[Number];//系数行列式intA_y[Number];//a[][]中随着横坐标增加列坐标的排列顺序,如a[0][0],a[1][2],a[2]
2、[1]...则A_y[]={0,2,1...};intlenth,copy_lenth;//方程的个数doublea_sum;//计算行列式的值char*x;//未知量a,b,c的载体//----------------------------------------------函数声明区voidinput();//输入方程组voidprint_menu();//打印主菜单intchoose();//输入选择voidcramer();//Cramer算法解方程组voidgauss_row();//Gauss列主元解方程组voidguass_all();//Gauss
3、全主元解方程组voidDoolittle();//用Doolittle算法解方程组intDoolittle_check(doublea[][Number],doubleb[Number]);//判断是否行列式>0,若是,调整为顺序主子式全>0voidxiaoqu_u_l();//将行列式Doolittle分解voidcalculate_u_l();//计算Doolittle结果double&calculate_A(intn,intm);//计算行列式doublequanpailie_A();//根据列坐标的排列计算的值,如A_y[]={0,2,1},得sum=a[0
4、][A_y[0]]*a[1][A_y[1]]*a[2][A_y[2]]=a[0][0]*a[1][2]*a[2][1];voidexchange(intm,inti);//交换A_y[m],A_y[i]voidexchange_lie(intj);//交换a[][j]与b[];voidexchange_hang(intm,intn);//分别交换a[][]和b[]中的m与n两行voidgauss_row_xiaoqu();//Gauss列主元消去法voidgauss_all_xiaoqu();//Gauss全主元消去法voidgauss_calculate();//
5、根据Gauss消去法结果计算未知量的值voidexchange_a_lie(intm,intn);//交换a[][]中的m和n列voidexchange_x(intm,intn);//交换x[]中的x[m]和x[n]voidrecovery();//恢复数据~~~~//主函数voidmain(){intflag=1;input();//输入方程while(flag){print_menu();//打印主菜单flag=choose();//选择解答方式}}//函数定义区voidprint_menu(){system("cls");cout<<"------------
6、方程系数和常数矩阵表示如下:";for(intj=0;j7、去法";cout<<"3.Gauss全主元消去法";cout<<"4.Doolittle分解法";cout<<"5.退出";cout<<"输入你的选择:";}voidinput(){inti,j;cout<<"方程的个数:";cin>>lenth;~~~~if(lenth>Number){cout<<"Itistoobig.";return;}x=newchar[lenth];for(i=0;i