Умножение матриц - Lisp (229710)

Узнай цену своей работы

Формулировка задачи:

Нужно умножить матрицы 1х2 и 2х3, при это использовать функции , которые определяют двумерный массив (т.е. MAKE-ARRAY, обращение к элементам массива возможно только через (aref...)). Возможно вообще реализовать такую задачу?

Решение задачи: «Умножение матриц»

textual
Листинг программы
;; Транспонирование матрицы
 
(defun transp-matr (matr)
  (apply 'mapcar (cons 'list matr)))
                 
==> transp-matr
 
;; Умножение матриц
 
(defun mult-matr (m1 m2)
  (let ((m2t (transp-matr m2)))
     (mapcar #'(lambda (x) (mapcar #'(lambda (y) (apply '+ (mapcar '* x y))) m2t)) m1)))
 
==> mult-matr
 
(mult-matr '((1 2 3) (4 5 6) (7 8 9)) '((0 1 0) (1 0 0) (1 0 1)))
 
==> ((5 1 3) (11 4 6) (17 7 9))

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.429 из 5
Похожие ответы