少女祈祷中...

今天 是10年6月CFA出分的日子,相信很多考了6C的朋友这一整天压力都相当大,当然也包括我。一直都受好友所托,可一直因为种种事情拖宕,现在正好抽查成 绩的这点时间写篇短文为还没参加但对这个考试有兴趣的朋友简单介绍一下CFA考试和一、二级的复习准备过程,希望能对有志往金融业发展的朋友有点用处,也 就不枉此文了。我才疏学浅,而且还没考完全部3级,所以全文疏漏偏颇之处还请各方高手牛人多多指正批评。声明一点,此文绝非言情、科幻、恐怖、文艺类文 章,读起来会相当无聊,所以个人比较推荐对金融行业和CFA考试有兴趣的朋友看,不然回头挨喷说我写东西这么没劲就太不给力了。

首先是对CFA及其历史的基本介绍。什么是CFA?CFA是“Chartered Financial Analyst”的简称,中文名叫“特许金融分析师”, 它是证券投资与管理界的一种职业资格称号,由美国“特许金融分析师学院”(ICFA)于1962年发起成立,每年在全球范围内举行资格考试。CFA 协会主办的CFA课程和考试被认为全球投资专业里最为严格的考试,在投资知识、专业标准及道德操守方面制定了全球准则。CFA特许状持有人可以向其客户、 雇主和同事表明他已经修读了一套严谨的专业课程,知识涵盖了广泛的投资领域,并且承诺遵守最高的职业道德准则。因此,CFA资格被投资业看成一个“黄金标 准”,投资者也希望找到那些持有CFA特许状的专业人士,因为这一资格被认为是投资业界中具有专业技能和职业操守的承诺。

根据我的了解,CFA在国内的认可度相对而言较好,这当然有多方面因素。其中一个重要原因就是国内金融行业发展非常迅速,金融管制逐步放开,但金融业的 资格认证一直没有跟上产业发展的脚步,迄今为止只有一个证券从业资格考(SAC)比较有名(这个后续日志会详细介绍),所以一开始从香港金融业学习引入的 CFA考试就非常受国内基金、券商重视。如果仔细看国际大投行的研究报告或者其员工介绍,不难发现很多从业者都是CFA持有者,这其实也从一个侧面促进提 升了全行业的专业程度和入门门槛。所以如果你有疑问,担心考这个试没有什么用处,那你大可放心。我不敢夸张,但保守估计CFA资格可以保证你的简历在金融 业(基金、券商、投行)的HR手中多停留40秒到一分钟。而且更为重要的是,CFA考试对于一个人的意义不仅仅在于它是求职的敲门砖,更多的是对整个金融 体系的了解和认识,对于自身金融知识的一次全新整合,也是对于意志品质的磨练。记得一个学长曾经告诉我,考过CFA3级之后,其他考试基本都不用害怕了。 总结来说,CFA是一个费力但讨好的资格考试,付出与回报基本成正比。

上面简要介绍了一下CFA的基本信息和价值所在,下面具体来看CFA究竟长什么样子。CFA考试一共有三级,分为LEVEL 1 2 3。以3级相对最难,1级相对最易。CFA的考试分为每年6月和12月两次考试,其中6月有1、2、3级的考试,而12月只有1级的考试,所以最好提前规 划好时间,看大概需要几年考完。个人推荐12月考1级,来年6月考2级,这样连贯性会比较好,因为1级的知识在2级中还会有较多应用,而且一鼓作气,不易 懒散下来。从我个人体会,CFA就是在几个月的复习过程中不断跟自身懒惰做斗争的痛苦历程,所以要尽量避免战线拉得过长。另外极少有人会考过1级后不继续 拿下2、3级,沉没成本大家都清楚,1级对于求职和之后的发展用处并不是特别大,所以个人强烈推荐咬咬牙坚持考到底。

具体到考试本身而言,CFA考试是全英文考试。从教材到辅导书到试卷都是英文的,所以对英语阅读要求相对较高。此外,CFA1、2级的考试全部都是3选 1单选题,到了3级才会碰到需要写自己想法的论述题。CFA考试内容分为几大块:Alternative Investments、Corporate Finance、Derivatives、Economics、Equity Investments、Ethical & Professional Standards、Financial Reporting & Analysis、Fixed Income Investments、Portfolio Management和Quantitative Methods。基本涵盖现代金融的方方面面,非常繁杂。复习过程会在后面具体谈到。1级的考试是上下午两个session各3个小时,每个 session有120道题。题目之间是独立的,前一题答案对后面题目的解答没有任何影响。2级考试也同样在上下午各3个小时2个session,每个 session各60道题目。2级同1级相比区别最大的地方在于:2级的题目是类似于高考阅读理解的安排,先给你一篇长文,里面可能包括某金融领域的具体 信息,然后根据这篇长文回答后面的6个选择题。这就导致每篇文章前后题目会有较大的相关性,前面不会做后面很有可能做不出来,导致6道题全部挂掉。所以对 于2级复习要格外小心注意全面性,尽可能避免出现某个知识点没看到的情况。

如果各位看官能坚持看到这里,那我想你可能已经对CFA产生了相当兴趣,也许正在考虑报名。具体报名流程我就不赘述了,下面的链接里有图示,非常清楚,谨供参考。

报名:http://bbs.cfaspace.com/dispbbs.asp?boardid=102&Id=68476

或者:http://bbs.jjxj.org/thread-20540-1-1.html

关于报名,我想格外提醒一句:报名的时间跟报名费是挂钩的。也就是说,报名越早,费用越低。CFA报名分3个档次,最贵,很贵,和贵。每年CFA官网会 挂出来FEE SCHEDULE,这个可以关注一下网站上的信息,决定了就尽早报名,能省则省。另外我还想再多啰嗦一句,其实CFA是提供奖学金的,1级报名大家可以尽 量找大学里获得CFA MEMBER资格的老师推荐,每年每个MEMBER PROFESSOR会都有5或10个推荐名额,可以免除80%的报名费。而2、3级则可以关注CFA官网和中国官网的最新信息,申请社会奖学金,今年北 京、上海各有10个名额,大家不妨试试看。

好了,啰啰嗦嗦写了这么多,也该到最关键的复习准备过程了。因为每个人的专业背景不同,知识结构不同,时间安排不同,经济条件不同,所以我这个准备历程 并不具有典型性,只供参考。我的专业背景是金融,知识结构以金融学和数学为主,时间上我是去年12月和今年6月分别考的1、2级,正好赶上大四毕业年,所 以相对不是那么紧张,经济条件上由于我属于完全自费,所以选了最省钱的复习方式。

复习方面,首先要提的是资料。工欲善其事,必先利其器。我1、2级都只看了KAPLAN出版社的那套NOTES,也就是基本上学校里所有打印店的门口都 会挂出来的“新到CFA2010复习资料”。我个人不推荐去打印店买,纸质不好印刷也有瑕疵,比较推荐淘宝网店。除了价格优势外,淘宝网店还会给你提供一 堆光盘和乱七八糟的纸版资料,比如历年的Sample Exam,比如1、2级复习提纲。而且还有五花八门的套餐可以选,比如还没买计算器的朋友可以直接一套收了,价格也就更有优势。

我复习1、2级都是只看NOTES没看教材。但由于教材是必买没得选,所以可以时不时拿来做参考。我非常不推荐以复习教材为主,因为里面内容实在过多 了,很多都是废话,看起来效率太低。NOTES的最大优势在于简明扼要的把知识点、考点列出来,辅以讲解和习题来巩固,比较符合普遍的自学规律。而且 NOTES覆盖了全部考点,不用担心真实考试里碰到NOTES上没有但教材里有讲的考题这种小概率事件。

1、2级的NOTES都有5本,我分别来介绍一下吧。1级的NOTES按本来说大致分为道德、经济学、财务报表、公司金融和衍生品,每本里面还穿插着其 他内容,比如道德那本会讲一些数量的内容,衍生品那本则会讲一些债权市场的内容。但最重点的就是上面说的那些板块。我复习1级的时候是从第1本和第3本, 也就是道德和财务报表入手的,因为这两部分是公认最难的地方。大致花了三周时间看完,之后那3本基本是一周一本。所以第一遍复习一共用了6周时间一个半 月,每天看大概2、3个小时。之后用了一周时间集中复习巩固了一遍,然后用一周模考,主要用的是官方的MOCK EXAM和SAMPLE EXAM,没有采用KAPLAN的PRACTICE BOOK 6&7,因为那上面的过难,对于考试没有太多指导意义。所以整个复习过程大概在2个月上下,平均每天2个小时,最后2周投入的时间会多于平均水 平。就我的个人经历和周围考了1级的朋友介绍来看,1级不是很难,不必太担心考不好,只要按照上面说的时间安排规划好整体的复习,一个点一个点的掌握,最 后问题不会太大的。总结来看,1级的复习重点在于道德和财报,其中以财报更为麻烦,需要格外小心。大致投入时间在180-220个小时。

2级则相对1级复杂一些,复习方法我并没有沿用1级的,因为根据过来人的介绍2级更关注股权投资、资产估值、兼并并购等方面内容的掌握。对应的内容是第 四本,EQUITY INVESTMENT。而且2级的道德跟1级的变化不大,题目除了变成阅读理解的形式外也没有更难,所以不需要特别重点复习。我还是按照1级的时间规划, 也即提前两个半月动手,中间去厦门毕业旅行剔除1周后净剩9周。这次以财报和股权投资那两本为主,还是用3周时间搞定,每天投入时间大约3-4个小时。之 后用2周半把道德、公司财务和衍生品看一遍,用一周半整体复习一遍,再用2周模考和查缺补漏,模考还是用MOCK EXAM和SAMPLE EXAM,依旧没有采用KAPLAN的PRACTICE BOOK 6&7。2级考试相对1级会更有挑战,除了题型变化要求对知识点的掌握更加牢固熟练以外,更重要的是要面对更难更深入甚至从来没见过的内容。所以 整个算下来花在2级上的时间大概有280-300个小时。值得一提的是,因为知识点多且难,所以2级比1级更容易遗忘,因此定期复习非常重要。1级的时候 我基本全靠那一周时间整体复习,但2级我是每周都要复习一遍的,不然真的就白看了。

好了,就先写到这儿吧,推荐几个对准备CFA很有帮助的网站:

http://bbs.cfaspace.com/,里面有很多电子版的资料以及考试经验。

http://bbs.jjxj.org/forum-175-1.html,是一个子版,资料还可以。

http://www.cfaspace.com/CFA_Register/index.asp,可以提供代报名及其他培训,有银子的朋友可以考虑,省心省力。

关于CFA的那点小破事,我也就介绍这么多,估计再多就有人该打我了。总而言之言而总之,CFA是对自身的一种挑战,一种磨练,也是一段经历,一种提 高。如果朋友你有志于从事金融业,手里有点小闲钱,英语过了4级,有自己的空闲时间,那我觉得可以考虑CFA。趁年轻给自己增加一点小资本,面试时给别人 提供一个更倾向于选你的理由,在名片上可以印上XXXX, CFA,让HR不至于眼前一直不亮,CFA还是能够做到的。

源地址:http://blog.renren.com/GetEntry.do?id=480197908&owner=329902765

boost是专业的库,它的random可以生成高质量的随机数。但Monte carlo方法用很伪的随机数即可,要求并不高。暴力的蒙特卡洛算法更看重速度,下面来看看速度对比:

N = 1000000
boost的uniform_int(1,100)需要1864毫秒…

自己的unif_int(1,100)需要241毫秒…

boost的正态分布需要990毫秒…

自己的正态分布需要456毫秒…

代码如下:

#include<ctime>
#include<cmath>
#include<iostream>
#include <boost/random.hpp>
 
#define PI 3.1416
 
using namespace std;
using namespace boost;
 
inline double unif_rand(){  //生成(0,1)的实数均匀分布
	//rand();
	return(rand()+0.5)/(RAND_MAX+1.0);
};
 
inline int unif_int(int a, int b){   //生成a到b-1的整数均匀分布
	return int(floor(a+(b-a)*unif_rand()));
};
 
inline double gaussien(){  //标准正态分布的生成
	return sqrt(-2.0*log(  unif_rand()  ) )*cos(  2.0*PI*unif_rand()  );
};
void main(){
	srand(static_cast<unsigned int>(time(0)));
        rand();//因为第一次的随机值不好,我们不要
	uniform_int<> distribution(1,100);
	mt19937 engine;
	mt19937::result_type random_seed= static_cast<mt19937::result_type>(time(0));
	engine.seed(random_seed);
	engine.seed(static_cast<mt19937::result_type>(random_seed));
	variate_generator<mt19937, uniform_int<> > random_choice (engine, distribution);
	normal_distribution<> normal(0,1);
	variate_generator<mt19937, normal_distribution<> > gaussian(engine,normal);
 
 
	ofstream flux("test.txt");
	//flux.precision(5);
	int N=1000000;
	flux<<"N = "<<N<<endl;
	double start, finish, duration;
	start=clock();
	for(int i=0;i<N;i++){
		random_choice();
	}
	finish=clock();
	duration=(double)(finish-start);
	flux<<"boost的uniform_int(1,100)需要"<<duration<<"毫秒..."<<endl<<endl;
 
	start=clock();
	for(int i=0;i<N;i++){
		unif_int(1,101);
	}
	finish=clock();
	duration=(double)(finish-start);
	flux<<"自己的unif_int(1,100)需要"<<duration<<"毫秒..."<<endl<<endl;
 
	start=clock();
	for(int i=0;i<N;i++){
		gaussian();
	}
	finish=clock();
	duration=(double)(finish-start);
	flux<<"boost的标准正态分布需要"<<duration<<"毫秒..."<<endl<<endl;
 
	start=clock();
	for(int i=0;i<N;i++){
		gaussien();
	}
	finish=clock();
	duration=(double)(finish-start);
	flux<<"自己的标准正态分布需要"<<duration<<"毫秒..."<<endl<<endl;
 
	flux.close ();
}

从plot的图上来看,区别不大,我还是用自己的随机数好了。

做monte carlo很需要计算机的速度,除了寻找算法上的绝对优势之外,在代码上还能够有什么改进?结果显而易见。

预留空间+刷新整个动态数组需要67毫秒…

预留空间+刷新二维动态数组需要142毫秒…

1
构造改进版连续存储二维动态数组需要140毫秒…

11
vector初始化用掉1毫秒…

vector用resize来预留空间需要74毫秒…

5000000
vector如果用pushback需要2707毫秒…

5000000
刷新这个vector里面的所有值需要443毫秒…

使用vector的vector来pushback构造多维数组需要13131毫秒…

一个使用pair类型的vector来pushback需要12845毫秒…

#include <vector>
#include <ctime>
#include <iostream>
#include <fstream>
using namespace std;
 
 
void main(){
	ofstream flux("haaaaaaa.txt");
	double start, finish, duration;
	int N;
	int n;
	N=5000000;
	n=2;
 
 
	start   =   clock();
	double *temp= new double[N];
	for(int i=0;i<N;i++){
		temp[i]=99;
	}
	finish   =   clock();  
	duration   =   (double)(finish   -   start); 
	flux<<"预留空间+刷新整个动态数组需要"<<duration<<"毫秒..."<<endl<<endl<<endl<<endl;
 
	start   =   clock();
	double **temp1= new double *[n];
	for(int i=0;i<n;i++){
		temp1[i] = new double [N];
	}
	for(int i=0;i<n;i++){
		for(int j=0;j<N;j++){
			temp1[i][j]=1;
		}
	}
	finish   =   clock();  
	duration   =   (double)(finish   -   start); 
	flux<<"预留空间+刷新二维动态数组需要"<<duration<<"毫秒..."<<endl<<endl<<endl<<endl;
	flux<<temp1[1][100]<<endl;
 
	start   =   clock();
	double **temp2=new double *[n];
	temp2[0]= new double [N*n];
	for(int i=1;i<n;i++){
		temp2[i]=temp2[i-1]+N;
	}
	for(int i=0;i<n;i++){
		for(int j=0;j<N;j++){
			temp2[i][j]=11;
		}
	}
	finish   =   clock();  
	duration   =   (double)(finish   -   start); 
	flux<<"构造改进版连续存储二维动态数组需要"<<duration<<"毫秒..."<<endl<<endl<<endl<<endl;
	flux<<temp2[1][100]<<endl;
 
 
	start	=clock();
	vector<double> test;
	vector<pair<double,double>> test2;
	vector<vector<double>> test3;
	finish =clock();
	duration   =   (double)(finish   -   start); 
	flux<<"vector初始化用掉"<<duration<<"毫秒..."<<endl<<endl<<endl<<endl;
 
	start   =   clock();
	test.resize(N,1);
	finish   =   clock();  
	duration   =   (double)(finish   -   start); 
	flux<<"vector用resize来预留空间需要"<<duration<<"毫秒..."<<endl<<endl<<endl<<endl;
	flux<<test.size()<<endl;
	test.clear();
 
	start   =   clock();
	for(int i=0;i<N;i++){
		test.push_back(1);
	}
	finish   =   clock();  
	duration   =   (double)(finish   -   start); 
	flux<<"vector如果用pushback需要"<<duration<<"毫秒..."<<endl<<endl<<endl<<endl;
	flux<<test.size()<<endl;
	//test.clear();
 
	start   =   clock();
	for(int i=0;i<N;i++){
		test[i]=99;
	}
	finish   =   clock();  
	duration   =   (double)(finish   -   start); 
	flux<<"刷新这个vector里面的所有值需要"<<duration<<"毫秒..."<<endl<<endl<<endl<<endl;
	test.clear();
 
	start   =   clock();
	for(int i=0;i<n;i++){
		for(int j=0;j<N;j++){
			test.push_back(99);
		}
		test3.push_back(test);
		test.clear();
	}
	finish   =   clock();  
	duration   =   (double)(finish   -   start); 
	flux<<"使用vector的vector来pushback构造多维数组需要"<<duration<<"毫秒..."<<endl<<endl<<endl<<endl;
	test.clear();
 
 
 
	start   =   clock();
	for(int i=0;i<N;i++){
		test2.push_back(make_pair(1,1));
	}
	finish   =   clock();  
	duration   =   (double)(finish   -   start); 
	flux<<"一个使用pair类型的vector来pushback需要"<<duration<<"毫秒..."<<endl<<endl<<endl<<endl;
 
 
 
	delete [] temp;
	for(int i=0;i<n;i++){
		delete [] temp1[i];
	}
	delete [] temp1;
	delete [] temp2[0];
	delete [] temp2;
	flux.close();
 
 
	char wengding;
	cin>>wengding;
 
};

Windows 7 64 bit Ultimate 7600_16385  + Visual Studio 2010 ultimate + MATLAB 2010 64bit + Office 2010 RTM professional 64bit

昨天重装了三次系统,折腾死我。今天终于爽了。这种廉价的幸福跟女人买新衣服的快感大概没有什么两样。第一次装64位的系统,感觉机器十分的快,磁盘性能好了很多。不过感觉总是不可靠的,很有可能是心理暗示。可惜的是光有4G内存,主板却只支持到3G,我是比较喜欢关闭虚拟内存的。总结一下遇到的问题:

  1. Windows 7 64 bit 占用硬盘相当的大。我的C盘原本只有24G,鉴于我什么软件都往C盘里面塞,即使是XP,到头来也只剩2G左右。装了win7之后我才发现C盘大小完全不够用,我便需要一个无损分区工具。Acronis 10我试过了,失败。搜到官方说法:11才会支持win7的。最终我找到个超级好用的win7下的分区工具:Partition Wizard。速度快的惊人,关键软件还是免费的。
  2. 这里有位内牛满面哥为了装vs2010,重装了9次系统。精神可嘉,可惜没有找到问题的症结所在。我前两次重装也是因为visual studio装不上去,需要不停重启。我分别尝试的win7 x86 和 x64 版本是7600_16384。结论就是换成16385就好了,并不是dell oem版本的原因,也不是破解的原因。
  3. 安装office 2010遇到1935这种错误的,绝对是.netframework的问题。好好装个3.5 sp1就可以解决问题。Vol版的可以使用那个延时180天的工具,我这个pro版只能用神key电话激活了。
  4. VS2010中工具》选项》项目和解决方案》C++目录的编辑功能已被否决。全局的设定这些目录需要在项目上点击右键》属性》配置属性》C++目录中设定。详见MSDN中的解释。
  5. 写程序时,原先要拷到system32文件夹下的那些dll现在要拷到SysWOW64文件夹。

嗯,穿新衣,安心工作。

如需转载,请注明来源:http://hi.baidu.com/yowsah/

GLUT 代表OpenGL Utility Tookit。Mark J.Kilgard 为了使OpenGL应用程序结构能够真正独立于窗口系统构思了GLUT库。

Freeglut是一个GLUT的开源实现。

本文介绍VS2008环境下的Freeglut 2.6.0配置:

1. 下载Freeglut:http://freeglut.sourceforge.net/http://prdownloads.sourceforge.net/freeglut/freeglut-2.6.0.tar.gz?download

2. 下载到的文件为freeglut-2.6.0.tar.gz,解压到任意目录,使用Visual Studio 2008打开freeglut-2.6.0\VisualStudio2008\freeglut.vcproj,使用Release执行编译。这时会生 成Release目录。

3. 将Release目录中的freeglut.dll复制到system32下。

4. 查找gl.h位置(默认在C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\gl),将freeglut-2.6.0\include\GL中的.h文件复制进去。

5.查找GlU32.Lib位置(默认在C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib),将Release目录下的freeglut.lib文件复制进去。

完成配置。

通过以下程序可测试是否成功并查看OpenGL版本:

#include <stdio.h>
#include <windows.h>
#include <gl/glut.h>
 
int main(int argc, char** argv)
{
glutInit(&argc,argv);
//显示模式初始化
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH);
//定义窗口大小
glutInitWindowSize(300,300);
//定义窗口位置
glutInitWindowPosition(100,100);
//创建窗口
glutCreateWindow("testgl");
const char* version = (const char*)glGetString(GL_VERSION);
printf("OpenGL 版本:%s\n", version);
glutMainLoop();
return 0;
}

下面的程序是利用OpenGL画公式f(x)=\exp(-x)\cos(2\pi x) 的曲线:
转载自:http://blog.csdn.net/wangwei200508/archive/2008/03/09/2160189.aspx

// Draw the "dot plots" of a function
//P52 in <Computer Graphics Using OpenGL(Second Edition)>
 
#include<math.h>
#include<GL/glut.h>
 
const int screenWidth = 640;   // width of screen window in pixels
const int screenHeight = 480;  // height of screen window in pixels
GLdouble A,B,C,D; // values used for scaling and shifting
 
//----------Initialization--------------
void init(void)
{
    glClearColor(1.0,1.0,1.0,0.0); // Set white background color
    glColor3f(0.0f,0.0f,0.0f);    // Drawing color is black
    glPointSize(2.0);             // a 'dot' is 2 by 2 pixels
    glMatrixMode(GL_PROJECTION);  // Set "camera shape"
    glLoadIdentity();
    gluOrtho2D(0.0,(GLdouble)screenWidth,0.0,(GLdouble)screenHeight);
    // Set values used for scaling and shifting
    A = screenWidth/4.0;
    B = 0.0;
    C = D = screenHeight/2.0;
 
}
 
// --------Draw the "dot plots" of a function------
void dotPlots(void)
{
    glClear(GL_COLOR_BUFFER_BIT);       //clear the screen
    glBegin(GL_POINTS);
        for(GLdouble x = 0;x<4.0;x += 0.005)
        {
            GLdouble func = exp(-x) * cos(2*3.14159265*x);
            glVertex2d(A*x+B,C*func+D);
        }
    glEnd();
    // Draw a horizontal line
    glBegin(GL_LINES);
        glVertex2i(0,screenHeight/2);
        glVertex2i(screenWidth,screenHeight/2);
    glEnd();
    glFlush(); //send all output to display
}
 
//--------main-----------
void main(int argc,char** argv)
{
    glutInit(&argc, argv);  // Initialize the toolkit
    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);  // Set display mode
    glutInitWindowPosition(100, 150);  // Set window pozition on screen
    glutInitWindowSize(screenWidth, screenHeight);      // Set window size
    glutCreateWindow("Dot plot of a Function"); // Open the screen window
    glutDisplayFunc(dotPlots); // Register redraw function 
    init();
    glutMainLoop();  // Go into a perpetual loop
//在上面的 dotPlot()中的for循环里做一些更改就可以画另一个函数图了
}

我以前用C++写程序做实验,为了让自己的数学结果能够可视化,总是把结果输出成文件,再用matlab来plot 2d图像。这无疑增加了工作量。怎么样可以在C++代码里面直接调用画图程序进行plot呢?Gnuplot这个软件给我们了C++的接口。 Gnuplot是一个强大的科学绘图软件,它甚至可以将Plot的图片直接转换成tex文件,这无疑是一名数学工作者的福音。Viktor Chyzhdzenka以gnuplot_i这个C的程序为基础,写了一个C++的绘图类。其原版代码在这里:http://ndevilla.free.fr/gnuplot/GNUPlot1.zip, 但我在编译使用中遇到了两个问题:

  1. 明明是windows系统,可是#ifdef WIN32 后面的语句却是灰色的。
  2. 程 序无法容易的找到Gnuplot的目录

经过修改,我将这个程序改得只适用于windows,另外Gnuplot里的 exe文件保证和VS2008里面的vcproj文件同目录即可。如果要发布文件,则和exe文件同目录即可。大家也可以自己阅读原版代码进行修改。再进 一步熟悉Gnuplot的用法之后,相信我们很容易可以为这个绘图类添加属于自己的成员函数。这里有一个Gnuplot的简单教程。

点我下载gnuplot_i头文件

点我申请115网盘

解压密码2000。

希望下载的人对速度有个反馈,merci。