Функции
solve-linear-system-rotation
(matr)
Описание: функция solve-linear-system-rotation решает систему линейных алгебраических уравнений (СЛАУ) методом вращения, состоящего из:
- сведения СЛАУ к треугольной системе;
- нахождение корней методом обратного хода метода Гаусса.
Переменые:
- matr - массив, у которого количество строк (первая размерность) должно быть на единицу меньше количества столбцов (вторая размерность). Данная матрица меняется в процессе в процессе вычисления функции
Возвращает: вектор с количеством элементов равным количеству строк в СЛАУ.
Пример использования:
(require :cl-utilities)
(let* ((data '((0.0d0 0.0d0 1.0d0 3.0d0)
(0.0d0 1.0d0 0.0d0 2.0d0)
(1.0d0 0.0d0 1.0d0 4.0d0)))
(mtr (make-array '(3 4) :initial-contents data))
(m (cl-utilities:copy-array mtr)))
(values (math:solve-linear-system-rotation mtr)))
=> #(1.0d0 2.0d0 3.0d0)
(let* ((data '((1.0d0 0.0d0 1.0d0 4.0d0)
(0.0d0 0.0d0 1.0d0 3.0d0)
(0.0d0 1.0d0 0.0d0 2.0d0)))
(mtr (make-array '(3 4) :initial-contents data))
(m (cl-utilities:copy-array mtr)))
(values (math:solve-linear-system-rotation mtr)))
=> #(1.0d0 2.0d0 3.0d0)
(let ((m-test (make-array '(3 4)
:initial-contents
'((10.0d0 11.0d0 12.0d0 4.0d0)
(15.0d0 17.0d0 21.0d0 2.0d0)
(70.0 8.0 10.0 3.0)))))
(solve-linear-system-rotation (cl-utilities:copy-array m-test)))
=>#(0.03588235294117642d0 2.182352941176469d0 -1.6970588235294102d0)
Есть необходимость доработки с точки зрения решения разреженной СЛАУ!