zoukankan      html  css  js  c++  java
  • 单纯形【转】

    几何学上,单纯形或者n-单纯形是和三角形类似的n维几何体。精确的讲,单纯形是某个n维以上的欧几里得空间中的(n+1)个仿射无关(也就是没有m平面包含m+1个点;这样的点集被称为处于一般位置)的的集合的凸包

    例如,0-单纯形就是,1-单纯形就是线段,2-单纯形就是三角形,3-单纯形就是四面体,而4-单纯形是一个五胞体(每种情况都包含内部)。

    正单纯形是同时也是正多胞形的单纯形。正n-单纯形可以从正(n − 1)-单纯形通过将一个新顶点用同样的边长连接到所有旧顶点构造。

    目录

     基础

    任何n+1点集的非空子集的凸包定义了一个n-单纯形,称为该n+1-单纯形的。面本身也是单纯形。(n+1点)的m+1子集的凸包是一个m-单纯形,称为n-单纯形的m-面。 0-面(也即,一个点构成的面)称为顶点,而1-面称为,(n − 1)-面称为面片,而n-面就是n-单纯形本身。一般来讲,m-面的个数等于二项式系数 C(n + 1, m + 1)。因此,n-单纯形的m-面的个数可以在杨辉三角形的第(n+1)行和第(m+1)列找到。面片在描述单纯复形中的单纯形的类型时可能有不同的含义。参看单纯复形#定义

    正单纯形族是三族正多胞体的第一组,Coxeter将之记为αn,其它两类为正轴体,记为βn,和超立方体,记为γn。第四组,超立方体的无穷分割被记为δn

    n-单纯形元素(根据杨辉三角形)
    Δnαnn-多胞体名称施莱夫利符号
    Coxeter-Dynkin
    顶点
    0-面

    1-面

    2-面

    3-面
    4-面5-面6-面7-面8-面9-面
    Δ0α0 0-多胞体 Complete graph K1.svg 顶点
    (0-单纯形)
    - 1                  
    Δ1α1 1-多胞体 Cross graph 1.svg 线段
    (1-单纯形)
    {}
    CDW ring.png
    2 1                
    Δ2α2 2-多胞体 Complete graph K3.svg 三角形
    (2-单纯形)
    {3}
    CDW ring.pngCDW 3b.pngCDW dot.png
    3 3 1              
    Δ3α3 3-多胞体 Complete graph K4.svg 四面体
    (3-单纯形)
    {3,3}
    CDW ring.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.png
    4 6 4 1            
    Δ4α4 4-多胞体 Complete graph K5.svg 五胞体
    (4-单纯形)
    {3,3,3}
    CDW ring.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.png
    5 10 10 5 1          
    Δ5α5 5-多胞体 Complete graph K6.svg 六胞体
    (5-单纯形)
    {3,3,3,3}
    CDW ring.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.png
    6 15 20 15 6 1        
    Δ6α6 6-多胞体 Complete graph K7.svg 七胞体
    (6-单纯形)
    {3,3,3,3,3}
    CDW ring.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.png
    7 21 35 35 21 7 1      
    Δ7α7 7-多胞体 Complete graph K8.svg 八胞体
    (7-单纯形)
    {3,3,3,3,3,3}
    CDW ring.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.png
    8 28 56 70 56 28 8 1    
    Δ8α8 8-多胞体 Complete graph K9.svg 九胞体
    (8-单纯形)
    {3,3,3,3,3,3,3}
    CDW ring.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.png
    9 36 84 126 126 84 36 9 1  
    Δ9α9 9-多胞体 Complete graph K10.svg 十胞体
    (9-单纯形)
    {3,3,3,3,3,3,3,3}
    CDW ring.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.png
    10 45 120 210 252 210 120 45 10 1
    Δ10α10 10-多胞体 Complete graph K11.svg 十一胞体
    (10-单纯形)
    {3,3,3,3,3,3,3,3,3}
    CDW ring.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.pngCDW 3b.pngCDW dot.png
    11 55 165 330 462 462 330 165 55 11

     列表所用MAPLE公式

    • 使用(combstruct):for n from 0 to 11 do seq(count(Combination(n), size=m) , m = 1 .. n) od;
    • OEIS A135278 [1]

    标准单纯形

    R3中的标准2-单纯形

    标准n-单纯形(或称单位n-单纯形)是Rn+1的子集:

    \Delta^n = \left\{(t_0,\cdots,t_n)\in\mathbb{R}^{n+1}\mid\Sigma_{i}{t_i} = 1 \mbox{ and } t_i \ge 0 \mbox{ for all } i\right\}

    单纯形Δn位于仿射超平面(该超平面可以通过将上面ti ≥ 0的条件去掉而得到)。标准单纯形显然是正单纯形。

    标准n-单纯形的顶点为

    e0= (1, 0, 0, …, 0),
    e1= (0, 1, 0, …, 0),
    \vdots
    en = (0, 0, 0, …, 1).

    存在从标准n-单纯形到顶点为(v0, …, vn)的任意n-单纯形的标准映射

    (t_0,\cdots,t_n) \mapsto \Sigma_i t_i v_i

    系数ti称为点在n-单纯形中的重心坐标。这样的一般单纯形常常被称为仿射n-单纯形,以强调该标准映射是仿射变换。它有时也称为定向放射n-单纯形以强调标准映射可以是保定向或者是反定向的。

    几何属性

    n维空间中的顶点为(v0, ..., vn)的n-单纯形的定向体积

    
 {1\over n!}\det
 \begin{pmatrix}
  v_1-v_0 & v_2-v_0& \dots & v_{n-1}-v_0 & v_n-v_0
 \end{pmatrix}

    其中n × n行列式的每列是代表两个顶点的矢量之差。去掉1/n!的公式是n-平行多面体的体积。理解1/n!因子的一个方法如下:在单位n维盒子的取任意一点,将其坐标分量和0一起排序,然后将相邻数取差值,得到的数组构成原点和与其最近的n个顶点构成的n-单纯形中的一点的坐标;取差值的变换是一个保体积的变换,而排序则将点的个数减少到1/n!。

    标准n-单纯形下的体积(也即,Rn+1中的原点和单纯形之间的体积)是

    
{1 \over (n+1)!}

    单位边长的正n-单纯形的体积

    
{\frac{\sqrt{n+1}}{n!\sqrt{2^n}}}

    这个结果可以导出如下:将上一个公式乘以xn+1,得到作为顶点离原点距离(所有顶点和原点等距)的函数的n-单纯形下的体积;对x微分,取导数在x=1/\sqrt{2}  的值(因为这个位置n-单纯形边长为1),这个导数需要除以\sqrt{n+1},因为增量(dx,\dots, dx)(垂直于n-单纯形的法向)的长度为\sqrt{n+1}

     "直角"的单纯形

    这里的直角表示存在一个顶点,其所有相邻超平面两两垂直。这样的单纯形是直角三角形的一个推广,对于它们存在着一个n维的毕达哥拉斯定理:

    所有和直角相邻的n维超面的体积平方之和等于对面的n维体积的平方。

     \sum_{k=1}^{n} |A_{k}|^2 = |A_{0}|^2

    其中  A_{1} \ldots A_{n} 是两两垂直但不垂直于A0的超面,而A0是直角的对面。

    对于2-单纯形,这个定理就是毕达哥拉斯定理,而对于3-单纯形这个是适用于带立方角四面体的de Gua定理

    拓扑

    拓扑上,n-单纯形是拓扑等价n-球面的。每个n-单纯形是n带边界流形

    代数拓扑上,单纯形是用于构建一类称为单纯复形的常用拓扑空间的基本元素。这些空间可以通过将单纯形用组合方式粘合在一起来构造。单纯复形用于定义特定的一类同调,称为单纯同调

    嵌入到Rn开子集中的k-单纯形的有限集称为仿射k-链。在链中的单纯形不必唯一;它们可以重复出现。通常不采用集合的记法来标识仿射链,而是采用加号将它们连起来。若有些单纯形有相反的定向,它们可以用减号。如果有些单纯形出现多次,可以放一个整数在前面表示出现次数。这样,仿射链可以用整系数的线性组合表示。

    注意n-单纯形的每个面是一个仿射n-1-单纯形,因此n-单纯形的边界可以用一个仿射n-1-链来表示。如果定义一个正定向的单纯形

    σ = [v0,v1,v2,...,vn]

    其中 vj 代表顶点,则其边界 \partial\sigma 是如下链

    \partial\sigma = \sum_{j=0}^n 
(-1)^j [v_0,...,v_{j-1},v_{j+1},...,v_n].

    更一般的,单纯形(以及链)可以通过光滑可微映射嵌入到流形中:f\colon\mathbb{R}^n\rightarrow M。这个情况下,加法表示和边界算子都和嵌入可交换。也即

    f(\sum\nolimits_i a_i \sigma_i) = \sum\nolimits_i a_i f(\sigma_i)

    其中 ai 是标识定向和重次的整数。对于边界算子 \partial,有

    \partial f(\phi) = f (\partial \phi)

    其中 φ 为链。边界算子和映射可交换,是因为,链基本就是一个集合,而集合操作和映射是可交换的(按照映射的定义)。

    拓扑空间X中的连续映射 f:\sigma\rightarrow X 常常被称为奇异n-单纯形。因为f可以有奇点。

    随机采样

    (也称单纯形采点) 有两种在单位K-1-单纯形中产生有效产生均匀分布的采样方法。

    第一种方法基于从K-1维单位单纯形采样等价于从参数α = (α1, ..., αK)都等于1的狄利克雷分布中采样的事实。确切的流程为:

    • 产生K个服从单位指数分布的随机数x1, ..., xK.
    • Sxi之和。
    • 单位单纯形中的点的K个坐标t1, ..., tKti=xi/S给出。

    第二个方法是基于单位区间上的均匀分布的顺序统计量(参看Devroye, p.568)。算法如下:

    • p0 = 0 而 pK=1.
    • 产生K-1个开区间(0,1)上均匀分布的随机数pi
    • K+1点p0, ..., pK排序。
    • 单位单纯形中的点的K个坐标t1, ..., tKti=pi-pi-1给出。

    随机漫游

    有时需要在单纯形中进行均匀随机漫游而不是取一点。这样的随机漫游在蒙特卡罗法中经常用到,譬如单纯形域中的马尔可夫链蒙特卡罗

    可以从单位化K指数分布随机矢量来得到单纯形中的均匀分布来衍生出漫游的有效算法。首先定义一个单变量函数在正实直线上"漫游",其采样点的静态分布为单位指数分布。该函数利用Metropolis-Hastings算法从旧点得到新点。这个函数伪代码如下,其中h是相对步长:

    next_point <- function(x_old) { repeat { x_new <- x_old * exp( Random_Normal(0,h) ) metropolis_ratio <- exp(-x_new) / exp(-x_old) hastings_ratio <- ( x_new / x_old ) acceptance_probability <- min( 1 , metropolis_ratio * hastings_ratio ) if ( acceptance_probability > Random_Uniform(0,1) ) break } return(x_new) } 
    

    然后在单纯形中随机漫游:

    • 取服从单位指数分布的随机变量xi, i= 1, 2, ..., K.
    • 对于每个 i= 1, 2, ..., K
      • xi ← next_point(xi)
    • Sxi之和
    • ti = xi/S(对于所有 i= 1, 2, ..., K

    ti限制在单纯形中,并会以均匀的静态分布密度来反复遍历整个区域。注意不要每一步都单位化xi;那样会得到非均匀的静态分布。实际上,应该把xi 视为"隐"参数,而ti才给出单纯形中的坐标。

    参看

    外部链接

    • Olshevsky, George,《超空间术语表》中的单纯形(英语)
    • OEIS A35278 给出数字T(n,m) = 二项式系数(n+1,m+1)的三角形;或者说,除去左边的杨辉三角形A007318。 [2]

    参考

  • 相关阅读:
    python中的赋值与深浅拷贝
    PAT甲级:1089 Insert or Merge (25分)
    PAT甲级:1064 Complete Binary Search Tree (30分)
    navicat 15 破解教程
    SQL
    以初学者的角度理解:SQL实现关系除法
    线性回归与梯度下降(ML作业)
    海明码
    CRC校验原理
    Jupyter notebook总是卡在int[*]怎么解决?
  • 原文地址:https://www.cnblogs.com/wintergrass/p/2223460.html
Copyright © 2011-2022 走看看