前言

上周我们数学老师给了我们一道题,大意就是两个向量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维体积的大小的更多相关文章

  1. [LeetCode] Flatten 2D Vector 压平二维向量

    Implement an iterator to flatten a 2d vector. For example,Given 2d vector = [ [1,2], [3], [4,5,6] ] ...

  2. 【Unity3D】计算二维向量夹角(-180到180)

    在Unity3D中,有时候我们需要计算二维向量的夹角.二维向量夹角一般在0~180度之前,可以直接调用Vector2.Angle(Vector2 from, Vector2 to)来计算. 但是在有些 ...

  3. Agent J(求三个圆围成的区域面积)

    A - A Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit Status P ...

  4. Python中如何将二维列表转换成一维列表

    已知:a = [(4,2,3), (5, 9, 1), (7,8,9)]希望将二维列表转换成一维列表:["4,2,3", "5, 9, 1", "7, ...

  5. [Swift]LeetCode251.展平二维向量 $ Flatten 2D Vector

    Implement an iterator to flatten a 2d vector. For example,Given 2d vector = [ [1,2], [3], [4,5,6] ] ...

  6. [VB.NET][C#]二维向量的基本运算

    前言 在数学中,几何向量指具有大小(Magnitude)和方向的几何对象,它在线性代数中经由抽象化有着更一般的概念.向量在编程中也有着及其广泛的应用,其作用在图形编程和游戏物理引擎方面尤为突出. 基于 ...

  7. 用vector实现二维向量

    如果一个向量的每一个元素是一个向量,则称为二维向量,例如 vector<vector<int> >vv(3, vector<int>(4));//这里,两个“> ...

  8. 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 ...

  9. C# 二维数组 转换成 DataTable

    C# 数据转换 Overview C# 窗体操作中,有些比较特别的操作.但是为了方便我们不得不使用一些比较特别的手段. C#中二维数组转DataTable 首先,我们看一下我对二维数组的数据处理.这次 ...

随机推荐

  1. gin中设置和获取cookie

    package main import ( "fmt" "github.com/gin-gonic/gin" ) func main() { router := ...

  2. golang中的结构体工厂

    1. main包 package main import ( "day01/utils" "fmt" ) //type File struct { // fd ...

  3. Servlet-IDEA菜单生成Servlet程序

    更快捷方法生成Servlet程序(IDEA菜单生成Servlet) 菜单:new ---> Servlet程序 取消注解做这个配置 可以创建Servlet程序,编写HelloServlet3类, ...

  4. 科技爱好者周刊(第 176 期):中国法院承认 GPL 吗?

    这里记录每周值得分享的科技内容,周五发布. 本杂志开源(GitHub: ruanyf/weekly),欢迎提交 issue,投稿或推荐科技内容. 周刊讨论区的帖子<谁在招人?>,提供大量程 ...

  5. keepalived的抢占与非抢占模式

    目录 一:keepalived的抢占与非抢占模式 1.抢占模式 2.非抢占模式 二:接下来分4种情况说明 三:以上3种,只要级别高就会获取master,与state状态是无关的 一:keepalive ...

  6. HTML 基础3

    表格 示例1: <h4>水平表头+普通边框</h4> <table border="1"> <caption>caption标签展示 ...

  7. 【免杀技术】Tomcat内存马-Filter

    Tomcat内存马-Filter型 什么是内存马?为什么要有内存马?什么又是Filter型内存马?这些问题在此就不做赘述 Filter加载流程分析 tomcat启动后正常情况下对于Filter的处理过 ...

  8. .NET 20周年软件趋势随想

    从2000年微软启动.NET战略时,我还是一位大学生,当年著名的黑客Miguel de Icaza , Miguel 为了寻找GNOME项目开发框架经过充分的调研启动了一个志存高远的项目:Mono,一 ...

  9. 详解git fetch与git pull的区别(实操)

    感谢原文作者:R-H-R 原文链接:https://blog.csdn.net/riddle1981/article/details/74938111 git fetch和git pull都可以将远端 ...

  10. JAVA多线程学习六-守护线程

    java中的守护程序线程是一个服务提供程序线程,它为用户线程提供服务. 它的生命依赖于用户线程,即当所有用户线程都死掉时,JVM会自动终止该线程. 有许多java守护程序线程自动运行,例如 gc,fi ...