使用标准库规范化向量

任务

数学 / 向量与矩阵运算 / 规范化向量

未使用任何包

此食谱仅使用 OCaml 标准库

代码

sum 返回列表 lst 中所有 float 类型元素的总和。

let sum lst = List.fold_left ( +. ) 0. lst

返回平方和 sqsmagnitude(模长)。

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



食谱无效?注释不清楚或已过时?

提交问题为该食谱做出贡献