多个n维向量围成的n维体积的大小
前言
上周我们数学老师给了我们一道题,大意就是两个向量a和b,一个点M=$x*a+y*b$,x,y有范围,然后所有M组成的面积是一个定值,求x+y的最小值。当然这是道小水题,但我在想,如果把两个向量变成多个向量,二维变成高维的话,那会怎么样呢。
分析
众所周知,两个二维向量可围成平行四边形。如果再多一个就相当于将该平行四边形沿该向量平移,如下图,总面积就相当于如图蓝色框出的面积(即平移时扫过的体积)。

它可以分解成下图三个平行四边形

所以$S=a \times b +a \times c +b \times c$(注意这里为了方便向量不标箭头)
如果再加一个向量,就相当于将该图形整体平移
易得:对于m个二维向量,围成的面积
$$S=\sum_{a,b是1到m的一个组合} a \times b$$
进一步,将二维扩展为三维,对于三个三维向量围成的平行四边形体,此时再加一个向量,就相当于将该几何体平移,求整个几何体扫过的体积。
经过我画图验证可得总体积
$$V=\sum_{a,b,c是1到m的一个组合} (a \times b) \cdot c$$
更进一步,扩展到n维,此时它的体积(我也不知道高维下的空间大小叫什么,就先沿用体积好了)就难以用点积和叉积表示了,我们用$f(a_1,a_2,...,a_n)$表示n个n维向量围成的体积,则:
$$V=\sum_{i,j,k,...是1到m的一个组合} f(a_i,a_j,a_k,...)$$
$f(a_i)$可以用行列式来求解,即:
设m个n维向量分别表示为$v_i=(a_{i,1},...,a_{i,n})$
$f(a_1,a_2,...,a_n)=$
\left[
\begin{array}{cccc}
a_{1,1} & ... & a_{1,n} \\
... & ... & ...\\
a_{n,1} & ... & a_{n,n}
\end{array}
\right]
如此一来,我们就得到了多个n维向量围成的n维体积的大小的计算公式
多个n维向量围成的n维体积的大小的更多相关文章
- [LeetCode] Flatten 2D Vector 压平二维向量
Implement an iterator to flatten a 2d vector. For example,Given 2d vector = [ [1,2], [3], [4,5,6] ] ...
- 【Unity3D】计算二维向量夹角(-180到180)
在Unity3D中,有时候我们需要计算二维向量的夹角.二维向量夹角一般在0~180度之前,可以直接调用Vector2.Angle(Vector2 from, Vector2 to)来计算. 但是在有些 ...
- Agent J(求三个圆围成的区域面积)
A - A Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Submit Status P ...
- Python中如何将二维列表转换成一维列表
已知:a = [(4,2,3), (5, 9, 1), (7,8,9)]希望将二维列表转换成一维列表:["4,2,3", "5, 9, 1", "7, ...
- [Swift]LeetCode251.展平二维向量 $ Flatten 2D Vector
Implement an iterator to flatten a 2d vector. For example,Given 2d vector = [ [1,2], [3], [4,5,6] ] ...
- [VB.NET][C#]二维向量的基本运算
前言 在数学中,几何向量指具有大小(Magnitude)和方向的几何对象,它在线性代数中经由抽象化有着更一般的概念.向量在编程中也有着及其广泛的应用,其作用在图形编程和游戏物理引擎方面尤为突出. 基于 ...
- 用vector实现二维向量
如果一个向量的每一个元素是一个向量,则称为二维向量,例如 vector<vector<int> >vv(3, vector<int>(4));//这里,两个“> ...
- PCA 实例演示二维数据降成1维
import numpy as np # 将二维数据降成1维 num = [(2.5, 2.4), (0.5, 0.7), (2.2, 2.9), (1.9, 2.2), (3.1, 3.0), (2 ...
- C# 二维数组 转换成 DataTable
C# 数据转换 Overview C# 窗体操作中,有些比较特别的操作.但是为了方便我们不得不使用一些比较特别的手段. C#中二维数组转DataTable 首先,我们看一下我对二维数组的数据处理.这次 ...
随机推荐
- ansible lineinfile 关闭selinux
- spring 定时任务?
一.什么是定时任务? 我们在项目中遇到的需求: 需要定时送异步请求. 二.怎么实现? 2.1 mvc中启用定时任务. <?xml version="1.0" encodin ...
- 如何美化 Matplotlib 的工具栏和绘图风格
前言 matplotlib 功能十分强大,就是工具栏丑了点.忍了一个学期之后,还是决定自己动手,魔改一波 matplotlib 的工具栏样式.同时给大家分享一下自己按照 MATLAB 写的 matpl ...
- 【第十三期】B站后端开发实习生一、二面经
写在最前:非科班渣硕去年转码一年,不是什么大佬,纯小白(go语言开发). 一面(大概70min) 首先是自我介绍.(比较传统,就是描述下自己的技术栈) 线程和进程的关系. 线程之间如何进行通信. 死锁 ...
- go http 中间件
- Shell编程中的用户输入处理
Linux read命令用于从标准输入读取数值. read 内部命令被用来从标准输入读取单行数据.这个命令可以用来读取键盘输入,当使用重定向的时候,可以读取文件中的一行数据. 语法 read [-er ...
- 深入分析Java中的关键字static
在平时开发当中,我们经常会遇见static关键字.这篇文章就把java中static关键字的使用方法的原理进行一个深入的分析.先给出这篇文章的大致脉络: 首先,描述了static关键字去修饰java类 ...
- 抽象修饰符abstract
描述一类事物的时候发现该类存在一种行为,但不知道行为具体怎么实现,我们将这种行为称之为抽象行为,这时候我们就需要抽象类 抽象类的好处:抽象类中的抽象方法一定要备子类重写 抽象类注意点: 1.在类中,一 ...
- shell脚本之循环语句与函数
shell脚本之循环语句与函数 echo的用法: echo -n #表示不换行输出 echo -e #输出转义字符,将转义后的内容输出到屏幕上 转义字符: \n :换行,被输出的字符从"\n ...
- 简述redis集群的实现原理
在哨兵sentinel机制中,可以解决redis高可用问题,即当master故障后可以自动将slave提升为master,从而可以保证redis服务的正常使用,但是无法解决redis单机写入的瓶颈问题 ...