Next: 1.2 リスト行列の足し算,引き算
Up: 1 リスト行列
Previous: 1 リスト行列
リストをそのままベクトルと扱ってみると,
ベクトルの足し算,引き算は,
(defun float-vector (&rest l) (mapcar #'float l))
(defun v+ (a b) (mapcar* #'+ a b))
(defun v- (a b) (mapcar* #'- a b))
という具合に書くことができる.
float-vector定義の
引数宣言(&rest l)は,任意個の引数をまとめてリストにしてlに入れる
というものである.
> (v+ '(1 2 3) '(1 2 3))
(2 4 6)
> (v- '(1 2 3) '(1 2 3))
(0 0 0)
> (v- (float-vector 1 2 3) (float-vector 2 3 4))
(-1.0 -1.0 -1.0)
ベクトルの大きさnormや,ベクトル
間のユークリッド距離distanceを求めるには,
(defun norm (v)
(mapcar #'(lambda (x) (* x x)) v))
(defun distance (a b)
(norm (v- a b)))
となり,
> (norm '(1 2 3))
1.909385060972404
> (distance '(0. 0. 0.) '(1. 1 1))
1.5537739740300374
generated through LaTeX2HTML. M.Inaba 平成18年5月7日