转载自:http://blog.csdn.net/wangxiaojun911/article/details/17076465

欧几里得几何学(Euclidean Geometry)

两千三百年前,古希腊数学家欧几里得著成了《几何原本》,构建了被后世称为“欧几里得几何学”的研究图形的方法。欧几里得创立了当时颇为独特的公理系统,即首先提出一些显然的、不言自明的公理。

比如,他提出了“三角形的内角和一定等于一百八十度”的定理,他的许多几何计算也是基于此,并且看起来颇为正确。但是后来的数学家对此产生了质疑,认为这个定理是缘于经验而并非真理。那么,把不遵从欧几里德公里系统的几何学,也取了个相对应的名字,叫“非欧几里德几何学”(non-Euclidean Geometry)。

欧几里德几何对空间物体的刻画,是基于某个维度上的内积(Inner Product)。对于空间中的一些点或线,我们感兴趣的是它们的距离、角度等等属性,这可以通过求其内积获得。例如,在二维空间里两个向量X=(x1, x2)和Y=(y1, y2)的距离为x1*y1+x2*y2。也就是等于内积<X, Y>。此公式可以推广到三维空间,甚至是大于三维的空间。因此欧几里德空间也被称为“有限维实内积空间”。

然而,就如同三角形的内角和问题一样,在使用中也发现了欧几里德空间的局限性。这就必须先从拓扑学谈起。

拓扑学(Topology)

“拓扑学家就是不会区分甜甜圈和咖啡杯的人。” -John L. Kelley

“拓扑”这个词在希腊语中的意思是地貌。拓扑学是研究几何体连续形变中保持不变的性质。比如下面链接里介绍的“亏格”。无论怎么变形,亏格不同的对象都无法变成同一个模样。亏格就是一个拓扑不变量。
亏格

而连续的变换最后都能变成一样的两个物体,称为同胚(Homeomorphism)。 从这个角度上说,甜甜圈与有一只把手的杯子等价(都只有一个洞)。但是事实上,杯子无法捏成甜甜圈的模样,因为杯子都是瓷或塑料做的,它们都太硬。相对的,在拓扑学中研究的对象,都必须是“柔软”的,从某种意义上说就像可以流动的液体一样。然而,在传统的、基于内基的欧几里德空间(比如笛卡尔坐标系)中,得出甜甜圈等于杯子的结论是不可想象的。相应的,把基于欧几里德空间的几何学称为是“坚硬”的。

所以,在拓扑学中必须定义一个特殊的柔软的概念。

流形(Manifold)

流形这个名字来源于十九世纪德国数学家黎曼(Riemann )。流形的德语原名是Mannigfaltigkeit,意思是“多样性”。

下面一个问题是,该如何精确地描述这种柔软多变的流形呢?

这种灵感来源于地图集(Atlas)。假设你要做一份详细的中国地图, 有两个难点。第一是不可能把所有的地图细节包含在一张纸内,所以不同的城市要画在不同的页(Chart)上。然后,给出比例尺,再告诉读者从天津往西北方向的地图是北京等等。

第二个问题更加棘手,它源自于地图本身的局限性。我们很容易知道从上海往西走可以到乌鲁木齐。但是,假设从上海坐船往东,穿过北美、欧洲大陆,同样可以到达乌鲁木齐。用此逻辑,从任何一个地点出发,往任何方向前进,都可以回到原点,这是地图无法表达的。

把地图和拓扑的问题比较,某一张地图就好像一个笛卡尔坐标系,在局部的讨论中是成立的。就好比拿着北京地图从西直门走到西单,无论如何也是没有歧义的。但是扩大到整个地球(流形)就不成立了。

于是以地图集的概念描述一个流体:把流体的任何一个微小的局部看作是欧几里德空间,称为一个chart。无限多这样的chart拼接起来,就成了地图集atlas。

同时可以看出这样定义的流形,要求在某个任何小的空间里,它必须是"简单"的。试想可以把一个柿子看作一个流形,但某天它发霉了,长了一根毛(看作一条线),就不能看作流形了。因为考虑这个柿子长毛的那个微小区域,无法用一个chart描述。

事实上,地球的经纬度就可以看作一个坐标系。可以看出,在纬度最高的地方(南北极),方向是无法定义的。这也是欧几里德空间对于流体的局限性。

另外必须指出,对于同一个流体,可以通过选取不同的图(或者说是投影)来定义不同的地图集。

同在欧几里德空间里一样,流形也是有维度的,这个维度在局部里定义。如果流形的图是n维的,那么这个图被称为n维流形。比如球面的任意一个细小的局部是一个2维平面,那么球面就是一个2维流形。

从以上例子也可以看出,流形的维度同它在欧几里德空间的个体(3维)比较是下降了。直观来看,因为在曲面上的运动本来就也只有两个自由度。通常对于笛卡儿坐标系的曲面,可以找到对应的低维度流形坐标,这个过程叫做参数化(Parameterization)。

流形(Manifold)初步【转】的更多相关文章

  1. 流形-Manifold

    流形,也就是 Manifold .不知道你有没有为我在本文开头放上的那个地球的图片感到困惑?这是因为球面是一个很典型的流形的例子,而地球就是一个很典型的“球面”啦(姑且当作球面好啦). 有时候经常会在 ...

  2. FAQ: Machine Learning: What and How

    What: 就是将统计学算法作为理论,计算机作为工具,解决问题.statistic Algorithm. How: 如何成为菜鸟一枚? http://www.quora.com/How-can-a-b ...

  3. [ML] I'm back for Machine Learning

    Hi, Long time no see. Briefly, I plan to step into this new area, data analysis. In the past few yea ...

  4. MIT牛人解说数学体系

    https://www.douban.com/group/topic/11115261/ 在过去的一年中,我一直在数学的海洋中游荡,research进展不多,对于数学世界的阅历算是有了一些长进. 为什 ...

  5. 【zz】MIT牛人解说数学体系

    作者:林达华 一.为什么要深入数学的世界 作为计算机的学生,我(原作者)没有任何企图要成为一个数学家.我学习数学的目 的,是要想爬上巨人的肩膀,希望站在更高的高度,能把我自己研究的东西看得更深广一些. ...

  6. MIT牛人解说数学体系(转载)

    原文网址:http://www.guokr.com/post/442622/ 在过去的一年中,我一直在数学的海洋中游荡,research进展不多,对于数学世界的阅历算是有了一些长进. 为什么要深入数学 ...

  7. MobileNet_v2

    研究动机: 神经网络彻底改变了机器智能的许多领域,实现了超人的准确性.然而,提高准确性的驱动力往往需要付出代价:现代先进网络需要高度计算资源,超出许多移动和嵌入式应用的能力. 主要贡献: 发明了一个新 ...

  8. KNN-笔记(1)

    1 - 背景 KNN:k近邻,表示基于k个最近的邻居的一种机器学习方法.该方法原理简单,构造方便.且是一个非参数化模型. KNN是一个"懒学习"方法,也就是其本身没有训练过程.只有 ...

  9. [数学]MIT牛人解说数学体系

    本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.penglixun.com/study/science/mit_math ...

  10. 从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码

    首发于公众号:计算机视觉life 旗下知识星球「从零开始学习SLAM」 这可能是最清晰讲解g2o代码框架的文章 理解图优化,一步步带你看懂g2o框架 小白:师兄师兄,最近我在看SLAM的优化算法,有种 ...

随机推荐

  1. ARM学习笔记14——C语言和汇编相互套用

    这里,我们要准备两个文件,一个是汇编文件start.S,另一个是C文件led.c.汇编文件套用C文件中的开关灯函数,C文件套用汇编文件中延时函数. //start.S .global led_init ...

  2. 进程与线程(二) java进程的内存模型

    从我出生那天起,我就知道我有个兄弟,他桀骜不驯,但实力强悍 ,人家都叫它C+++            ----java 上回说到了,C进程的内存分配,那么一个java运行过程也是一个进程,java内 ...

  3. Linux方向职业规划

    Linux方向职业分析 引言: 据了解,Linux普通网络管理人员的月薪大约5000元左右,负责编程的Linux软件工程师月薪大约在8000元到12000元之间,Linux嵌入式软件开发人员的月薪大约 ...

  4. 《神经网络和深度学习》系列文章三:sigmoid神经元

    出处: Michael Nielsen的<Neural Network and Deep Leraning>,点击末尾“阅读原文”即可查看英文原文. 本节译者:哈工大SCIR硕士生 徐伟 ...

  5. 80端口被system占用的问题

    80端口被system占用的问题今天启动Apache的时候发现无法启动-80端口被占用. 检查进程发现是system进程id=4给占用了.这个是系统进程 检查服务,看看IIS.没发现问题. 检查了半天 ...

  6. innodb_space工具解析 MYSQL 页图解

  7. linux 基础学习图解

    http://www.cnblogs.com/xiaoluo501395377/category/465892.html

  8. careercup-栈与队列 3.1

    3.1 描述如何只用一个数组来实现三个栈. 解答 我们可以很容易地用一个数组来实现一个栈,压栈就往数组里插入值,栈顶指针加1: 出栈就直接将栈顶指针减1:取栈顶值就把栈顶指针指向的单元的值返回: 判断 ...

  9. QTreeWidget实现动态加载本地文件系统

    QT之前没有接触过,之所以做这个也是被临时拉去GoldenFarm组去做渲染的客户端:还别说,虽说是第一次,做出来的这个东西倒是挺让我满意的.先说一下具体需求,然后再上图吧: 渲染时在选择场景文件时, ...

  10. js监听用户的键盘敲击事件,兼容各大主流浏览器

    js监听用户的键盘敲击事件,兼容各大主流浏览器 <script type="text/javascript"> document.onkeydown = functio ...