热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

线性代数笔记4——向量3(叉积)

什么是叉积向量的叉积也叫外积、向量积、叉乘或矢量积。两个向量的叉积是这样表示的:在二维空间内,向量A<a1,a2>,B<b1,b2>其
什么是叉积

  向量的叉积也叫外积、向量积、叉乘或矢量积。两个向量的叉积是这样表示的:

 

  在二维空间内,向量A = 1, a2>,B = 1, b2>

 

  其几何意义就是以两个向量为边的平行四边形的面积,这在上篇文章中给出了详细说明。

  此外,叉积也适用于两个在三维空间内的向量。在三维空间内,向量A = 1, a2, a3>,B = 1, b2, b3>,C = 1, c2, c3>

 

  i, j, k是三个维度中每个维度的单位向量,有点像三阶行列式,但并不是常理上的行列式,因为行列式不会出现向量,这里仅仅是为了便于表达和记忆。

  从上面的描述中可以看出,叉积得到的是一个向量,而不是一个数字,也因此,A×BB×A并不等同,实际上,

叉积的几何意义

  向量的两个要素是模长和方向,让我们从这两个角度考虑叉积的几何意义。

  在模长上,叉积的几何意义是以两个向量为边的平行四边形的面积:

  两个相同向量的叉积是0,

 

  如果用几何意义解释,二者构成一条线段,线段的面积是0。

  在方向上,叉积垂直于平行四边形所在的平面:

  由于叉积存在负值,所以垂直的方向可能向上或向下,具体方向根据右手法则判断。

  右手法则很有意思,首先要保持拇指朝上,然后其他四指指向叉积的第一个向量,向内弯曲四指指向另一个向量。如果两个向量的方向能符合这个手势,此时拇指的方向就是叉积的方向;如果必须向外弯曲四指,拇指的反方向是叉积的方向。总之,最终能够以一个舒服的方向竖起拇指就对了。

叉积的作用

计算平行六面体的体积

  所谓平行六面体,就是六面体的每个面都是平行四边形,如下图所示:

  向量H是垂直于底面的向量,|H|是六面体的高,可看作向量AH方向上的分量,分量可以用点积表示,这在上一篇中叙述过。如果令uH方向的单位向量:

 

判断点是否在同一平面

  空间内的三点可以确定一个平面,P1,P2,P3是空间中的三个点,另有一点P,如何判断P是否在平面内?

 

P是否在P1,P2,P3组成的平面内?

  可以借助向量通过上一节中平行六面体体积的知识判断,如下图所示:

 

  这样形成了三个向量,|P1P3×P1P2| 是这两个向量围成的平行四边形的面积,P1P·|P1P3×P1P2| 表示平行六面体的体积,如果体积是0,那么P就在平面内。

计算法向量

  也可以用另一种方法求解上面的问题,这需要法向量的帮助。一个与平面垂直的向量称为该平面的法向量,一个平面有无数条法向量,法向量与一个常数的乘积还是法向量。

  N是平面的法向量,如果NP1P,则P在平面内。根据点积的知识,N·P1P = 0,则NP1P。如何计算N呢?实际上,N就是P1P3P1P2的叉积。

  如果P在平面内,则体积 = P1P·(P1P3×P1P2)= 0;由于NP1PN·P1P = 0,结合二者:

P1P·(P1P3×P1P2)= P1P· N = 0

 => N = P1P3×P1P2

示例

示例1

  平行六面体是三条边是三个向量<2, 2, 0>,<1, 0, 1>,<0, 1, 1>,求该六面体的体积。

  很明显是相交于<0, 0, 0>的三个向量,设三个向量分别是ABC

 

  体积是4

示例2

  计算三个点围成的三角形的面积,P1(-1, 0 , 1),P2(0, 2, 2),P3(0, -1, 2)

  使用叉积很容易计算,需要注意的是,点积和叉乘仅对向量有意义,对点来说则毫无用处,所以首先需要将点转换为向量。

 

 


   作者:我是8位的

  出处:http://www.cnblogs.com/bigmonkey

  本文以学习、研究和分享为主,如需转载,请联系本人,标明作者和出处,非商业用途! 

 


推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 本文详细介绍了如何在BackTrack 5中配置和启动SSH服务,确保其正常运行,并通过Windows系统成功连接。涵盖了必要的密钥生成步骤及常见问题解决方法。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 本文探讨如何设计一个安全的加密和验证算法,确保生成的密码具有高随机性和低重复率,并提供相应的验证机制。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 本文探讨了 RESTful API 和传统接口之间的关键差异,解释了为什么 RESTful API 在设计和实现上具有独特的优势。 ... [详细]
  • 当iOS设备越狱后,某些插件可能会导致系统崩溃(白苹果)。此时,可以通过进入安全模式来排查并删除有问题的插件。本文将详细介绍如何通过特定按键组合进入不加载MobileSubstrate的安全模式,并提供相关背景知识。 ... [详细]
author-avatar
大笨猫的男人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有