Вот идея, но я ее не проверял.Если ваша симметричная матрица положительно определена, выполните разложение Холецкого симметричной матрицы A, чтобы получить A = U * U '.Если вы храните U как разреженную матрицу, используя встроенную разреженную матрицу MATLAB, у вас есть все, что вам нужно, и вы использовали примерно половину памяти.Поскольку он использует тип разреженной матрицы MATLAB, вы работаете с ним, используя стандартные функции MATLAB, если вы помните, что A = U * U '
Например, для вычисления A * x = b используйте x =U '\ U \ б.В отличие от других предложенных решений, MATLAB никогда не будет использовать внутреннюю полную матрицу, и даже будет использовать ускоренные решатели, которые воспользуются тем, что вы решаете только с треугольными.Стоимость состоит в том, что для решения одной системы вы фактически запускаете оператор обратной косой черты (см. Выше).Однако это цена, которую вы платите за то, что никогда не создаете полную матрицу.