WEB开发网
开发学院软件开发VC 任意数学表达式计算 阅读

任意数学表达式计算

 2009-04-15 20:03:45 来源:WEB开发网   
核心提示: 函数:200*sin[X+30]+100*sin[X/2.0] 绘图结果:图片看不清楚?请点击这里查看原图(大图),3.2样例二:数值计算器输入表达式可计算结果;运行效果如下:图片看不清楚?请点击这里查看原图(大图),任意数学表达式计算(5),用matlab验证计算结果:pow[(log[

函数:200*sin[X+30]+100*sin[X/2.0] 绘图结果:

任意数学表达式计算

图片看不清楚?请点击这里查看原图(大图)。

3.2样例二:数值计算器

输入表达式可计算结果;

运行效果如下:

任意数学表达式计算

图片看不清楚?请点击这里查看原图(大图)。

用matlab验证计算结果:

pow[(log[2,3+2]*2*log[2,3+2]*2),0.5]

程序计算值:4.64386 matlab计算值:(log2(3+2)*2*log2(3+2)*2)^0.5 ans =4.6439

1+2+3/4+sin[30]+log[10,100]

程序计算值:6.25

matlab计算值:1+2+3/4+sin(30*3.1415/180.0)+log10(100) ans =6.2500

(注意:matlab中使用弧度)

为了检验程序的正确形使用6层嵌套计算结果并同matlab计算结果比较

任意数学表达式计算

matlab计算值

exp(sin(exp(sin(exp(sin(30*3.1415/180.0))*3.1415/180.0))*3.1415/180.0)) ans= 1.0181

(注意:matlab中使用弧度)

任意数学表达式计算

4. 关于CExpress的几点说明

以前上C++课时,老师讲过可以用堆栈的方法实现表达式计算,但是那时候没好好学,所以对堆栈一点也不懂。CExpress纯粹是表达式分析,实现所有功能使用的时CString类,靠的是它的成员函数如:Find, Delete,GetAT,SetAT。不存在什么堆栈,链表等问题。所以在效率上有不如堆栈方法等高,但是很实用。比较满意的一点是能实现一些复杂表达式的计算和函数计算,如:

exp[(56-(((((((sin[(1+29)]+3+2.5)+4)+sin[30]+4.5)+6)+7)+8)+9)-10)]+56-sin[30]+4.5

计算结果:62.7183

网上估计也有一些表达式计算,但是到目前为止还未找到令人兴奋的代码。我用了两天从算法分析,程序设计,调试BUG,文章写作总算顺利。一直犹豫要不要公布代码(包括自己很辛苦写的DataShow类),自己学习的时候从网上得到了很多东西。自己写的东西若对大家有用,那是编程乐趣所在,顾决定公布代码。

若你发现Bug请联系我;若你想获得代码(当然在VCKBASE上能得到)请联系我;若你想和我交流,请联系我。

联系方式:TEL:13512524413,mail:visualsan@yahoo.cn

南京航空航天大学能源与动力学院 庄三少

5.关于DataShow的说明:

DataShow是本人编写的一个数据显示类,可以显示X,Y轴的数据,用它基本上可以实现一般的数据显示,在VCKBASE的代码下载处的C++MFC一般编程问题处可以得到它,里面有相关文档,说明,使用方法以及样例程序。

上一页  1 2 3 4 5 

Tags:任意 数学 表达式

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接