求解Ax = b,A = c ++中的下三角矩阵

时间:2014-03-06 22:18:37

标签: c++ algorithm math linear-algebra equation-solving

我试图做这个函数来解决线性系统,A * x = b,其中A =下三角矩阵,线性独立矩阵,只有一个解。 但结果总是显示0 0 0 0 ... 我打印了总和s,它总是显示0 ...

 #include  <iostream>
 using namespace std;

void solve(int n, float a[][MAX], float b[], float x[]){
 int i,j;
 float s;

 for(i = 0; i < n; i++){
        s = 0;
        for(j = 0; j < n; j++){

            s = s + a[i][j]*x[j];
            cout<<s<<endl;
        }
    x[i] = (b[i] - s)/a[i][i];
 }
}

2 个答案:

答案 0 :(得分:1)

这一行:

    for(j = 0; j < n; j++){

应该是:

    for(j = 0; j < i; j++){

然后它工作正常 - 假设你的枢轴总是非零。

答案 1 :(得分:1)

void solve(int n, float a[][MAX], float b[], float x[]){
  int i,j;
  float s;

  for(i = 0; i < n; i++) {
        s = 0;
        for(j = 0; j < i; j++) {
                       ^
            s = s + a[ i][ j] * x[ j];
        }
        x[ i] = ( b[ i] - s) / a[ i][ i];
   }
}

BackSubstitution.pdf

compiled example