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:任意 数学 表达式

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