У меня есть следующий код для алгоритма обратной подстановки:C++ - Назад Замена через Boost - Bad Index Error
#include <boost\numeric\ublas\matrix.hpp>
typedef boost::numeric::ublas::matrix<double> dM;
dM bSub(dM A, dM b)
{
unsigned int n = (int)b.size1();
assert(b.size2() == 1);
assert(n == A.size1());
dM x(n, 1);
for (unsigned i = (n - 1); i >= 0; --i)
{
double sum = 0.0;
for (unsigned j = (n - 1); j > i; --j)
{
sum += A(i, j)*x(j, 0);
}
x(i, 0) = (b(i, 0) - sum)/A(i, i);
}
return x;
}
Плохая ошибка индекса выскакивает при попытке запустить его. Я не совсем уверен, где ошибка, так как я не могу найти проблему, когда я вручную перехожу через алго.
Я также попытался увеличивать вложенный цикл: for(unsigned j = 0; j < n; ++j)
. Опять же, я столкнулся с такой же плохой ошибкой индекса.
Основываясь на отладчике, я думаю, что проблема связана с i
как-то взяв на себя значение 4294967295, я не знаю, откуда это число, поскольку оно действительно не подходит в других частях моего кода.
Наконец, я также написал алгоритм перестановки подстановки, используя очень похожую структуру, которая работает без проблем.
У кого-нибудь есть идея, что происходит?
А я вижу, спасибо! –