使用标准库规范化向量
任务
数学 / 向量与矩阵运算 / 规范化向量
未使用任何包
此食谱仅使用 OCaml 标准库。代码
sum
返回列表 lst
中所有 float
类型元素的总和。
let sum lst = List.fold_left ( +. ) 0. lst
返回平方和 sqs
的 magnitude
(模长)。
let magnitude sqs = Float.sqrt (sum sqs)
normalize
接受一个 float
值列表 v
,并返回相应的单位向量作为列表。
let normalize v =
let sqs = List.map (fun x -> x *. x) v in
let m = magnitude sqs in
List.map (fun x -> x /. m) v
示例用法。
使用格式字符串 "%.2f"
,将 float
值四舍五入到小数点后第 2 位,以提高可读性。
let () =
let vector = [4.;6.;-1.]
let vhat = normalize vector;;
List.iter (Printf.printf "%.2f ") vhat