?? gsandly.cpp
字號:
#include<iostream>
using namespace std;
void main(){
double a[100][100];
int xline=0;
int xnumber=0;
int xn;
int n=2;
cout<<"1.高斯消去法\n2.列主元消元法\n";
cin>>n;
cout<<"輸入增廣矩陣的行數:";
cin>>xline;
cout<<"輸入增廣矩陣的列數:";
cin>>xn;
xnumber=xn-1;
cout<<"輸入增廣矩陣:";
cout<<"(例:求方程組:5x^2+4x=4和4X^2+2=1的解,輸入:";
cout<<"5 4 4 4 2 1) \n";
for(int ii=0;ii<xline;ii++){
for(int jj=0;jj<=xnumber;jj++){
cin>>a[ii][jj];
}
}
int temp;
double maxtemp;
for(int i1=0;i1<xnumber-1;i1++){
if(n==2){
temp=i1;
maxtemp=a[i1][i1];
for(int k=i1+1;k<xline;k++){
if(a[k][i1]*a[k][i1]>maxtemp*maxtemp){
maxtemp=a[k][i1];
temp=k;
}
}
if(temp!=i1){
for(int k1=0;k1<xnumber+1;k1++){
maxtemp=a[i1][k1];
a[i1][k1]=a[temp][k1];
a[temp][k1]=maxtemp;
}
}
}
cout<<"begin----------"<<endl;
for(int i=0;i<xline;i++){
for(int j=0;j<=xnumber;j++)
cout<<a[i][j]<<"\t";
cout<<endl;
}
cout<<"---------------"<<endl;
for(int i2=i1+1;i2<xline;i2++){
/*
for(int i=0;i<xline;i++){
for(int j=0;j<=xnumber;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
*/
if(a[i1][i1]!=0&&a[i2][i1]!=0){
double d=a[i2][i1];
//cout<<"d:"<<d<<endl;
for(int i3=i1;i3<=xnumber;i3++){
a[i2][i3]=a[i2][i3]-d*a[i1][i3]/a[i1][i1];}
/*
for(int i4=0;i4<xline;i4++){
for(int j4=0;j4<=xnumber;j4++)
cout<<a[i4][j4]<<" ";
cout<<endl;
}
*/
}
}
cout<<"----------"<<endl;
for(int ii=0;ii<xline;ii++){
for(int jj=0;jj<=xnumber;jj++)
cout<<a[ii][jj]<<"\t";
cout<<endl;
}
cout<<"----------"<<endl;
}
double x[100];
for(int j6=xline-1;j6>=0;j6--){
for(int j5=j6+1;j5<xnumber;j5++){
a[j6][xnumber]=a[j6][xnumber]-a[j6][j5]*x[j5];
}
x[j6]=a[j6][xnumber]/a[j6][j6];
}
for(int j7=0;j7<xline;j7++)
cout<<"x["<<j7+1<<"]:"<<x[j7 ]<<endl;
double pp=a[0][0];
for(int p=1;p<xline;p++){
pp=pp*a[p][p];
}
cout<<"\n行列式:"<<pp<<endl;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -