姬扬的个人博客分享 http://blog.sciencenet.cn/u/jiyang1971

博文

计算方法之弱水三千 精选

已有 6848 次阅读 2018-10-9 14:57 |个人分类:大众物理学|系统分类:科普集锦

 


 

何不策高足,先登要路津。

 

有一个常见的问题:走过一块麦田,挑选出最大的麦穗。条件是你只有一次机会,不能走回头路,选了以后也不许换。标准的麦穗选择法是:在三分之一的路程里观察,看看最大的麦穗有哪些特征;在接下来的三分之一路程里,验证并修正刚才总结的规律;在最后三分之一路程里,根据这个规律选择最好的结果。

 

麦穗的选择更多是个策略问题,而不是取样问题。取样通常只是这里的观察阶段,而且你也不可能想采样多少就采样多少——采样也是要考虑成本的。

 

为了简单起见,假定我们需要采样的区间在-1+1之间(即$x \in [-1,1]$)。

如果你的测量完全是靠天吃饭(比如说引力波的测量),那就没什么好说的了,把你的测量系统搞好,耐心等待就是了——尽人事以听天命。

如果测量工作只依赖于你自己,而且完全不考虑成本,就可以随机采样,随机地找一个$x$,测量那里的$y$,然后再随机地找下一个$x$、测量下一个$y$,重复这个过程,直到你没有耐心为止。

如果想节省一些时间,减少后期处理数据的麻烦,可以采用等间距取样(比如说,每隔0.1测量一次),然后用插值的方法猜测其他的$y$值。

 

既然考虑用插值法来省事了,那就干脆省事到底吧。怎么才能既省事又不误事呢?省事好说,测量的次数越少,就越省事;不误事就是说别偷懒,动动脑子,选择最好的位置,使得取样值尽可能反映整个区间的性质。话是这么说,但是究竟怎么做呢?

如果你只能测量一次,而且事先对采样区间没有更好的了解,那么,最佳采样点显然就是0这个位置——不偏不倚,允执厥中。

如果你有钱测两次,就要费些神了。0是肯定不能用了,这两个位置应该相对于0是对称的,但也不可能选择-1+1,因为这样做显然太看重边界了。选择-0.5+0.5显然更好一些,因为每个位置都照顾了一半的区间,但是仔细分析,就会觉得还是有改进的余地:-1+1都有一个位置可以照顾到,而0却被两个都关注了,这样的厚此薄彼,真的好吗?

当采样次数更多的时候,需要考虑的事情就更多了,分析起来也就更麻烦。能够确定的是,取样点关于0应该是对称的(如果取样次数是奇数,0这个位置是一定要用的),采样的间隔大致是等间隔的。其他就不好说了。

 

换个方式来讨论这个问题。

假设待测量位于$ [-1,1]$区间,具体形式是已知的,即$y=f(x)$。这个函数可能很复杂,我们想用简单的函数来描述它。怎么办呢?最简单的函数就是由$x$的各种幂函数构成的多项式了,可以用$x$的多项式来描述任何函数。

这个问题有个正式的名称,叫作函数的最佳逼近。有个数学定理说,对于任何连续函数$f(x)$,都可以用一个多项式$P(x)$来逼近,使得二者的差别$|f(x)-P(x)|$小于某个任意给定的数值(Weierstrass定理)。也就是说,只要你愿意,总是可以用多项式来逼近任意一个连续函数的。

可以这样来理解。如果你想描述$f(x)$和某个多项式$P(x)$的差别,最好是能够定量地描述这种差别,也就是说,给它打分(你看,这跟用影响因子来衡量学术期刊的水平是一个道理)。打分的依据是什么?就是$\int (f(x)-P(x))^2dx$。这个积分衡量了两个函数在整个区间上的差别,这个值越小,二者的符合就越好,$P(x)$$f(x)$的逼近也就越好。因为$\int (f(x)-P(x))^2dx=\int f^2(x)dx +\int P^2(x)dx -2\int f(x)P(x)dx$

最简单的多项式是常数多项式$P_0(x)=1$。计算出$\int f(x)P_0(x)dx =\int f(x)dx = 2 c_0$(出现2是因为积分区间是$ [-1,1]$),那么,此时的最佳逼近函数就是$P(x)=c_0P_(x)=c_0$。也就是说,这个函数可以用常数$c_0$描述。

想要做得更好一些,就要用下一个简单多项式了,$P_1(x)=x$。计算$\int [f(x)-c_0P_0(x)]P_1(x)dx=\int [f(x)-c_0]xdx=\frac{2}{3}c_1$$2/3$来自于$\int x^2 dx$),那么,此时的最佳逼近函数就是$P(x)=c_0P_(x)+c_1P_(x)=c_0+c_1x$。多了一个线性项。

也许你已经猜到了,接下来的多项式应该是$x^2$了。计算积分$\int(f(x)-c_0-c_1 x)x^2 dx$,就可以得到相应的系数了。基本上对了,但是要做一些修正,真正用的多项式是$P_2(x)=\frac{1}{2}(3x^2-1)$。原因是这样的,做积分的时候,我们不想每次都要减去以前的各种近似多项式,而是只计算$\int f(x)P_2(x) dx$,最简单的方法就是恰当地选择$P_2(x)$,使得它和低阶多项式的积分为零。

采用类似的方法,可以用更高阶的多项式来逼近。例如,$P_3(x)=\frac{1}{2}(5x^3-3x)$,$P_4(x)=\frac{1}{8}(35x^4-30x^2+3)$,等等。具体形式的选择依据是保证这些多项式是正交的,也就是说,只要$i\neq j$,就有$\int P_i(x)P_j(x)dx =0$。对于$i=j$,有$P^2_i(x)=\frac{2}{2i+1}$

这些正交多项式$P_n(x)$就是著名的勒让德函数,利用它们可以逼近任何的连续函数,即$f(x)\approx c_0+c_1x+c_2(3x^2-1)/2+\cdots =\sum _i c_i P_i(x)$

某些函数看起来很像一些特殊的函数,例如$(1-x^2)^{-1/2}$、$e^{-x}$或者$e^{-x^2}$,那么就可以把它们表示为$f(x)=(1-x^2)^{-1/2}g(x)$,然后集中研究$g(x)$的性质。这时候,需要引入其他种类的正交多项式,例如车比雪夫多项式、拉盖尔多项式或者厄密多项式。

 

兜了一大圈,我们还是继续讨论如何取样吧。

我们的问题是,在区间$[-1,1]$里选择$n$个位置取样,怎样才能达到最好的效果?上面的正交多项式逼近是一种方法,但是它需要知道整个区间上的函数值,其实是马后炮。为了不当事后诸葛亮,考虑这样一种判据:选择的$n$点取样能够最好地给出$y=f(x)$在区间$[-1,1]$上的积分值,这就是高斯积分问题。

$n$点取样就是得到$n$$(x_i,y_i)$,由此可以构造一个$n-1$次多项式$g(x)$(采用拉格朗日插值法),使得$g(x)$的积分尽可能地接近$f(x)$的积分。也就是说,$\int f(x) dx = \sum_i A_iy_i$。关键在于选择哪些$x_i$

对于拉格朗日插值法,$f(x)-g(x)$正比于$\prod _i (x-x_i)$(稍后再解释具体含义),选择$x_i$使之成为$n$次正交多项式的零点,就可以让二者的差别(在积分的意义上)尽可能地小:$w(x)=\prod _i (x-x_i)$是个$n$次多项式,还是正交的$n$次多项式,它和任意的$n-1$次多项式(以及更低的次数)都是正交的。

换个方式来看,对次数不大于$2n-1$的多项式$f(x)$进行因式分解,$f(x)=q(x)w(x)+r(x)$,乘式$q(x)$和余式$r(x)$的次数都不大于$n-1$$\int f(x)dx =\int q(x)w(x)dx +\int r(x)dx = \int r(x) dx$。因为$n$取样的位置$x_i$已经确定了,就可以选择权重$A_i$使得$\int r(x) dx = \sum_i A_iy_i$对于所有的$n-1$次多项式都成立。也就是说,$\sum_i A_ix^k_i = B_k$,其中$B_k =\int x^k dx$是已知的数值。这就是包含$n$个未知数$A_i$$n$个线性方程组,就可以求出每个$A_i$了。

总而言之,恰当地选择$n$个取样点,能够让积分达到$2n-1$次的代数精度:只要多项式$f(x)$的次数不大于$2n-1$$\int f(x) dx = \sum_i A_iy_i$就是精确的。正确的位置(高斯点)就是$n$次正交多项式的零点。如果你随便选择取样点,通常只能达到$n$次的代数精度。

高斯积分的选点就像人生道路的选择,正确的选择可以帮助你多快好省地实现目标。

 



https://blog.sciencenet.cn/blog-1319915-1139837.html

上一篇:谈谈实验教学
下一篇:推荐《黑道白道就是无间道》
收藏 IP: 124.193.162.*| 热度|

17 徐传胜 孙冰 刘全慧 孙杨 雷蕴奇 黄永义 李文浩 杨正瓴 郑永军 史晓雷 李颖业 张江敏 刘洋 鲍海飞 赵琛烜 张鹰 zjzhaokeqin

该博文允许注册用户评论 请点击登录 评论 (7 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-25 18:18

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部