?? 列主元高斯消去法算法.cpp
字號:
//列主元高斯消去法算法
#include<iostream.h>
#include<math.h>
#include<stdlib.h>
void main()
{
double A[3][3]={ {12 , -3, 3},
{-18, 3, -1},
{ 1 , 1, 1} };
double b[3]={ 15,-15,6 };
double x[3];
double e,T,s;
int i,j,k,m,n;
cout<<"*****列主元高斯消去法算法*****"<<endl;
cout<<"解方程組:"<<endl;
cout<<"( 12 -3 3 ) (x1) ( 15 )"<<endl;
cout<<"|-18 3 -1 | |x2| = |-15 |"<<endl;
cout<<"( 1 1 1 ) (x3) ( 6 )"<<endl;
cout<<"請輸入容許誤差e:"<<endl;
cin>>e;
for(k=0;k<2;k++)
{ T=fabs(A[0][k]);
n=k;
for(m=1;m<3;m++)
{ if(T<fabs(A[m][k]))
{ T=fabs(A[m][k]);
n=m;
}
}
if(T<e)
{ cout<<"求解失敗!"<<endl;
exit(0);
}
else
{ if(n!=k)
{ for(i=0;i<3;i++)
{ T=A[k][i];
A[k][i]=A[n][i];
A[n][i]=T;
}
T=b[k]; b[k]=b[n]; b[n]=T;
}
for(i=k+1;i<3;i++)
{ T=A[i][k]/A[k][k];
b[i]=b[i]-b[k]*T;
for(j=k+1;j<3;j++)
{
A[i][j]=A[i][j]-T*A[k][j];
}
}
}
}
if(fabs(A[2][2])<=e)
{ cout<<"求解失敗!"<<endl;
exit(0);
}
else{ x[2]=b[2]/A[2][2];
for(i=1;i>=0;i--)
{ s=0;
for(j=i+1;j<3;j++)
{
s+=A[i][j]*x[j];
}
x[i]=(b[i]-s)/A[i][i];
}
}
cout<<"該方程組的解為: "<<endl;
for(i=0;i<3;i++)
{
cout<<"x"<<i+1<<" = "<<x[i]<<" ";
}
cout<<endl;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -