📄 高斯回代算法源代码.txt
字号:
#include<iostream>
using namespace std;
#define N 3
int main()
{
double a[N][N] =
{
///*{1,-1,-1},
//{2,-1,-3},
//{3,2,-5} // 测试数据矩阵A
{ 3.01, 6.03, 1.99 },
{ 1.27, 4.16, -1.23 },
{ 0.987,-4.81, 9.34 } // 实验要要求的矩阵数据
};
double b[N] =
{
//2,
// 1,
//0 // 测试数据矩阵Y
1,
1,
1
};
double x[N] ={0}; // 未知数解, 初始化为0
double mik = 0;
// 下面是高斯算法 ( 后面的解释严格按照算法的层次关系进行缩进)
for ( int k=0; k<N; k++) // 对于K = 0, 1,2,... N-1
{
if ( a[k][k] == 0 ) break ; // 若akk = 0 ,则停止计算
for( int i=k+1; i<N; i++ ) //对于 i=k+1,...N-1
{
mik = a[i][k]/a[k][k] ; // mik=aik/akk
a[i][k] = mik ; //特别标记1 // aik=mik
for( int j=k+1; j<N; j++) // 对于 j=k+1, .... N-1
a[i][j] = a[i][j] - mik * a[k][j] ; // aij -= mik*akj
b[i] = b[i] - mik * b[k] ; // bi -= mik*bk
}
}
// 以下是回代算法 (同上)
for ( int i=N-1; i>=0; i-- ) //对于 i=N-1,.....0
{
x[i] = b[i] ; // xi=bi
for ( int j=i+1; j<N; j++ ) // 对于 j=i+1,...N-1
x[i] = x[i] - a[i][j]*x[j] ; // xi -= aij*xj
x[i] = x[i]/a[i][i] ; // xi = xi / aii
}
// 以下是输出结果
for ( i=0; i<N; i++ ) // 测试数据的结果: 5, 0, 3
cout << " " << x[i] << endl; // 实验要求的数据的结果: 1592.6, -163.911 -493.618
cout << " Done! " << endl;
return 0 ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -