共变导数(Covariant Derivative)

原文链接

导数是指某一点的导数表示了某点上指定函数的变化率。

比如,要确定某物体的速度在某时刻的加速度,就取时间轴上下一时刻的一个微小增量,然后考察速度的增量和时间增量的比值。如果这个比值比较大,说明单位时间内速度的改变量大,反之就小。注意的是,只有当时间轴上的微小增量的极限趋于零时,这个比值才是考察的时刻的加速度(即速度的导数)。

可以看出,导数的定义与极限的概念是分不开的。而极限的表述最早是由法国人费马给出的。

共变导数则是在流体上定义导数的方法。

在基于欧几里得空间的笛卡尔坐标系里,对向量场求导数的方法与上文类似,即取两个空间坐标相近的点,然后考察其向量差与位置改变的比值。如果位置改变量是无穷小量,那么可以得到该点的导数。

但是,在流形的球面上,位置改变量的计算则根本不切实际,因为当移动一个向量的时候,随着路径的不同,结果根本就不一样。一个向量沿着球面转动一圈,因为曲率不为零,可能根本就不是原来那个向量了。换句话说,在曲面上的每个点上没有统一的坐标系,所以要把坐标系的变化考虑在内。或者说是共变导数是不依赖坐标系的求导方法。

联络(Connection)

联络描述了空间中某一点,对应于另外一点的空间转换。此表述隐含了一些假设。

首先曲面上每一点定义一个相互独立的空间,称为切空间(Tangent Space)。切空间是由该点的所有切向量(Tangent Vector)组成的空间, 这些切向量都是垂直于该点法线方向的向量。其次,定义在不同切空间中的切向量是不能相互运算,比如相加和相减的。因为曲率不加以考虑的话,这些运算都没有意义。

但是,这些不同点的切空间之间是有联系的,这些联系就叫联络。联络可以把无穷接近的两个切空间中的向量,转换到同一个切空间中。联络实际上是反映了切空间的弯曲程度。

有很多种实现联络的方法。但前提是,这些不同切空间中相应的向量的分量是需要可以相互对应的。

如何使用联络定义共变导数? 使用倒三角加上两个位于同一点的向量(比如v,u)来表示。可以写作Dvu,读作向量u沿着向量v的共变导数。定义参考向量v的意义在于,移动后的u向量要额外考虑它原本参考系中的变化(联络,即跟空间的结构变化有关),这是它与普通导数的最大区别。

时间: 2024-10-21 00:00:01

共变导数(Covariant Derivative)的相关文章

Java——协变数组和类型擦除(covariant array ; type erasure)

1.数组的协变性 数组的协变性(covariant)是指: 如果类Base是类Sub的基类,那么Base[]就是Sub[]的基类. 而泛型是不可变的(invariant),List不会是List的基类,更不会是它的子类. 数组的协变性可能会导致一些错误,比如下面的代码: 1 2 3 4 public static void main(String[] args) {     Object[] array = new String[10];     array[0] = 10; } 它是可以编译通

XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem A. Arithmetic Derivative

题目:Problem A. Arithmetic DerivativeInput file: standard inputOutput file: standard inputTime limit: 1 secondMemory limit: 256 mebibytesLets define an arithmetic derivative:? if p = 1 then p0 = 0;? if p is prime then p0 = 1;? if p is not prime then n0

一筐梨子&一筐水果——协变性(covariant)

假设突然看见这个问题.我们常常会想当然. 一个梨子是水果,一筐梨子是一筐水果吗? watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXFqMjA2NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" > 程序中,我们较少使用到协变性(covariant). 一个经典的问题:父类Sup有方法m().有子类Sub public class Cov

Co-variant array conversion from x to y may cause run-time exception

http://stackoverflow.com/questions/8704332/co-variant-array-conversion-from-x-to-y-may-cause-run-time-exception What it means is this Control[] controls = new LinkLabel[10]; // compile time legal controls[0] = new TextBox(); // compile time legal, ru

一筐梨子&一筐水果——协变性(covariant)

如果突然看见这个问题,我们经常会想当然.一个梨子是水果,一筐梨子是一筐水果吗? 程序中,我们较少使用到协变性(covariant).一个经典的问题:父类Sup有方法m(),有子类Sub public class CovariantDemo{ public static void main(String[] args) { Sub[] b = new Sub[10]; Sup[] p = b; p[0] = new Sup(); b[0].m(); } } 有什么问题? b是一筐梨子,p是一筐水果

逆变(contravariant)与协变(covariant)

逆变(contravariant)与协变(covariant)是C#4新增的概念,许多书籍和博客都有讲解,我觉得都没有把它们讲清楚,搞明白了它们,可以更准确地去定义泛型委托和接口,这里我尝试画图详细解析逆变与协变. 变的概念 我们都知道.Net里或者说在OO的世界里,可以安全地把子类的引用赋给父类引用,例如: ? 1 2 3 //父类 = 子类 string str = "string"; object obj = str;//变了 而C#里又有泛型的概念,泛型是对类型系统的进一步抽象

Covariant Returen Types(协变返回类型)

基类virtual func返回类型为某个类(class Super)的ptr或ref,子类重写的virtual func返回类型可改为该类子类(class Sub : public Super)的ptr或ref. class Base { public: virtual Base* clone() const { return new Base(*this); } virtual ~Base() {} }; class Derived : public Base { public: virtu

【找规律】【DFS】XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem A. Arithmetic Derivative

假设一个数有n个质因子a1,a2,..,an,那么n'=Σ(a1*a2*...*an)/ai. 打个表出来,发现一个数x,如果x'=Kx,那么x一定由K个"基础因子"组成. 这些基础因子是2^2,3^3,5^5,7^7,11^11,13^13.只有6个,K不超过30,于是可以dfs. 要注意搜索顺序(每次枚举的时候,都从大于等于前项的开始搜)和可行性剪枝(如果超过r则剪枝,虽说有可能爆long long,但其实整除就可以判,而且没有精度误差). #include<cstdio&g

derivative of cost function for Logistic Regression 逻辑回归代价函数偏导证明