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

C++ 求解Ax=b,A=c+中的下三角矩阵+;,c++,algorithm,math,linear-algebra,equation-solving,C++,Algorithm,Math,Linear Algebra,Equation Solving,我试着用这个函数来解线性系统,A*x=b,其中A=下三角矩阵,线性独立矩阵,并且只有一个解。 但结果总是显示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;

我试着用这个函数来解线性系统,A*x=b,其中A=下三角矩阵,线性独立矩阵,并且只有一个解。 但结果总是显示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];
 }
}
#包括
使用名称空间std;
无效解算(整数n,浮点a[][MAX],浮点b[],浮点x[]){
int i,j;
浮子;
对于(i=0;i
    for(j = 0; j < n; j++){
(j=0;j{
应该是:

    for(j = 0; j < i; j++){
(j=0;j{ 然后它就可以正常工作了——假设你的轴总是非零。

void solve(int n,float a[][MAX],float b[],float x[]){
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];
   }
}
int i,j; 浮子; 对于(i=0;i


你不能使用LAPACK吗?不,它必须是C++,有“简单的库和包”…这是一个著名的算法。它叫回代。试一下谷歌。我很确定你会一步一步找到它:)如果你仍然被卡住,大声呼救。@LVL我们可以使用上三角矩阵吗?现在我明白了…它起作用了!@lizusek Err…不?例如,当I=1时,s应该是[1][0]*x[0]而在你的代码中只是0。你必须对对角线左边的所有A[i][j]*x[j]求和,因此基本上对于i