tag: python

Data Preview v0.1 released

2015-08-24

Data Preview is a simple Python GUI program (using tkinter at present, maybe PyQt in the next version) to automatically convert the experimental data (just tsv format in this version) to graph by clicking the filename. A set of data files can also be simply merged together into a single data file with the selected data columns (i.e. variables). The data preprocess function has been proposed to be enhanced ...


量化投资与Python

2015-07-25

  金融对个体而言无非是套利,好处是可以优化整个社会资源的配置。定量投资不同于定性投资,其基于数理模型的判断。从哲学上讲,定性投资的思路更广,但难以做历史回测;定量化对某些投资理念建模,克服了主观判断的偏差。纵观整个市场,投资理念是不断演进和相互博弈的,所以不会有终极的模型。市场波动,人性不变,量化投资并非要用冰冷的模型去感受市场的温度,而是要消除个体的成见和情绪 ...


Why physics students and physicists need python?

2014-10-13

Nowadays, the Python language has become a widely used tool for scientists and engineers, which is fully stacked with powerful support packages, such as numpy and scipy. However, I came across Python due to the need of an easy-to-use web framework until last summer. After several days of trails, I found Python was such an elegent and easy-to-learn language. So I immediately got out of PHP and turned to Python ...

Hermite插值法

2014-12-11

  考察Lagrange和Newton插值多项式时我们限定的插值条件分别是\(L_n(x_i)=f(x_i)\)\(N_n(x_i)=f(x_i)\),也就是说我们要求插值多项式在插值节点处是精确的,但在不少实际问题中需要其在节点处的导数值也精确。导数意味着光滑度,越高阶的导数连续说明节点处越光滑。一般这种对导数值也有要求的插值问题称为Hermite插值,通常研究的是带一阶导数条件的插值。例如,物理学中波跨越界面时,边值条件要求值连续且一阶导连续。解决Hermite插值仍采用的是Lagrange插值多项式基函数的方法。

  给定\(f(x)\)在插值节点\(x_0,x_1,\cdots,x_n\)出的函数值\(y_0,y_1,\cdots,y_n\)及相应的一阶导数\(y'_0,y'_1,\cdots,y'_n\),要求满足以下插值条件

$$H_{2n+1}(x_i)=y_i=f(x_i),H_{2n+1}(x_i)=y'_i=f'(x_i),(i=0,1,\cdots,n)$$
的次数不超过2n+1的插值多项式\(H_{2n+1}(x)\)。设
$$H_ ...


引言-插值

2014-10-14

在我过去两年的科研工作中,数据处理一直是至关重要的环节,但似乎又没有受到足够的重视。学院式教学中,更多注重连续或局部连续的函数的处理,但现实世界似乎更偏爱离散。实验数据总是离散的,我们往往要从这些离散点中提取出某些函数信息,又几乎总是从插值开始。在诸如Origin、Matlab等科研软件盛行的今天,专业人员已经为我们提供了丰富的接口命令(图形或函数化)来完成许多数据处理的繁重工作,以至于大部分时候我们不需要知道其内部的实现细节。然而,在使用这样接口命令时,由于缺乏基本的了解可能会造成严重的计算误差或者其他无意的人为错误 ...


Lagrange插值

2014-10-16

插值问题:已知函数\(y=f(x)\)在区间[a, b]上n+1个互异点(术语为“插值节点”)\(a \le x_0 < x_1 < \cdots < x_n \le b\)的函数值\(f(x_i)\),若存在一个简单函数\(y=y(x)\)经过这n+1个点,即\(y(x_i)=y_i=f(x_i)\),称\(y=y(x)\)\(f(x)\)在这些节点处的插值函数。实际上就是,我们通过实验、测量等手段得到n+1个数据对\((x_i, y_i), i=0,1, \ldots, n\),需要推测其他点的函数值 ...


逐次线性插值

2014-12-01

  Lagrange算法是在n维线性空间中找了一组形式简单对称的基函数,使得插值问题容易计算,一般情况下这个算法已经足够好用了。但存在一个缺点是,如果由于精度不满足要求而临时增加一个插值节点时,所有基函数都得重新计算。我们想,那能不能找到一种改进的算法来避免这种资源浪费呢?实际上这就需要逐次线性插值法来解决,也就是说将高次插值问题逐步转化为线性插值,或者说将两组由k个节点算得的Lagrange插值作为形式节点,再进行一次线性插值来得到k+1个节点时的值...


Newton插值法

2014-12-06

  Lagrange插值法通过选定一组形式对称的插值基函数来线性组合出插值多项式,但问题在于计算量比较大,且容易重复计算,这个问题可以通过逐次线性插值的方法予以解决,由递推关系逐步得到更高次的插值。Newton插值法的显著优势在于:既能得到递推式,又有明确的插值多项式——真是皆大欢喜!

  首先我们知道n+1个节点的插值多项式次数不超过n,Newton插值多项式的构造形式如下:

$$N_n(x)=a_0+a_1(x-x_0)+a_2(x-x_0)(x-x_1)+\cdots+a_n(x-x_0)\cdots(x-x_{n-1})$$
我们自然要问,这样构造的道理在哪?(我不会问“为啥我就想不出来这样构造呢?”) ^_^ 其实,上面的n+1个多项式是线性无关的,故而任何一个n次多项式都可以由之线性组合得到,也即可以作为插值基函数。另外,插值条件\(N_n(x_i)=y_i, i=0,1,2,\cdots,n\) 可以求得系数\(a_i\),有
$$a_0=f(x_0), a_1=\frac{f(x_1)-f(x_0)}{x_1-x_0}, a_2=\cdots$$
再往下待定系数\(a_i\)的形式就比较复杂了,所以先引入差商的概念。

差商

  对于互异节点 ...