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

           有一次, 我妈妈在电话中问我, 现在国内工作的人都一直在学习, 你们在美国, 应该更需要学习, 怎么只听见你在打桥牌, 从来没听见你在学东西. 老太太说的是对的, 估计老人家已经憋好久了.我说物理中有近代物理和经典物理, 前者可说是日新月异, 真是三天不学习, 赶不上刘少奇. 即使你不搞研究, 只在大学里教书, 不学新东西也很难混日子. 至于那些前沿学科, 电脑, 工程, 医学, 生物等, 就更不用说了. 但这经典物理, 却是很少再有新东西了.至于金融行业, 我也把它分为现代金融和经典金融. 你儿子运气好, 做的正是经典金融.

           

            工作十几年, 确实一直在吃老本. 在可以预见的将来, 吃到退休应无大问题. 但新东西多少还是学了一些, 在较高的层次上, C++, VBA, Oracle 等等. 这些是我原来完全不懂的. 前一篇《不厌其》也是一例,但属于较低层次, 说出来是懂的, 但自己就是没想到 . 我以前的研究是做严格解的, 相对而言, 数值计算不是我的强项, 所以进公司后学的新东西, 计算方面占很大比例.这篇是另一个例子, 就是用分段线性函数 (Piecewise Linear Function) 来近似模型中的曲线. 尽管程序看上去繁多了, CPU节约很多, 建立模型也比以前容易得多, 好控制, 修改也方便. 如果曲线变化较大, 就多用几段, 反之就少用几段. 每段的起始点和斜率由回归或经验决定.这样尽管模型的一阶导数不再连续, 但可以很方便地使曲线更接近实际数据.

 

            我最开始看到的一段关于分段线性函数的程序, 看上去很简洁, 实际上极不合理. 假定函数小于某值(X1)是个常数, 大于某值(XN)是最后两点的线性延伸. 那程序是这样的. 凡涉及程序, 我只写逻辑, 不牵涉具体语言. 这逻辑对C, Fortran, SAS, Pasco, … 应该都适用.

         Y = Y1

K = 1

if X > XK and X < XN then

Y = YK + (YK+1 – YK) (X – XK) / (XK+1 – XK)

K = K + 1

end

这段程序的循环中, 真正有用的计算只有一次, 既最后一次. 如果运气好, 这无用循环只走了一两次, 如果运气不好就要走遍N-1 次了. 我重写如下.

            if X < X1 then Y = Y1

            else if X > XN-1 then Y = YN-1 + (YN – YN-1) (X – XN-1) / (XN – XN-1)

            else do i = 1 to N – 2

            if Xi < X <= Xi+1 then

                        Y = Yi + (Yi+1 – Yi) (X – Xi) / (Xi+1 – Xi)

            end

我测试了 N = 8 1,000,000 个随机数, 新旧程序的时间比大约是 4:5. 我还注意到, (Yi+1 – Yi) / (Xi+1 – Xi) 实际上是个常数, 其中还有一次昂贵的除法. 所以这程序还可进一步优化. 在整个计算之前, 我们先算一下这 N – 1 个常数.

            Zi =  (Yi+1 – Yi) / (Xi+1 – Xi), i = 1, 2, 3, …, N – 1

然后前面这优化过的程序就可写成

            if X < X1 then Y = Y1

            else if X > XN-1 then Y = ZN-1 (X – XN-1)

            else do i = 1 to N – 2

            if Xi < X <= Xi+1 then Y = Yi + Zi (X – Xi)

            end

原来的程序中, 除了占时极少的判别语句及左边边界的赋值语句, 每次要 5 次加法(加减乘 CPU 相同), 1 次除法, 7.3 次加法. 现在只用 3 次加法. 初始计算的 CPU 是可以忽略的. 和最初的简洁程序相比, CPU 只有 33%.

 

            如今, 计算机硬盘越来越大, 速度越来越快, 大家听到的都是 Hard disk is cheap. 但在我们公司, 数据文件动辄40-50G, 同事们很快发现, 我做的优化确实有重大实际意义, 节约的时间可对模型进行更多的测试和改进. 尤其当项目很紧急时, 这些优化的意义就不是CPU能够衡量了. 对大部分工业界的朋友, 这篇中的雕虫小技并无太大实际意义.

 

浏览(1845) (0) 评论(3)
发表评论
文章评论
作者: 留言时间:2009-12-17 21:16:16
我也喜欢优化代码。不过速度优化往往意味着代码增加可读性降低。不管怎样,程序应用的目的决定了要做多少优化。这个例子里搜索的方法依然是顺序查找,如果N较大时用对分查找可以进一步提高速度。但是代码要复杂些,好像要用二叉树之类的数据结构。搜索次数至多log2(N)次。
回复 | 0
作者:just4look 留言时间:2009-10-02 21:14:00
写程序就是要象0+1同学那样抠门才能写出好程序来的,至于是不是读过什么书并不是重要的。


老王同学

那要看你们领导领导的是什么工作了。呵呵。
回复 | 0
作者:老王同学 留言时间:2009-10-02 20:28:14
64位操作系统和软件对你们帮助大吗?

我是在另一些领域做优化,现在领导们常说机器足够快了,优化不重要了。。。我也乐得清闲,等重要了再想辄。
回复 | 0
我的名片
0+1
注册日期: 2009-08-01
访问总量: 805,964 次
点击查看我的个人资料
Calendar
最新发布
· 苏埃友谊万岁!
· 广州地铁的闹剧
· 下有对策,上无政策?
· 管的太宽了!
· 战俘 – 一个沉重的话题
· 你想不到的义工
· Made in China
分类目录
【埃及-约旦】
· 苏埃友谊万岁!
· 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-15
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.