zoukankan      html  css  js  c++  java
  • 向量除法——标量乘法的逆运算

    一、问题提出

      已知一个n维向量A,和一个标量k,可将它们进行标量乘法运算,得到向量B——
    B = kA

      那么,若只知两个共线的向量A、B,如何求k呢,既——
    k = B/A = ?


    二、解决办法

      我们可以将上下均乘以(点积,dot product)“A”——
    k = B/A
    = (B . A)/(A . A)
    = (B . A)/( |A|^2 )
    = (b1*a1 + b2*a2 + b3*a3 + ... + bn*an) / ( a1*a1 + a2*a2 + a3*a3 + ... + an*an )


    三、几何解释、推广到非共线向量

      先回忆一下向量点积的的几何算法——
    A . B = |A| * |B| * cos(th)
    注:th是两个向量的夹角

      将上式除以 |A|(向量A的模长),可得出向量B在向量A上的投影的模长——
    | Prj(B)A | = |A| * |B| * cos(th) / |A| = |B| * cos(th)

      将投影的模长再除以 |A|,既是 投影模长在总长度的比例——
    k = | Prj(B)A | / |A| = (|B|/|A|) * cos(th)

      对于共线向量而言,很明显,就是先前欲求的标量k值。
      对于非共线向量而言,则是投影向量的相关k值。

      也就是说,不论是否共线,该除法都有值(除非A是零向量)。
      在很多时候,这个特性很有用。比如在写图形编辑系统时,需要计算点击位置是线段的哪一部分。因为鼠标点击坐标是有理数(比例尺),而线段的斜率有可能是无理数,这会造成两个向量不是共线的。而本文的除法算法,可以稳健的处理这一情况。而且投影向量更符合一般的操作习惯。

  • 相关阅读:
    牛客OI周赛13-提高组 比赛总结
    CF1260C Infinite Fence 题解(扩欧)
    Comet OJ
    CF1151F Sonya and Informatics (计数dp+矩阵优化)
    矩阵 总结
    Educational Codeforces Round 77 比赛总结
    Codeforces 矩阵题 题单
    01欢迎进入软件构建的世界
    02用隐喻来充分地理解软件开发
    02Vs2013常用路径配置
  • 原文地址:https://www.cnblogs.com/zyl910/p/Vector_Division.html
Copyright © 2011-2022 走看看