алгоритм — Решить Ax = b, A = нижняя треугольная матрица в переполнении стека

Я пытаюсь сделать эту функцию, которая решает линейные системы, 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];
}
}

3

Решение

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

скомпилированный пример

1

Другие решения

Эта строка:

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

Должно быть:

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

Тогда это работает нормально — при условии, что ваши опорные точки всегда отличны от нуля.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector