void SolutionSlau::degreeMethod(double &lMax, double &lMax2, std::vector &xMax, std::vector &xMax2) { int size = A.size(); std::vector yCur(size, 1); std::vector xCur(size, 1); std::vector yNext(size); std::vector xNext(size); std::vector lambda(size, 0); std::vector lambdaNext(size); for (int k = 0; k < 100000; ++k) { for (int i = 0; i < size; ++i) { yNext[i] = 0; for (int j = 0; j < size; j++){ yNext[i] += A[i][j] * xCur[j]; } lambdaNext[i] = yNext[i] / xCur[i]; } double n = 0; for (int i = 0; i < size; ++i) n = std::max(n, fabs(yNext[i])); for (int i = 0; i < size; ++i) xNext[i] = yNext[i] / n; std::swap(xNext, xCur); std::swap(yNext, yCur); std::swap(lambda, lambdaNext); double t = 0; for (int i = 0; i < size; ++i) t = std::max(t, fabs(lambda[i] - lambdaNext[i])); if (t < eps) break; } xMax = xCur; lMax = 0; for (int i = 0; i < size; ++i) lMax += lambda[i]; lMax /= size; }