Переменные
*semi-equal-relativ*
Описание: переменная *semi-equal-relativ* определяет
относительную величину, на которую могут отличаться значения
считающиеся равными при срвнении из с помощью функции semi-equal.
*semi-equal-zero*
Описание: переменная *semi-equal-zero* определяет
абсолютную величину, на которую могут отличаться значения
считающиеся равными при срвнении из с помощью функции semi-equal.
Функции
semi-equal
(x y &key (tolerance (+ (* *semi-equal-relativ* (sqrt (+ (* y y) (* x x)))) *semi-equal-zero*)))
Описание: функция semi-equal возвращает T, если расстояние между значениями меньше tolerance. При этом имеется в виду, что значения примерно равны.
Пример использования:
(semi-equal 1.0 1.000001)
Обобщенные функции
convert-to-triangular
(matrix)
Описание: обобщенная_функция convert-to-triangular
выполняет приведение матрицы matrix к треугольному виду,
для решения системы ЛУ методом Гаусса.
Методы
add
((a <matrix>) (b <matrix>))
Описание: метод add возвращает матрицу типа (<matrix>), являющуюся результатом сложения матриц a и b.
Пример использования:
(add (matr-new 2 2 '(1 2
3 4))
(matr-new 2 2 '(1 2
3 4)))
=> Matr 2х2
[ 2 4 ]
[ 6 8 ]
(add (matr-new 2 2 '(1 2 3 4))(matr-new 2 2 '(4 3 2 1)))
=> Matr 2х2
[ 5 5 ]
[ 5 5 ]
anti-diagonal
((mm <matrix>))
Пример использования:
(defparameter *mm*
(make-instance '<matrix>
:initial-contents '((1d0 2d0 3d0)
(4d0 5d0 6d0)
(7d0 8d0 9d0))))
=>
Matr 3х3
[ 1.0d0 2.0d0 3.0d0 ]
[ 4.0d0 5.0d0 6.0d0 ]
[ 7.0d0 8.0d0 9.0d0 ]
(anti-diagonal *mm*) => (3.0d0 5.0d0 7.0d0)
convert-to-triangular
((matr <matrix>))
Пример использования:
(convert-to-triangular
(make-instance '<matrix>
:initial-contents '((0.0 0.0 4.0 12.0)
(2.0 0.0 2.0 8.0)
(0.0 3.0 0.0 6.0))))
=> Matr 3х4
[ 1.0 0.0 1.0 4.0 ]
[ 0.0 1.0 0.0 2.0 ]
[ 0.0 0.0 1.0 3.0 ]
Пример использования:
(convert-to-triangular
(make-instance '<matrix>
:initial-contents '((1.0d0 2.0d0 3.0d0 4.0d0)
(5.0d0 6.0d0 7.0d0 8.0d0)
(9.0d0 10.0d0 11.0d0 12.0d0))))
=> Matr 3х4
[ 1.0d0 2.0d0 3.0d0 4.0d0 ]
[ -0.0d0 1.0d0 2.0d0 2.9999999999999996d0 ]
[ 0.0d0 0.0d0 0.0d0 8.881784197001252d-16 ]
main-diagonal
((mm <matrix>))
Пример использования:
(defparameter *mm*
(make-instance '<matrix> :initial-contents
'(( 1d0 2d0 3d0)
( 4d0 5d0 6d0)
( 7d0 8d0 9d0)
(10d0 11d0 12d0))))
*mm* => Matr 4х3
[ 1.0d0 2.0d0 3.0d0 ]
[ 4.0d0 5.0d0 6.0d0 ]
[ 7.0d0 8.0d0 9.0d0 ]
[ 10.0d0 11.0d0 12.0d0 ]
(main-diagonal *mm*) => (1.0d0 5.0d0 9.0d0)
multiply
((a <matrix>) (b <matrix>))
Описание: метод multiply возвращает матрицу типа (<matrix>), являющуюся результатом умножения матриц a и b.
Пример использования:
(multiply (matr-new 2 3 '(1.0 2.0 3.0
4.0 5.0 6.0))
(matr-new 3 2 '(1.0 2.0
3.0 4.0
5.0 6.0)))
=> Matr 2х2
[ 22.0 28.0 ]
[ 49.0 64.0 ]
(multiply (matr-new 3 2 '(1.0 2.0
3.0 4.0
5.0 6.0))
(matr-new 2 3 '(1.0 2.0 3.0
4.0 5.0 6.0)))
=> Matr 3х3
[ 9.0 12.0 15.0 ]
[ 19.0 26.0 33.0 ]
[ 29.0 40.0 51.0 ]
multiply
((a number) (b <matrix>))
Описание: метод multiply возвращает матрицу типа (<matrix>), являющуюся результатом умножения числа a и матрицы b.
Пример использования:
(multiply 10
(matr-new 2 3 '(1.0 2.0 3.0
4.0 5.0 6.0)))
=> Matr 2х3
[ 10.0 20.0 30.0 ]
[ 40.0 50.0 60.0 ]
squarep
((mm <matrix>))
Пример использования:
(defparameter *mm* (make-instance '<matrix> :dimensions '(2 3)))
*mm* => Matr 2х3
[ 0 0 0 ]
[ 0 0 0 ]
(squarep *mm*) => nil
(defparameter *mm* (make-instance '<matrix> :dimensions '(3 3)))
(squarep *mm*)
Setf-методы
setf main-diagonal
(elements (mm <matrix>))
Пример использования:
(defparameter *mm*
(make-instance '<matrix>
:initial-contents '(( 1d0 2d0 3d0)
( 4d0 5d0 6d0)
( 7d0 8d0 9d0)
(10d0 11d0 12d0))))
*mm* => Matr 4х3
[ 1.0d0 2.0d0 3.0d0 ]
[ 4.0d0 5.0d0 6.0d0 ]
[ 7.0d0 8.0d0 9.0d0 ]
[ 10.0d0 11.0d0 12.0d0 ]
(setf (main-diagonal *mm*) '(11d0 22d0 33d0))
*mm* => Matr 4х3
[ 11.0d0 2.0d0 3.0d0 ]
[ 4.0d0 22.0d0 6.0d0 ]
[ 7.0d0 8.0d0 33.0d0 ]
[ 10.0d0 11.0d0 12.0d0 ]
setf main-diagonal
((element number) (mm <matrix>))
Пример использования:
(defparameter *mm*
(make-instance '<matrix>
:initial-contents '(( 1d0 2d0 3d0)
( 4d0 5d0 6d0)
( 7d0 8d0 9d0)
(10d0 11d0 12d0))))
*mm* => Matr 4х3
[ 1.0d0 2.0d0 3.0d0 ]
[ 4.0d0 5.0d0 6.0d0 ]
[ 7.0d0 8.0d0 9.0d0 ]
[ 10.0d0 11.0d0 12.0d0 ]
(setf (main-diagonal *mm*) 11d0)
Matr 4х3
[ 11.0d0 2.0d0 3.0d0 ]
[ 4.0d0 11.0d0 6.0d0 ]
[ 7.0d0 8.0d0 11.0d0 ]
[ 10.0d0 11.0d0 12.0d0 ]
*mm* => Matr 4х3
[ 11.0d0 2.0d0 3.0d0 ]
[ 4.0d0 11.0d0 6.0d0 ]
[ 7.0d0 8.0d0 11.0d0 ]
[ 10.0d0 11.0d0 12.0d0 ]
Классы
<matrix>
Option | Value |
Superclasses: | (t) |
Metaclass: | standard-class |
Default Initargs: | nil |
Представляет матрицу, определенную через массив.
Создание:
- при помощи функции matr-new
Пример использования:
(matr-new 2 3)
=> Matr 2х3
[ 0.0d0 0.0d0 0.0d0 ]
[ 0.0d0 0.0d0 0.0d0 ]
(matr-new 3 2 '(1 2 3 4 5))
=> Matr 3х2
[ 1 2 ]
[ 3 4 ]
[ 5 NIL ]
data
Сдержимое матрицы.Option Value Allocation: instance Type: nil
Initarg: :data
Initform: nil
Accessors: (matrix-data)