数学研发论坛

 找回密码
 欢迎注册
查看: 1411|回复: 7

[原创] 落叶高精度表达式计算器v1.1版

[复制链接]
发表于 2017-1-31 09:46:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?欢迎注册

x
本帖最后由 落叶 于 2017-1-31 12:05 编辑

落叶高精度表达式计算器v1.1版
   
针对1.0版作了以下更改:
     纠正了开立方程序某一些特殊数精度不够的问题,纠正了自然对数函数中的一个辅助子函数的问题,万位精度自然对数运算时间由1.0版的7秒,变回现在的6秒,
     纠正了乘方运算符和阶乘运算符运算等级定位不准的问题,填加了乘方程序对一些特殊值的判断。纠正了乘方运算小位数,高精度运算过慢的问题,例:123^10000万位精度时过慢的问题。1.0版需要1.5秒,现0.2秒左右。
     取消了原程序中的公式,算式存入功能,用更加强大的预定义变量和赋值语句代替。

1.1版增加了四大功能:详情看帮助!

    1.多次运算结果显示功能,对已运算的内容保持在程序文体框中,方便查看,你可以复制它的内容为你所用,但却不可编缉它!

   
    2.批量处理或计算功能,可以对以分号隔开的各赋值语句,函数定义语句,表达式进行批量处理:
       例:输入1+2;a=3;b=4;c= a*b;c*2;效果如下:
无标题.png

然后点击计算按钮,效果如下:

无标题.png

     3.预设了25个变量,变量名为25个小写字母(26个小写字母中的e 除外),配合简单的赋值语句可以应对各种运算,来个简单的例子,详情看帮助!
       例:输入a=5;b=6;c= 7;((a+b+c)*(-a+b+c)*(a-b+c)*(a+b-c))√/4 效果如下:
无标题.png

然后点击计算按钮,效果如下:

无标题.png
上面的表达式是计算三角形的表面积公式。

4.增加了函数定义功能,支持所有的可以用表达式表达的函数,并且支持中文函数名,
例:定义一个正多面形表面积函数用用,在程序文本框中输入:
正多边形表面积(a,n)=n*a^2*cos(π/n)/(4*sin(π/n));    这里a代表边长,n代表有几个边,效果如下:
无标题.png

然后点击计算按钮,函数加入系统完成,可以在自定义函数组合框选定该函数运算:
然后输入a=5;n=21;正多边形表面积(a,n);或直按输入:正多边形表面积(5,21);效果如下:

无标题.png


下载地址:落叶高精度表达式计算器v1.1版
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2017-1-31 11:03:16 | 显示全部楼层
本帖最后由 happysxyf 于 2017-1-31 11:17 编辑

非常不错,建议把点键输入和表达式输入分开,弄成两种输入模式。在点键模式中√代表根号,根号3是根据点击顺序3、√来计算,类似微软的输入顺序。但在表达式输入时,则是按正常顺序写√3。你目前计算器就是这两种模式混淆了,导致表达式也成了倒着根号。

还有变量不能只限定为一个字母,应该在栈上建立一个变量表,专门存放变量名。

QQ图片20170131111521.png
sqrt2+sqrt3
QQ图片20170131111739.png
建议增加sqrt()开方函数,方便用户键盘录入根号。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2017-1-31 11:53:47 | 显示全部楼层
本帖最后由 落叶 于 2017-1-31 12:47 编辑

好的,谢谢,这些都是我没想到的,下版改正!!!
第一个问题可以快速解决,第二个问题我先想想!
我会为每一个特殊且难输入的运算符提供对应的函数。方便键盘输入。
变量方面准备增加自定义变量语句。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2017-1-31 12:54:48 | 显示全部楼层
本帖最后由 落叶 于 2017-1-31 13:32 编辑

正好试试自定义函数功能:sqrt(x)=x√;
sqrt(2) = 1.4142135623730950488016887242097
Natural√ = 1.6487212707001281468486507878142
sqrt(Natural) = 1.6487212707001281468486507878142
a=5
b=6
c=7
((a+b+c)*(-a+b+c)*(a-b+c)*(a+b-c))√/4 = 1.4696938456699068589183704448235E1
sqrt((a+b+c)*(-a+b+c)*(a-b+c)*(a+b-c))/4 = 1.4696938456699068589183704448235E1
好了,第一个问题初步解决!下次再从内部代码解决。
其它如度,分,秒也可以用你喜欢的函数名代替。也可对你不喜欢的函数名重新定义:
如:开立方(x)=cuberoot(x);
cuberoot(Natural) = 1.3956124250860895286281253196026
开立方(Natural) = 1.3956124250860895286281253196026

如果你不介意变量名后有一个"()",自定义变量现也可简单实现,如:mytemp1()=0;mytemp2()=0;好了,两个函数形式的变量已定义,
mytemp2()=8;
mytemp1()=9;
菱形周长(mytemp2(),mytemp1()) = 2.4083189157584590960256482060757E1
菱形周长(8,9) = 2.4083189157584590960256482060757E1
好了,现在有了两个非常难看的变量,变量的内容也是长期保存的,只到下一次赋值。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2017-1-31 15:38:32 | 显示全部楼层
落叶 发表于 2017-1-31 12:54
正好试试自定义函数功能:sqrt(x)=x√;
sqrt(2) = 1.4142135623730950488016887242097
Natural√ = 1.648 ...

还有Natural这名字不好,应该用exp(1)表示自然对数e,要与标准一致。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2017-4-4 23:52:27 | 显示全部楼层
64位系统无法运行,可能是COMDLG32.OCX版本问题。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2019-6-20 21:47 , Processed in 0.064099 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表