概述
笔者:IBMInfo78@126.com
Windows 计算器Calc(Windows 7版本)是一个常用的工具,也是一款非常专业、优秀的基础计算程序。它有四种计算场景,分别为:标准型、科学型、程序员、统计信息。因使用科学计算模式较多,故重点就科学模式向作一些细节介绍;这些是网络上鲜有介绍或使用到的。
一、科学计算模式。
将Calc切换到科学计算模式,具备了很多功能,包括了所有的基础数学计算功能,比如常规+-*/,幂运算(包括任意开方),阶乘,三角函数,对数等等,不再赘述。尤其非常值得称赞的,是它的计算范围[-1.0E10000,+1.0E10000],在某些方面甚至超越了一些专业的数学计算软件,比如:MatLab等“三剑客”。据网络上资料介绍,MatLab的计算范围约在[-1.0E308,+1.0E308]。
二、计算精度。(以下全以科学计算场景描述)
除了前面提到的专业数学建模软件,能够达到计算范围内的任意精度外;Calc计算器的计算精度实际已经超越你的初始感官,假如你没有深入试验的话。
Calc计算器的计算精度非常高,数值显示区显示33位数字,小于1的小数精度则达到小数点后32位,其实它实际精度达到小数点后130位的(别问如何得到,拿来主义要不得 :) )。当然,根据算法的不同,与其他相比是存在误差的;但根据试验,复杂计算小数点后50位左右是可信的。对于普通的科学计算是绰绰有余的,也能成为专业计算软件的一般、初级替代品。Excel?小数点后15位(双精度,连长双精度都不是!!!)也能叫科学计算?!
期间进行了一次试验,Calc中π是3.1415926535897932384626433832795,后续数值在小数点后47位开始与MatLab的结果有差别;但在一般科学计算中,这样的精度已经足够惊艳了!!!顺带提一嘴,M$的π是通过计算出来的,不是定义的宏!(有据可查&&莱布尼茨(也是大神般的人物))
三、数学计算函数名介绍。
在默认界面中,窗口输出区域只显示输入记录和结果输出值,其中三角函数分为度数(D)、弧度(R)、梯度(G)三种情况外(函数及其反函数名分别对应FnD、FnR、FnG),其余函数均只有唯一名字或标识。比如:对应sqr(),对应sqrt(),对应cuberoot()等等。为什么提到这个?是为了后续的内容作铺垫;因为它将揭开长久以来,很多人没有做过的操作试验。
四、深入Calc计算器。
请在数值显示区点击右键->”显示历史记录“。假如你多做几次运算,上面会显示历史记录,包括单次做过的多层嵌套运算。单击Item条目,数值显示区会显示对应的计算数值。可能绝大多数人没有双击过;双击后,ListBox的Item会生成一个对应的Edit文本框(标识ID:0x0000019A (410))。惊奇不?不惊奇!惊奇的是在后面…………TMD,设计者简直是个人才!你双击后,将对应的文本框中内容(即公式)按前述正确名称规范改写,再回车;你会惊奇的发现,Calc会按新的公式重新计算,而且支持长文本嵌套公式计算!!!可将公式预先写好,直接复制到历史记录ListBox中修改;公式要多少,ListBox就可以记多少;公式要多长,Item中Edit就记多长。
单个计算结果MS储存,MR读取。如何读取?别忘了Windows是一个以消息驱动的系统,当然拦不住那些执着、奔放、狂热的心!支持但不限于AutoIT等和Win32 API代码的操作。
Calc中ListBox 标识ID为0x00000099 (153),公式显示Static标识ID为0x00000194 (404),数值显示Static标识ID为0x00000096 (150)。对ListBox直接按AddString Msg强制添加Item,虽然能够添加文本,但是因为没有执行语法检查和数值计算,双击会使Calc退出;对前述两个Static强行赋值,同样,不能执行计算,按回车或等号不会退出,但计算无效。
先泼点冷水,是为了避免走弯路。唯一的真理就是“脚踏实地”的点击或PostMessage模拟点击按钮!”人肉“方法是不行的,当然得用上代码执行!有没有想法?有没有野心?那就动手出发吧!!!
五、Calc计算器绝配。
Calc计算器的两个绝配:
1、开源Graph,Graph | Plotting of mathematical functions,闲言碎语不用多说,直接上,惊喜多!!!
2、数字帝国,数字帝国 - 数学工具,它包含一个函数图像绘制工具:
https://zh.numberempire.com/graphingcalculator.php。
3、以及一个开胃菜:在线一元函数(方程)求解计算工具 - 在线计算器 - 脚本之家在线工具。
以上所有,懂得自然懂,不懂请略过,谢谢,谢谢!!!
笔者:IMBInfo78@126.com
补记:
若有人资助该独立研究,再感谢不过。
在C语言及其标准数学库中,双精度数据double的精度小数点后15位,长双精度long double的精度小数点后18位;直接使用数学库,计算精度就只有这样稀里哗啦了。Calc计算定义了大数结构,重写了常用数学函数用于计算。
探索期间,使用Calc试验了一个超越方程Ln(x)=Sin(x)(弧度SinR(X))的近似值,迭代取得的结果是:
X= 2.2191071489137460325957851882043,
Ln(x)=0.79710492981205129779990160957963,
SinR(x)=0.79710492981205129779990160957962)。
经过工具计算(非"三剑客M.M.M.",而是"曾三爷的剑"),结果是:
X=2.21910714891374603259578518820429016817536655653206788541526129191837847077063514821576748601132102106356527574904488871433804576047848796163542291915941247563218694239351614241168153858186297044402459860495075185202177810032193874364025877891652413618043720350673317271,
Ln(x)=0.79710492981205129779990160957962629422793862506608629875862900905112630834960274274175198967339993620488082394696329348740023999227315180400385774333069054809146699767021075141257609745245808075977885642153477116275950761942837095313539480107077184125664910734689782013,
SinR(x)=0.79710492981205129779990160957962629422793862506608629875862900905112630834960274274175198967339993620488082394696329348740023999227315180400385774333069054809146699767021075141257609745245808075977885642153477116275950761942837095313539480107077184125664910734689782012。
在C语言标准数学库中,只能得到小数点后15位和18位;现在如此的结果已经非常、非常、非常的精确了。MatLab被禁用的筒子们,仅在数值计算中,Calc可否有点用?嘿嘿嘿…
(本文系原创,转载请保证文章完整,并注明原著。有需求请联系作者:IBMInfo78@126.com)
最后
以上就是独特魔镜为你收集整理的重新认识Windows计算器Calc(MatLab计算替代品)——你所不知道的细节的全部内容,希望文章能够帮你解决重新认识Windows计算器Calc(MatLab计算替代品)——你所不知道的细节所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复