谢谢题主把这个有意义的问题提出来,我认为题主问的是为什么对初等函数积分比微分要难的问题。这是一个我一直想弄明白的问题,于是借这个机会读了几篇文章,下面是一点见解:
1. 做初等函数微分的时候我们在做什么:
这一段是我自己教课的时候意识到的一点理解,虽然也许是很多人的常识,不过仍然值得简单介绍一下。
回想我们在求一个函数微分的解析表达式的时候,参考的是如下的规则:
导数公式表里面大致说来只有方根、多项式、指数函数和对数函数,所以通常我们所说的初等函数即是把这三种函数用加法、乘除法,以及函数的复合,像俄罗斯套娃一样组合成一个复杂的函数。比如:
这个函数的构成方式可以理解成:
像剥洋葱一样把这个函数层层剥开,这里面递归的味道就很浓了。如果想要求这个函数的导数,那么第一步是严格按照我上面写的古怪格式,用链式法则对求导,得到
其中。第一步完成之后SQRT的导数查表就可以得到;而的导数用同样的方法,
, 其中。接下来再重复上面的剥洋葱-使用法则-查表过程,将计算逐渐向深层进行,最后把所有的计算结果收集到一起,于是就得到了f的导数。
以上过程总结起来主要有以下三点值得注意的地方:
但是以上这三个现象,在积分的问题中都是不存在的。
2. 第一个困难:初等函数的不定积分(原函数)通常不是初等函数
一般来说,如果一个初等函数有一个不定积分也是某种形式的初等函数,这会对它本身的形式带来非常大的限制。比如:
诸如此类现象,我们做分部积分或者变量替换的时候多多少少都有点感觉,但是实际上归纳起来并不是很容易。严格的描述需要使用 域扩张 之类的代数语言,但是一个粗略的描述倒也是可能的:
在研究微分操作的代数中,把上面观察到的现象描述为一个Liouville定理:
如果f是某一个在某个微分域 K里的初等函数,假如我们允许f表达式中的“数字”是复数(这个并不是一个特别重要的要求),而且它有一个也是初等函数的不定积分g,即,g可能比f要更为“复杂”,即g在K的某个添加了K中函数的求根、对数、指数运算的扩域 E中。那么f可以写成的形式, 其中是数,是某些在K中的初等函数。
举两个非常经典的例子来说明如何使用这个定理(为了可读性牺牲了一些严谨,并且一定有计算错误,请指正):
3. 第二个困难:求函数的不定积分与具体的函数有关
限于篇幅,在这里仅仅简单提一两句。其他的回答都有说明,很多时候,即使某个被积函数的某种代数性质会带来它的某个不定积分的某些性质,比如说:
第一类椭圆积分的加法公式:
其中
这个古怪的公式如果按照现在的观点来看,是由于和它被积函数有关的代数曲线的几何结构造成的。由此观之,积分在很多情况下,是远比求导深刻得多的一个问题。
4. 第四个困难:某些问题在算法上的不可判定性
这个问题看起来很简单,但是实际上可能非常复杂。比如,我有一个初等函数,初中生应该都知道它大多数情况下等于0(就当作它是恒为0好了)。但是如果我有一个复杂的初等函数表达式,它是否恒为0是一个很难判断的问题。有一个Richardson定理,大致说,如果用以及全部有理数通过加减乘除和函数复合构成的一个函数,是不存在一个算法来判定它是否恒为0的。以下有两个道听途说的事情不知是否正确:
参考文献:
Bronstein, Manuel: Symbolic Integration I Transcendental Functions
Risch, Robert H.: THE PROBLEM OF INTEGRATION IN FINITE TERMS
Rosenlicht, Maxwell: Integration in Finite Terms
微分和积分、开方和乘方,这些都不算什么。
尤其开方和乘方,这要按计算机算法的说法,当你知道开方的竖式计算法时,两者其实都只是O(N)的消耗,其中N是数字的位数——开方仅仅比乘方的常数大了一点点而已。
真正对比夸张的,是密码学专家绞尽脑汁寻觅的“单向函数”。
一个经典的单向函数是这样的:请计算112X1234X1239087X120385X123085324X109328403X2301934719075X293473987402389745X1290370938741098740518734018X137109284710287340182374,给出它的计算结果——这不难吧?
那好,现在咱做个反向操作:请因式分解123098340498562094358102938410897364981261593749123784230498520498752048752347209485702938746092874568972743501874091243857。
怎么样?靠手算,全人类一起算上50年,可能算出来吗?
这类正向求值很容易、但逆运算却难到近乎不可能的函数,就是密码学专家绞尽脑汁寻觅的“单向函数”。
比如,我前面举的那个“乘法”和“因式分解”的例子,就是RSA算法所依据的基本原理。
当然,为了用于加密,它玩的要更花一些。这是因为,单纯的一个方向容易、另一个方向难到不可思议,这并不能拿来加密。
想要拿来加密,就需要进一步改造这个单向函数,使得它变成另一种形式。此时,如果知道另外一个数字(也就是密钥),反向计算也会变得非常容易;但如果不知道……您就慢慢因式分解吧。
满足这个特殊要求的单向函数被称为“陷门函数”。
类似的,基于椭圆曲线的非对称加密算法ECC,它所利用的陷门函数比RSA更强大。据说理论上160位ECC的安全性相当于1024位RSA、210位ECC的安全性相当于2048位RSA。
那么,为什么“单向函数”求解g=f(x)极其容易、但想计算g'=f'(x)就常常要全世界的计算机一起算到宇宙毁灭呢?
个人观点——你完全可以当成是一本正经的胡说八道——是:单向函数的正向计算是一个熵增的过程;而其逆向计算却是要算出系统初态,也就是熵减。
比如,乘法,几个初值经过一定的计算,“充分混合”就得到了乘积,这个过程很容易;而因式分解呢,却要从一锅粥里面算出初始值来。
更形象一点,你买50斤红豆,50斤绿豆,往一块一倒,拿搅拌机一搅,把它们搅合匀了——这很容易,对吧。
现在,我要你再把这100斤红绿豆混合物分离开来,给我捡出50斤绿豆,不要见一颗红豆在里面;再检出50斤红豆,不要见一颗绿豆在里面——做到了,我就承认你是镇关西!
哈哈,难吧?
这不算难。
再来做一道难题:台球玩家一竿子下去,桌面成了这个样子。
请计算台球的原始摆位和玩家第一杆的击球点、出杆方向和击球力度。
太难了?
来个“简单”点的:
根据这条双摆曲线,计算双摆初始参数。精确到足够恢复这条曲线就行。
你看,初等积分-微分的难度对比,比这个是不是差远了?
微分说白了,就是“想办法列出双摆运动方程”;而积分呢,就是“按这个方程计算若干时间后、双摆系统的终态”——初等范围内,列出运动方程实在太简单了;可计算终态呢……那就要实实在在的模拟整个熵增过程。
当然,你还不能直接模拟。直接模拟那叫物理实验,B格不够的。你得头脑模拟、忽略中间过程、直接在终点等着——啊哈,其实就是证明个极限嘛,可难死我了……
但很多情况下,积分计算还是有迹可循的——没办法拿来当密码学的单向函数用。
什么能当“单向函数”呢?
喏,就上面的,看着摆锤终态,算初始状态!
当然,这个单向函数没法拿来加密。因为加完密我们自己也解不开了。
想要解开,就得继续绞尽脑汁,找到一个“后门”;知道这个“后门”,逆向计算就变得很容易;不知道……那就算到宇宙毁灭吧。
举例来说,像这个双摆,如果我们想利用它来加密的话,可以这样:我们用初始参数(摆长、起始位置、初始速度)当密码,用户数据d当时长;那么加密后的结果就是这样的一个双摆在时间d时的坐标。
那么,当不知道初始设置时,攻击者就只能在猜时长的同时、把摆长等初始参数也猜出来,这显然是极其困难的。
而当我们知道初始设置时,解密就是已知双摆初始状态和最终位置,求到达最终位置需要多少时间。这显然就容易多了(其实还是算不出来:这个例子只是为了说明“陷门函数”是怎么回事;双摆系统虽然存在混沌,但并不能拿来加密。比如它的位置可以重合,你看双摆图像有多少交叉点,也就是逆向计算在这里是可能出现单对多映射的,那么信息就解不出来了)。
总之,逆运算相比正向运算难,几乎都是因为正向运算是熵增,是从清晰的、分立的初态去计算终态;而逆向运算则对应熵减,要从终态反推初态。
而熵减一般来说总是比熵增难的:原因也很简单,熵增相当于把信息演化、分解然后混合存储在大量实体的一切细节参数中,熵增的结果肯定比初态要混乱,这就是初等积分难于微分的原因;而熵减呢,则要搜集一切细节信息、创造性的利用知识反推上一步、上上一步……
这中间存在两个困难:
一是信息虽然没有丢失,但却越来越难于提取(比如,想要反推台球桌初始信息,你可能需要考察每一根绒毛、每一粒灰尘的状态、并为它们建立运动学方程、且必须考虑到每一根绒毛的反弹以及非线性形变:大概神仙真的能做的这些吧);
二是初态到终态往往是单个或少量参数的扩散过程,我们甚至经常可以丢弃“扩散结果”,只关注那十几个台球就行;但终态到初态就必须考虑海量的实体/参数,包括但不限于每个台球的位置、桌面上每根绒毛的倒伏方向和角度以及室内每个人的每口呼吸对空气的扰动,等等。这些细节,你丢掉一半或许也没太大关系,足够达到相当不错的精度了;但全部丢弃的话,你算出来的肯定就差太多了。然而人类的大脑,在处理少量实体的、极其有限的交互式足够强大,但却完全无法处理大量实体的复杂交互。
换句话说,我们的大脑压根就无法理解海量信息的处理过程——甚至绝大多数人压根都意识不到这是个非常困难的问题——更别说正确处理它们、将扩散后的信息还原了。
说的概括一点:熵减比熵增难,是因为“覆水难收”。
不局限在初等函数,考虑亚纯函数、纯函数,在收敛域积分还是挺容易的事情。
比如说函数 ,这是一个解析函数,考虑展开
那么原函数只需要按照多项式积分公式就行了
只不过 不是一个初等函数。
其实仔细想,正余弦函数、指对数函数哪一个对于人类而言是很容易求值的?(不依赖计算机)相对于多项式函数,三角函数、指对数函数其实已经很“不初等”了,它们最特别的地方无非是
求导之后没跑远,还在它们围成的小圈子内。而至于其他亚纯函数,求导只会不断冒出新的级数函数,这是不好把握的。
诚然,为原函数找到一个封闭的形式显得简洁漂亮,但对于计算帮助不是很大。比如求解三次、四次代数方程,大概率没人愿意用求根公式。不过,数学对封闭形式这点执着还是可以理解的。
从道理来说,早减晚增本身是没啥毛病的,毕竟只是个选项,丰俭由人。
大家怕的是某些人通过这些选项,再加点私货。而且这个说法和推迟退休一起出来,由不得大家多想。
按照目前的舆论情况,如果你敢允许早退减拿,估计只要不在体制内的人就统统早退了,反正也没啥规定领了社保就不能接着打工,对吧?甚至还可以把原来交给社保的那块放自己口袋。
所以,让你早退减拿是不可能的,忽悠大家晚退多拿的可能性比较大。
当地居民就偷着乐去吧!