Math » MATH/ARR-MATR

Переменные

*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>
OptionValue
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
    Сдержимое матрицы.
    OptionValue
    Allocation:instance
    Type:nil
    Initarg::data
    Initform:nil
    Accessors:(matrix-data)