程式人破解「油价公式」:一定涨!

663次浏览
文/陈锺诚
程式人破解「油价公式」:一定涨!
近来、每当中油油价要调涨时,很多新闻都会报导或批评,例如我们常常会听到以下说法:「甚幺都涨、就是薪水不涨」等等的抱怨。
但是、您了解中油油价调涨的基準与方式是甚幺吗?其中是否藏有某些您不知道的秘密呢?在本文中,我们将透过「程式人的专业角度」,为您解读油价公式内所隐藏的秘密!但是在此之前,先让我们介绍一下这个祕密背后所需要的「数学背景」。递归关係在「资讯类科系」 的课程当中,「离散数学」 是一们重要的数学课, 其中有个「递归关係式」的数学函数,可以用来计算程式的执行效能, 但是在本文中,我们将改用「递归关係」来为「中油的油价公式」进行除错,证明「中油的油价公式会造成几何暴涨」。
首先让我们来看看甚幺是「递归关係」,先从一个比较简单的例子开始:
问题 1. 假如有只母鸡,从成年开始他每天下一个蛋,那幺在成年后第 n 天他总共下了几个蛋呢?
解答:关于这个问题,答案非常简单,很多人一看就知道是 n 个蛋了。
但是让我们姑且用递归关係来写出这个问题的数学式:
T = T + 1
T = 1
为了求解这样的算式,我们可以将 n 代入 1, 2, 3, ….,然后列表如下:
T = 1
T = T + 1
T = T + 1
T = T + 1
…..
T = T + 1
于是、您可以透过由上而下的计算方式,算出这个「递归关係」的解答,如下所示:
T = T + 1 = 1 + 1 = 2
T = T + 1 = 2 + 1 = 3
T = T + 1 = 3 + 1 = 4
….
很直觉的,您应该会猜测 T 的解答就是 n,这个猜测是没错的!
上述递归关係的解答 T 是个线性函数,也就是国中课程当中所说的「算术级数」。
接着、让我们再来看看一种会造成「几何级数」的递归关係,同样的,让我们先看看下列问题:
问题 2. 假如培养皿中有只细菌、该细菌每分钟分裂一次,请问在第 n 分钟的时候,共有几只细菌?
解答:我们可以将这个问题写成以下的递归关係:
T = 2 * T
T = 1
于是我们可以列出前几项的结果如下:
T = 1
T = 2*T = 2 * 1 = 2
T = 2*T = 2 * 2 = 4
T = 2*T = 2 * 4 = 8
….
如果您观察一下上述列表,可能会猜测
程式人破解「油价公式」:一定涨!
,这个猜测也是对的,这类的函数称为几何级数。
着名的社会学家「马尔萨斯」就在其名着「人口论」当中,提出了一个「广为人知」的论点,其推论如下:
粮食的增长函数是算术级数,而人口的增长函数是几何几数,几何级数后期的增长会远超过算术级数, 因此粮食最后必然会不足,于是「饑荒、战争与大规模的疾病」将会是不可避免的结果。
另外、电脑在表示数字的时候,由于採用固定位元数的方式,因此都会有一些误差,特别是像π这类的 无理数,更是无法用电脑精确表示,这些误差如果经过某些递归关係放大之后,很可能会造成「差之毫釐、 失之千里」的结果。这类误差放大的研究,甚至导致了学术上「混沌理论」的重要进展!
中油的油价调涨公式
那幺、这些结果与中油的油价公式有何关係呢?让我们来看看中油的油价,是如何调整的,在中油的 国内汽、柴油浮动油价调整机制作业原则 这份 PDF 文件当中,有一段令人难以解读的中文如下:一、 调价指标:Platts报导之 Dubai 及 Brent均价,分别以70 %及30%权重计算,取小数二位,採四捨五入。二、 调价幅度:每週调价幅度取「调价指标当週均价乘以当週汇率均价与调价指标前週均价乘以前週汇率均价比较」之80%变动幅度计算,取小数二位,採四捨五入。三、 调价金额:依「92 无铅汽油及高级柴油还原依机制计算应调整价格之税前批售价格」乘以「调价幅度」,分别计算 92无铅汽油及高级柴油税前批售价格,再加上税费换算 零售价,据以计算调价金额。
由于这段话实在令人难懂,所以让我们稍为进行一下数学定义,以数学的方式解读这段「自然语言」,解读前首先让我们定义几个变数:P = 本期价格 = PP’ = 上期价格 = PC = 本期国际均价 = CC’ = 上期国际均价 = C
以上的的国际均价 C 即为第一项所称之调价指标。根据上述定义,则调价幅度的数学式解读如下:
/P’ = /C’ * 0.8
也就是
调价幅度 = /上期价格 P’ = /前期调价指标 C’ * 80%
将上述数学式移项调整一下,可得下列数学式:
P = P’ + P’ * /C’ * 0.8
假如那段「令人难以解读的中文」之数学式真的如以上所解读的,那幺我们就可以透过电脑计算油价,并且可以进行模拟。
以程式模拟涨跌过程
于是我写了一个简单的 C 语言程式以模拟整个油价的调整过程,在程式中我们让油价以正弦函数 2 + sin 的方式震荡, 这个正弦函数是一个必然介于 1 到 3 之间的函数。但是、模拟的结果肯定会让人吓一大跳:
#include
#include
double gen {
doubl p=1.0, p1=1.0, c=1.0, c1=1.0;
int t;
for{
gen;
}
虽然在模拟过程当中,国际油价始终在 1 元到 3 元之间震荡,但是经过了很多期之后,整个国内油价还是暴涨, 从最初 2.47 元 ,到 500 期时上涨到 397.04 元 ,然后 到了 1000 期时更暴涨到 174551.80 元 。
执行方法与指令
D:\\Dropbox\\Public\\pmag\\201307\\code>gcc oil.c -o oil
D:\\Dropbox\\Public\\pmag\\201307\\code>oil > oil.lst
执行结果摘录
t=1 : c= 2.84 p= 2.47
t=2 : c= 2.91 p= 2.52
t=3 : c= 2.14 p= 1.99
t=4 : c= 1.24 p= 1.32
t=5 : c= 1.04 p= 1.15
t=6 : c= 1.72 p= 1.75
t=7 : c= 2.66 p= 2.51
t=8 : c= 2.99 p= 2.76
t=9 : c= 2.41 p= 2.34
t=10 : c= 1.46 p= 1.59

t=500 : c= 1.53 p=397.04
t=501 : c= 1.00 p=287.44
t=502 : c= 1.39 p=376.22
t=503 : c= 2.34 p=581.21
t=504 : c= 2.97 p=707.73
t=505 : c= 2.71 p=658.28
t=506 : c= 1.80 p=480.40
t=507 : c= 1.07 p=324.10
t=508 : c= 1.19 p=354.96
t=509 : c= 2.06 p=561.54
t=510 : c= 2.87 p=738.31

t=990 : c= 1.61 p=98834.43
t=991 : c= 1.01 p=69539.87
t=992 : c= 1.32 p=86448.98
t=993 : c= 2.25 p=135085.66
t=994 : c= 2.95 p=168513.04
t=995 : c= 2.77 p=160415.99
t=996 : c= 1.89 p=119299.47
t=997 : c= 1.10 p=79653.27
t=998 : c= 1.14 p=82110.42
t=999 : c= 1.97 p=129690.29
t=1000 : c= 2.83 p=174551.80油价公式的问题
这个模拟过程告诉我们,中油的油价调整公式的设计,会有某种误差放大效果,而且这种放大效果并非上下一致的,而是向上放大的情况较严重,这与达尔文进化论中的「适者生存、而且会产生更多后代」 有点类似,都是一种随机性的几何上涨的过程,因此才会造成后期的暴涨。
这个现象并非我所发现的,而是我在 MR. OTTER 在「欧特先生本性难移」网誌的 中油油价公式,创造永远跌不回去的油价 一文中所看到的, 我只是将该文用程式人的方式重新解读一遍而已!
透过这个油价的範例,相信您应该可以看到「递归运算式」千变万化的一面,在设计制度时也会更小心一些, 以免不小心落入几何暴涨的陷阱,造成毁灭性的灾难啊!
疑问与解决办法
在上述的油价调整公式之设计中,调价幅度以 80% 计算,似乎是为了让油价不要太快上涨或下跌,以免冲击太大,但事实上这个方式反而是造成油价暴涨的元凶,如果将调价幅度改以 100% 计算,反而不容易有暴涨的问题。
为甚幺呢?让我们举一个简单的例子,假设有某次波动,涨跌各一次,先涨了 100% 再跌了 50%,这时价格应该是 200% * 50% = 2 * 0.5 = 1, 也就是价格会回到原点,但是如果我们将调价幅度以 80% 计算,那幺就会变成 1.8 * 0.6 = 1.08,并没有回到原价,而是涨了 8%,所以 这个看来是好意的 80% 调价幅度,其实隐藏了爆涨的种子,一但经过很多轮的涨跌之后,就可能造成国际价格不变,但国内价格却涨翻天的情况。
不过如果国际油价是一路慢慢上涨或下跌,而没有震荡情况的话,那幺中油油价只会一路慢慢跟随,而不会有涨翻天的情况!
但是、这个公式每週都至少用一次,那从开始实施浮动油价之后,应该也有几百次的调整了,那幺为何一直没有发现暴涨现象呢? 这个问题根据我的猜测,很可能是因为 国内汽、柴油浮动油价调整机制作业原则 这份 PDF 文件的后半部,还有一条重要的规定如下:七、各週调整后 92无铅汽油、高级柴油零售价换算税前批售价格,以亚邻竞争国当週税前价之最低价做为浮动油价调整的上限。
由于被这个第七条压住了,所以油价并没有暴涨,但是这样的做法显然很没道理,先设计一个有问题会暴涨的公式,然后再用一个额外的规定压住它,这真的是非常奇怪不合理的想法!
事实上,採用「递归数学式」有时很难控制得很好,如果真的要只是要缓和上涨与下跌的幅度,那不如採用「移动平均线」的方式,例如根据 前 5 期国际油价平均值,加上一定比例的利润率做为油价,就不会有这种几何暴涨的现象了。
如果用数学表示这种锁定国际油价移动平均线的方法,可以用下列「没有递归」的数学式表示:
P = 1.05 * [C+C+C+C+C] / 5
由于上述算式的右端没有 P 之类的函数存在,而且 C 的计算也与国内油价 P 无关,如此就不会因为「回馈效应」而造成几何暴涨了!
当然,假如我们对上述 国内汽、柴油浮动油价调整机制作业原则 的「中文」理解错误的话,那本文的推论就可能是错误的。因此我们希望中油 与相关单位能够澄清一下,最好能将该文的「递归数学式」写出来,让大家都能看得更清楚明白啊!

相关推荐


上一篇: 下一篇: