Функції планування, Детальна інформація
Функції планування
(CONS (MAPCAR 'CAR matr) (TRANS (MAPCAR 'CDR matr))) )
Розглянемо роботу функції TRANS на прикладі по крокам:
(TRANS ‘((1 2 3)(4 5 6)(7 8 9)))
(CONS ‘(1 4 7) (TRANS ‘((2 3)(5 6)(8 9))))
(CONS ‘(1 4 7) (CONS ‘(2 5 8) (TRANS ‘((3)(6)(9)))))
(CONS ‘(1 4 7) (CONS ‘(2 5 8) (CONS ‘(3 6 9) (TRANS ‘( () () () )))))
(CONS ‘(1 4 7) (CONS ‘(2 5 8) (CONS ‘(3 6 9) NIL)))
(CONS ‘(1 4 7) (CONS ‘(2 5 8) ‘((3 6 9)) ))
(CONS ‘(1 4 7) ‘((2 5 8) (3 6 9)) )
((1 4 7)(2 5 8)(3 6 9))
Далі напишемо функцію MULT – множення двох матриць. Але спочатку напишемо декілька допоміжних функцій.
Функція SCALAR знаходить скалярний добуток двох векторів, представлених списками x та y.
(DEFUN SCALAR (x y) $ (SCALAR ‘(1 2 3) ‘(4 5 6))
(APPLY '+ (MAPCAR '* x y)) 32
Функція MULT2 будує список скалярних добутків вектора x на елементи списку y, які є векторами
(DEFUN MULT2 (x y)
(MAPCAR 'SCALAR (MAKE-LIST (LENGTH x) x) y) )
$ (MULT2 ‘(1 2 3) ‘((1 2 3)(4 5 6)(7 8 9)))
(14 32 50)
Функція MULT1 утворює список списків скалярних добутків усіх можливих елементів x та y.
(DEFUN MULT1 (x y)
(MAPCAR 'MULT2 x (MAKE-LIST (LENGTH y) y)) )
$ (MULT1 ‘((1 2 3)(4 5 6)(7 8 9)) ‘((1 2 3)(4 5 6)(7 8 9)))
((14 32 50) (32 77 122) (50 122 194))
(DEFUN MULT (x y)
(MULT1 x (TRANS y)) )
$ (MULT ‘((1 2 3)(4 5 6)(7 8 9)) ‘((1 2 3)(4 5 6)(7 8 9)))
((30 36 42) (66 81 96) (102 126 150))
Розглянемо роботу функції TRANS на прикладі по крокам:
(TRANS ‘((1 2 3)(4 5 6)(7 8 9)))
(CONS ‘(1 4 7) (TRANS ‘((2 3)(5 6)(8 9))))
(CONS ‘(1 4 7) (CONS ‘(2 5 8) (TRANS ‘((3)(6)(9)))))
(CONS ‘(1 4 7) (CONS ‘(2 5 8) (CONS ‘(3 6 9) (TRANS ‘( () () () )))))
(CONS ‘(1 4 7) (CONS ‘(2 5 8) (CONS ‘(3 6 9) NIL)))
(CONS ‘(1 4 7) (CONS ‘(2 5 8) ‘((3 6 9)) ))
(CONS ‘(1 4 7) ‘((2 5 8) (3 6 9)) )
((1 4 7)(2 5 8)(3 6 9))
Далі напишемо функцію MULT – множення двох матриць. Але спочатку напишемо декілька допоміжних функцій.
Функція SCALAR знаходить скалярний добуток двох векторів, представлених списками x та y.
(DEFUN SCALAR (x y) $ (SCALAR ‘(1 2 3) ‘(4 5 6))
(APPLY '+ (MAPCAR '* x y)) 32
Функція MULT2 будує список скалярних добутків вектора x на елементи списку y, які є векторами
(DEFUN MULT2 (x y)
(MAPCAR 'SCALAR (MAKE-LIST (LENGTH x) x) y) )
$ (MULT2 ‘(1 2 3) ‘((1 2 3)(4 5 6)(7 8 9)))
(14 32 50)
Функція MULT1 утворює список списків скалярних добутків усіх можливих елементів x та y.
(DEFUN MULT1 (x y)
(MAPCAR 'MULT2 x (MAKE-LIST (LENGTH y) y)) )
$ (MULT1 ‘((1 2 3)(4 5 6)(7 8 9)) ‘((1 2 3)(4 5 6)(7 8 9)))
((14 32 50) (32 77 122) (50 122 194))
(DEFUN MULT (x y)
(MULT1 x (TRANS y)) )
$ (MULT ‘((1 2 3)(4 5 6)(7 8 9)) ‘((1 2 3)(4 5 6)(7 8 9)))
((30 36 42) (66 81 96) (102 126 150))
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021