?? guass.cpp
字號:
#include<iostream.h>
#include<math.h>
#define NUMBER 4
float A[NUMBER][NUMBER+1] ,ark;
int flag,n;
/*1*/void exchange(int &r,int &k) /*交換行的矩函數*/
{
int i;
for(i=1;i<=n+1;i++)
A[0][i]=A[r][i];
for(i=1;i<=n+1;i++)
A[r][i]=A[k][i];
for(i=1;i<=n+1;i++)
A[k][i]=A[0][i];
}
/*2*/float max(int k) /*比校系數大小的函數*/
{
int i;
float temp=0;
for(i=k;i<=n;i++)
if(fabs(A[i][k])>temp)
{
temp=(float)fabs(A[i][k]);
flag=i;
}
return temp;
}
void main()
{
cout.setf(ios::fixed);
cout.precision(5);
float x[NUMBER]; /*此數組用于存放方程解*/
int k,i,j;
cout<<"********************用Gauss列主元消元法解線性方程組***************************";
cout<<"\n輸入方程組的維數:n=";
cin>>n;
for(i=0;i<n;i++)
{
cout<<"請輸入第"<<i+1<<"行的數據:\n";
/*實現將每一行中的系數和向量一次性輸入,數之間用空格格開,輸完后回車確定*/
for(j=0;j<n+1;j++) /*將剛才輸入的數存入數組*/
cin>>A[i][j];
for(k=0;k<=n-1;k++)
{
ark=max(k);
if(ark==0) /*判斷方程是否為線性方程,即是否合法*/
{
cout<<"\n此方程組不合法!";
}
else if(flag!=k)
exchange(flag,k);
for(i=k+1;i<=n;i++)
for(j=k+1;j<=n+1;j++)
A[i][j]=A[i][j]-A[k][j]*A[i][k]/A[k][k];
}
x[n]=A[n][n+1]/A[n][n];
for( k=n-1;k>=0;k--)
{
float me=0;
for(j=k+1;j<=n;j++)
{
me=me+A[k][j]*x[j];
}
x[k]=(A[k][n+1]-me)/A[k][k];
}
for(i=0;i<=n;i++)
{
cout<<'x'<<i<<"=x["<<i<<']='<<x[i]<<'\t';
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -