Math » MATH/LS-ROTATION

Функции

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)

Есть необходимость доработки с точки зрения решения разреженной СЛАУ!