设万维读者为首页 万维读者网 -- 全球华人的精神家园 广告服务 联系我们 关于万维
 
首  页 新  闻 视  频 博  客 论  坛 分类广告 购  物
搜索>> 发表日志 控制面板 个人相册 给我留言
帮助 退出
 
0+1  
有感而发, 可多可少  
网络日志正文
华尔街的数学(7) 不厌其"烦" 2009-09-18 16:49:07

公司被人买下, 换了老板. 他做过一个固定利率(FRM) Prepayment 模型, 程序是用C++写的. 他叫我用他的框架做个可调利率(ARM)的模型, 即两者必须用同一程序, 同时还要写成C++程序.

 

工作的第一步是读懂他的模型, 这步不难. 因为模型测试必须在 Unix 上用 C++ , 所以在开始建立模型之前还必须读懂他的程序. 读着读着就问题来了, 模型中的对数和指数函数全部换成了部分分式, 即两个多项式之商. 这想来是用什么恒等式推出来的. 我想凭我的功力, 应该没问题. 结果根本不可能, 我最后猜测, 这是某种近似公式. 但准确公式在那儿, 为什么要近似, 我实在想不出, 我只好去问老板怎么回事. 答案出乎意料的简单, 节约 CPU.

 

他一语道破天机后, 其余的道理就很容易想明白了. 所谓准确公式, 实际上只是方便的公式而已. 这种涉及到人类思维的模型, 根本不可能真正准确. 这些任何语言中都有的现成函数, 尽管直接使用很方便且精炼, 但极其耗费时间. 算这些东西计算机也没有好办法, 只能用级数展开. 它与加减乘相比, 时间可多化几十甚至100 . 换成部分分式后, 尽管看起来麻烦多了, 但十几个加减乘除, 花的时间比那函数还是要少的多. 我老板把这些部分分式的系数通过最小二乘法来确定, 得到精度非常高.

 

            X 的低次方, 比如 4, 如写成X**4, 看上去很漂亮, 但耗时极多. 自从知道了地雷的秘密, 我就把它写成X*X*X*X, 甚至把以前写的程序都一一改过来, 否则简直有一种罪恶感. 但对于多项式, 还有更进一步的优化方法, 在大部分关于数值计算的书中都能找到. 假定是个4次多项式, 如写成 a + b X + C XX + d XXX + e XXXX, 尽管比指数形式要快得多, 但还能继续优化. 我做过检验, 计算机做加减乘的时间是一样的, 所以这相当于14次加法. 但如写成 a + X (b + X ( c + X (d + e X))), 只做 8 次加法, 改进幅度远大于许多人的想象. 一般来说, 对一个 N 次多项式, 前者要做 N(N+3)/2 次加法, 后者只要做 2N 次加法, 即使 N 只是 4 这种不算大的数字, 差别已经十分巨大.

 

计算机和人一样, 做除法特别慢. 根据《十万个为什么》, 几十年前的计算机,除法和加法的差别是 1:5. 对于现代化计算机, 这比例大约是 1: 2.3, 所以减少除法运算是节约 CPU 的一个重要方面. 我的程序中除以 2 从来是写成乘以 0.5, 除以3就要看我心情了. 数值计算中常用的 Simpson 积分, 前面有个除以三, 我向来是不做的, 要等到积分收敛后再除, 只除一次. 如果迭代一共进行了20, 这就节约了44次加减乘. 我还从一位计算机专家那儿学到这么一招. C C++ , 假如有一项 C/3, 计算机就会任劳任怨地每次都给你做一遍除法. 但是如写成 C * (1/3), 这除法就会在编译(Compile)时完成, 在实际运算时只要做一次乘法就可以了.

 

有一次, 老板让我看他写的一段程序, 其中有 exp(X), X 大于零. 他将大于一的部分用现成的函数算, 把计算精度较高且使用频率也较高的小于一的部分用上下各四次的部分分式来近似:

(1 + X (b + X (c + X (d +e X)))) / (1 - X (b + X (c - X (d +e X)))).

16 次加法和一次除法. 我将它改成

Y = X * X

 U = 1 + Y (c + e Y)

 V = X (b + d Y).

整个表达式成为 (U + V) / (U – V), 一共 10 次加法,一次除法. 除去无法可想的除法, 其余部分减少了 37.5%. 在这方面颇为厉害的老板对这一改进还是刮目相看的.

 

            这位老板是研究场论的理论物理博士, 理论功底相当坚实, 他曾证明过Ho-Lee 模型与路径无关的充分条件. 用最小二乘法确定部分分式的系数, 从没在文献中见过, 很可能是他的原创. 尽管它只用到了高中代数这一碗水, 但要想到这一点, 没有一桶水是难以想象的. 要想出这儿提到的各种优化, 对计算机的计算原理必须相当熟悉, 但要理解他们, 需要的只是高中甚至初中代数的知识.

浏览(2309) (0) 评论(5)
发表评论
文章评论
作者:just4look 留言时间:2009-09-26 23:03:03
这些不是统计的课,数学系或计算机系的基础课中都有,要算的话也算计算数学专业的,你说的这些东西上面都有。

不过做精确解的也要小心,因为计算机不懂实数只懂浮点数,按数学公式直接代入程序经常会得到与正确结果很远的数的,数值分析讲浮点数的部分应该有这样的例子。

我是学数学的,一辈子学数学,教数学,还写些程序,多交流了。
回复 | 0
作者:just4look 留言时间:2009-09-26 22:48:36
数值分析是指Numerical Analysis, 我提到是指多项式逼近和内插之类的东西,里面当然要做误差分析的。
回复 | 0
作者:0+1 留言时间:2009-09-20 06:26:08
just4look:
我想你是对的, 你是指误差分析等等?我甚至不是统计科班出身,我是做严格解的.这种分析对我来说学起来并不难,但因为没经过课堂训练,有时候用词不是行话,会被内行人看出破绽.
回复 | 0
作者:just4look 留言时间:2009-09-19 23:15:36
做这么多了,好象没学过基本的数值分析,令人惊奇。
回复 | 0
作者:老王同学 留言时间:2009-09-18 18:39:03
二十年前我们还可以交流一下。那时我们天天琢磨怎么省CPU算得快。
那些基本的方法,写FORTRAN时奏用过了。
现在都随着米粥流走廖。恍如隔世啊,嘿嘿
回复 | 0
我的名片
0+1
注册日期: 2009-08-01
访问总量: 813,770 次
点击查看我的个人资料
Calendar
最新发布
· 太太的高见
· 高手在民间!
· 当书中出现错误
· 苏埃友谊万岁!
· 广州地铁的闹剧
· 下有对策,上无政策?
· 管的太宽了!
分类目录
【埃及-约旦】
· 苏埃友谊万岁!
· Made in China
· 古埃及 – 科学和伪科学之集大成
· 伪科学比没有科学更可怕
· 埃及导游贾宝玉
· 真真假假的阿部辛贝勒神庙
· 为什么阿斯旺的酒店都在尼罗河东
【美国政治】
· 管的太宽了!
· 活该!
· 都不是好东西!
· 大厦将倾,独木能支
· 封口费造假帐合算吗?
· Hogan 州长
· “好东西”?
· 另类的清廉
· 另类的贪腐
· 都不是好东西
【2024奥运】
· 妄议奥运(二)
· 妄议奥运(一)
· 她又来了!
· 小国的奥运金牌
· 这个冠军不孤独
· 既生瑜,何生亮
· 我看着他打破世界记录
· 祝贺美国终于“第一名”
· 二比二
· 全红婵和周洋
【难题】
· “难题”(3)-- 意外的惊喜(解答
· “难题”(3)-- 意外的惊喜
· “难题”(2) -- 鸡还是蛋 (解答
· “难题”(2)-- 鸡还是蛋
· “难题”(1)-- “简单”的极限题(
· “难题”(1)-- “简单”的极限题
【奇葩总统】
· 奇葩总统(1)- 股票总统
【最强大脑】
· 最强大脑 -- 色块迷踪(续)
· 最强大脑 -- 色块迷踪
· 最强大脑 -- 复活
· 最强大脑 -- 迷走点线
· 最强大脑 -- 珍稀足迹
· 最强大脑 -- 龟文古迹
· 最强大脑 -- 知己不知彼
· 最强大脑 -- 数字谜盘
· 最强大脑 -- 入场式
【书摘】
· 《华尔街数学》书摘 -- 暗示的力
· 《华尔街数学》书摘 -- 饮水不忘
· 《华尔街数学》书摘 -- 书缘
· 华尔街数学 -- 我的数学人生
【桥牌“外交”】
· 桥牌“外交”-- H先生
· 桥牌“外交”-- C先生
· 桥牌“外交”-- R先生
· 桥牌“外交”-- 引子
【脑筋不用急转弯 -- 续二】
· 24史
· 科学家的思考
· 朝四暮三
· 纸上谈兵?
· 为什么床铺死都不公布税表
· 质疑测量金字塔高度
· 如何用数学手段消除循环赛假球
· 如何尽快在大学新生中找出乙肝患
【我的大学 -- 续一】
· 太太太感谢您了!
· 饮水不忘掘井人
· 我的复旦梦
· 世界读书日
· 暗示的力量(2)
· 苏步青大师
· 久有凌云志,重翻几何书
· 人名不译
· 生成函数 -- 杀牛的鸡刀
· 欧拉定理的证明
【人间 -- 续二】
· 战俘 – 一个沉重的话题
· 我自认为相当理智和客观
· 一叶知秋
· 锦上添花和雪中送炭
· 异曲同工(三则)
· 社区的地球日
· 淡泊天涯
· 源于生活,高于生活
· 得理不饶航空公司
· 我几乎撒谎 -- 与大家共勉
【脑筋不用急转弯 -- 续一】
· 从统计学看国人的冷漠
· 一波四折
· 考考大家的想象力 (附“答案”)
· 毒酒和老鼠 -- 据 KM 说是 GS 的
【往事越千年 -- 续一】
· 昆仑关大捷和《血染的风采》
· 歌剧演员和歌唱演员
· 我的超级记性
· We are doing the impossible
· 上海人的体育辉煌
· 大浪淘沙
· 我为革命下厨房
【Alaska 之旅】
· Alaska 之旅(3)--前人栽树,后
· Alaska 之旅(2)--一国两制害死
· Alaska 之旅(1)-- 终于露馅
【莫谈国是】
· 打死卞校长需要老毛圣旨吗?
· 蛮不讲理知“劲草”
· 重贴领导指示
· Hooter
· 我为“86万”叫好
· 领导指示。。。
· 重要的一年
· 随机抽查
· 三位知识分子的遗产
· 为公布100名红色通缉人员叫好
【(不是我的)童年 -- 续一】
· 小朋友的高见
· 这次不扣钱
· 女儿的“科研成果”
· 一家三口数学竞赛,我居然只拿了
· 活学活用
· Email from Santa
· “著名”泥塑艺术家
· 女儿的幽默
· 小狗不会告状
· 美国校车补遗
【脑筋不用急转弯】
· 气死数学家
· 好人坏人
· 抽水马桶史话 -- 山寨版
· 前几天,我打了一幅臭牌
· 911 能减少贸易赤字?
【人间 -- 续一】
· 桥牌中的运气(续)
· 向桃园机场致敬!
· 好记性不如烂笔头?
· 苦不能苦孩子,穷不能穷教育
· 酒文化
· 买车记
· 电影怀旧
· 烧菜“经验”点滴
· 一次难忘的音乐会
【无题】
· Waterpick
· 《蓝色天梦》点评
· Obama Care 的报税 – 寻求帮助
· 钢琴硕士和博士
· 赫鲁晓夫令人尊敬的一件往事
· 打桥牌和上厕所
· 聪明的车夫
· No School !
· 一段不错的绕口令
· Everyday is weekend
【(不是我的)童年 -- 续一】
【科普讲座 -- 续二】
· 统计样本的笑话
· 欧几里得21世纪的学生
· GDP和幸福指数
· 给电动车泼点冷水
· 信用卡的保护程序
· 自动驾驶
· “内行”的“外行”人之所见
· 精算师的风采
· 我说文理相通
· 人名不译
【科普讲座 -- 续一】
· 一次真正的忽悠 -- 双周房贷
· 论“房贷忽悠”之忽悠
【科普讲座】
· “不是数学家”的烦恼
· “永久”邮票
· 制度优势
· 又闻蝉鸣
· 独行侠张益唐 -- 转载自戴世强教
· 做一回事后诸葛亮
· 半路上杀出个程咬金
· 考试和做研究(4) 迟到创造了历
· 考试和做研究(3)桥牌博士论文
· 考试和做研究(2)
【华尔街的数学】
· 《华尔街数学》出版以后。。。
· 华尔街的数学(结束篇) 光辉的
· 华尔街的数学(19) 锻羽而归
· 华尔街的数学(18) 什锦拼盘
· 华尔街的数学(17) 橘子和苹果
· 华尔街的数学(16)苹果和橘子
· 华尔街的数学(15)“标准”手册
· 华尔街的数学(14)“涂改”数据
· 华尔街的数学(13)假“公”济私
· 华尔街的数学(12) 第三者的模
【街谈巷议】
· 太太的高见
· 高手在民间!
· 广州地铁的闹剧
· 下有对策,上无政策?
· 拼死吃河豚
· 商人的智慧
· 在这儿,没有知遇之恩
· 部分大于整体
· 白草的战争逻辑
· 米饭里的沙子
【饮食文化】
· 小笼包史话
· 母亲的八宝辣酱
· 倚老卖老
· 搭便车
· 江浙点心和统一大业
· 糖藕 (非食谱)
· 蹄筋(非食谱)
【我的大学】
· 三强韩赵魏,九章勾股弦
· 惨烈的考试
· 重刑监狱犯人的数学难题
· 鱼骨头的故事
· 数学也有假冒伪劣
· 无名小卒和Nash大师的一段“交往”
· 别开生面的面试
· 我的第一次 0 + 1
· 大师的风采
· 桥牌博士
【人间】
· 当书中出现错误
· 你想不到的义工
· 丁惠民先生千古!
· 卡特总统生日快乐!
· 幽默的老板
· 买车记
· 个人自扫邻家雪
· 不说英语的留学生
· 多亏没有简体字
【(不是我的)童年】
· 女儿“学”元素周期表
· 一鸣惊人
· 布谷鸟又叫了
· 谁是老板?
· Potty 交响曲
· "重赏"之下, 必有&quo
【往事越千年】
· 瑪德琳饼干的故事
· 蒋经国的伟大
· 版权所有!!!
· 一身真伪有谁知
· 太湖美
· 人间自有真情在
· 蒋介石为胡适写的挽联
· 怀念胡耀邦
· 我家的“阿庆嫂”
· 我的英语老师
存档目录
2024-12-04 - 2024-12-29
2024-11-02 - 2024-11-29
2024-10-01 - 2024-10-31
2024-09-02 - 2024-09-26
2024-08-01 - 2024-08-31
2024-07-17 - 2024-07-29
2024-06-30 - 2024-06-30
2024-05-11 - 2024-05-30
2024-04-13 - 2024-04-17
2024-03-08 - 2024-03-08
2024-02-05 - 2024-02-11
2023-11-09 - 2023-11-09
2023-10-04 - 2023-10-18
2023-08-06 - 2023-08-06
2023-07-01 - 2023-07-28
2023-06-27 - 2023-06-27
2023-05-01 - 2023-05-21
2023-04-09 - 2023-04-23
2023-01-09 - 2023-01-22
2022-12-17 - 2022-12-17
2022-11-09 - 2022-11-19
2022-10-16 - 2022-10-21
2022-09-01 - 2022-09-10
2022-07-14 - 2022-07-25
2022-03-29 - 2022-03-29
2021-12-27 - 2021-12-27
2021-10-30 - 2021-10-30
2021-08-10 - 2021-08-10
2021-07-23 - 2021-07-23
2021-06-07 - 2021-06-28
2021-04-05 - 2021-04-05
2021-03-05 - 2021-03-10
2020-12-03 - 2020-12-30
2020-11-01 - 2020-11-26
2020-10-05 - 2020-10-24
2020-09-03 - 2020-09-20
2020-08-14 - 2020-08-31
2020-07-05 - 2020-07-24
2020-06-08 - 2020-06-08
2020-05-13 - 2020-05-27
2020-04-02 - 2020-04-30
2020-03-05 - 2020-03-26
2020-02-23 - 2020-02-23
2019-12-31 - 2019-12-31
2019-11-11 - 2019-11-24
2019-10-14 - 2019-10-18
2019-09-13 - 2019-09-24
2019-06-10 - 2019-06-10
2019-05-28 - 2019-05-28
2019-04-03 - 2019-04-28
2019-03-01 - 2019-03-14
2019-02-08 - 2019-02-23
2019-01-22 - 2019-01-28
2018-11-06 - 2018-11-08
2018-10-21 - 2018-10-21
2018-09-04 - 2018-09-28
2016-08-11 - 2016-08-11
2015-11-08 - 2015-11-22
2015-09-05 - 2015-09-27
2015-07-26 - 2015-07-27
2015-06-14 - 2015-06-14
2015-05-25 - 2015-05-30
2015-04-11 - 2015-04-11
2015-03-01 - 2015-03-02
2015-02-28 - 2015-02-28
2014-05-10 - 2014-05-10
2014-04-20 - 2014-04-20
2014-02-01 - 2014-02-22
2013-11-23 - 2013-11-23
2013-10-13 - 2013-10-19
2013-09-06 - 2013-09-14
2013-08-11 - 2013-08-31
2013-07-13 - 2013-07-23
2013-06-09 - 2013-06-09
2013-04-17 - 2013-04-21
2013-03-02 - 2013-03-02
2013-02-09 - 2013-02-23
2012-12-01 - 2012-12-29
2012-11-19 - 2012-11-28
2012-10-21 - 2012-10-21
2012-09-21 - 2012-09-21
2012-08-01 - 2012-08-03
2012-04-14 - 2012-04-14
2012-03-05 - 2012-03-05
2012-02-25 - 2012-02-26
2012-01-14 - 2012-01-28
2011-12-27 - 2011-12-27
2011-11-06 - 2011-11-20
2011-10-21 - 2011-10-29
2011-09-26 - 2011-09-26
2011-08-25 - 2011-08-27
2011-07-31 - 2011-07-31
2011-05-21 - 2011-05-21
2011-04-09 - 2011-04-21
2011-03-12 - 2011-03-12
2011-01-22 - 2011-01-31
2010-11-01 - 2010-11-10
2010-10-09 - 2010-10-12
2010-09-26 - 2010-09-30
2010-08-06 - 2010-08-28
2010-07-12 - 2010-07-25
2010-06-05 - 2010-06-19
2010-05-01 - 2010-05-30
2010-04-02 - 2010-04-24
2010-03-05 - 2010-03-26
2010-02-05 - 2010-02-26
2010-01-05 - 2010-01-27
2009-12-04 - 2009-12-29
2009-11-06 - 2009-11-27
2009-10-02 - 2009-10-30
2009-09-04 - 2009-09-25
2009-08-01 - 2009-08-30
 
关于本站 | 广告服务 | 联系我们 | 招聘信息 | 网站导航 | 隐私保护
Copyright (C) 1998-2024. Creaders.NET. All Rights Reserved.