Определить функцию работы с векторами: Сложение векторов, разность, умножение на скаляр,скалярное произведение векторов,вычисление длины вектора - Lisp
Формулировка задачи:
с помощью фукнций map/ map-into / reduce определить функцию работы с векторами: Сложение векторов, разность, умножение на скаляр,скалярное произведение векторов,вычисление длины вектора
Решение задачи: «Определить функцию работы с векторами: Сложение векторов, разность, умножение на скаляр,скалярное произведение векторов,вычисление длины вектора»
textual
Листинг программы
;; Сложение векторов (defun add-vect (v1 v2) (mapcar #'(lambda (x) (apply '+ x)) (mapcar 'list v1 v2))) ==> add-vect (add-vect '(1 2 3) '(4 5 6)) ==> (5 7 9) ;; Вычитание (defun sub-vect (v1 v2) (mapcar #'(lambda (x) (apply '- x)) (mapcar 'list v1 v2))) ==> sub-vect (sub-vect '(1 2 3) '(4 5 6)) ==> (-3 -3 -3) ;; умножение на скаляр (defun sm-vect (s v) (mapcar #'(lambda (x) (* x s)) v)) ==> sm-vect (sm-vect 3 '(1 2 3 4)) ==> (3 6 9 12) ;; скалярное произведение (defun sc-vect (v1 v2) (apply '+ (mapcar #'(lambda (x) (apply '* x)) (mapcar 'list v1 v2)))) ==> sc-vect (sc-vect '(1 2 3) '(4 5 6)) ==> 32 ;; модуль вектора (defun vmod (v) (sqr (reduce #'(lambda (a x) (+ a (* x x))) v :initial-value 0))) ==> vmod (vmod '(1 2 3)) ==> 3.74165738677394
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д