Board logo

标题: [其他] 数学计算工具i 1.8版 [打印本页]

作者: happy886rr    时间: 2016-4-29 23:02     标题: 数学计算工具i 1.8版

本帖最后由 happy886rr 于 2016-6-17 07:51 编辑

地址http://pan.baidu.com/s/1boLGeL5
  修订:数学计算工具i版本1.8,此次修订兼并、删除近30%冗余功能,增加10%新特性,并将体积控制在30KB。增加求解方程组模式,增加计算自然底数e,提升斐波那契数的计算能力(可计算至第50万项),采用了双引擎素数筛法,强大的盾构机筛引擎可以在几毫秒内随意筛选 九千九百九十九亿 以内的素数(目前第一万亿溢出筛不到,但前9999亿完全可筛),使用素数切片的交互概念,一切都是如此迅捷。

  数学计算工具集(第一季):十几个在数学计算领域里极为强悍的小工具打包为一个集合,涵盖了从数论、数值计算、分形绘图 等各个方面的功能,可满足一般的科学计算需求,即便是mathematica她的算法也有很多错误之处,因此你除了安装接近几个G的mathematica之外,还有另外一种选择,就是这些强悍的小工具,绘图能力,尤其是曲线细节描绘远超mathematica。python、julia虽擅常数学计算,但她们的效率与C或汇编比起来非常低下,julia能在3秒内筛选9亿内素数,但是C+汇编+多线程算法优化使得这些小工具可以在1秒内筛选百亿甚至数百亿内的素数。附带gmp静态库,可计算上亿项的斐波那契数列,千万级别阶乘运算组合数、以及各类大数运算函数。

  时间:2016-05-23
  1. [Happy's "i" Version:1.8]
  2. 欢迎使用数学计算工具i
  3.     1┌Fibonacci数       i/fib     [项数]
  4.      └Fibonacci数求和   i/fib.sum [项]
  5.     2┌阶乘              i/fac     [n]
  6.      ├底数e             i/e       [有效位数]
  7.      └圆周率π          i/pi      [有效位数]
  8.     3┌统计              i/sti     {样本数组}
  9.      ├求和              i/sum     {数组}
  10.      └均值              i/ave     {数组}
  11.     4┌等差求和          i/es      [首项] [公差] [项数]
  12.      └等比求和          i/eg      [首项] [公比] [项数]
  13.     5┌圆面积            i/S       [半径]
  14.      └三角形面积        i/S       {三边长}
  15.     6┌球体积            i/V       [半径]
  16.      └圆柱体积          i/V       [半径] [圆柱高]
  17.     7┌排列计算          i/P       [n] [m]
  18.      └组合计算          i/C       [n] [m]
  19.     8┌素数概览          i/pri     [范围]
  20.      ├素数切片          i/pri     [始] [末]
  21.      ├素数统计          i/pri.count  [范围]
  22.      ├第n个素数         i/pri.index  [n]
  23.      ├第n个到第m个素数  i/pri.index  [n] [m]
  24.      ├素性检测          i/pri?    [待测数]
  25.      └素数累加和        i/pri.sum [范围]
  26.     9┌一元n次方程       i/i       {方程系数}
  27.      ├单位复根          i/i       [幂]
  28.      └方程组模式        i/ii
  29.     *工具箱
  30.      ┌复利计算          i/cpr     [本金] [利率] [复利次数]
  31.      ├年金计算          i/ypr     [年金] [利率] [计息期数]
  32.      ├个税计算          i/pit     [收入] [三险一金]
  33.      ├日期间隔          i/date    {开始日期} {结束日期}
  34.      ├幻方打印          i/mag     [阶数]
  35.      ├高精度四则        i/hip     ["表达式"]
  36.      └化学元素周期表    i/ele
  37.     *Hash计算
  38.      ┌ 字符串摘要       i/hash    ["字符串"]
  39.      ├md5文件摘要       i/md5     ["文件路径"]
  40.      └16位md5摘要       i/md5.16  ["文件路径"]
  41.     *Shell>>             i/shell
复制代码
用法:
  1.举个简单例子,比如我要求1到9的和,有两种写法:
  1. REM 数组求和
  2. i/sum 1 2 3 4 5 6 7 8 9
  3. REM 等差数列求和
  4. i/es 1 1 9
复制代码
2.查看化学元素周期表,下面的命令瞬间就会出现神奇。
  1. i/ele
复制代码
3.表达式计算,采用StarWing的灵感结合词法分析,可进行非常丰富的表达式运算。支持多种函数:
  1. 常数类
  2. pi    3.141592653589
  3. e     2.718281828489
  4. 通用类
  5. round 四舍五入
  6. floor 整取
  7. ceil  向上舍入
  8. deg   角度转弧度
  9. sqrt  开方
  10. lg    常用对数,以10为底
  11. ln    自然对数
  12. //    整除
  13. %     取余数
  14. ^     次方
  15. 三角函数类
  16. sin、cos、tan   
  17. arcsin、arccos、arctan
  18. 双曲函数类
  19. sinh、cosh、tanh
  20. arcsinh、arccosh、arctanh
复制代码
请使用命令进入shell计算模式
  1. REM 进入shell计算模块
  2. i/shell
复制代码
直接输入、或粘贴表达式,即刻出结果。
  示例计算((3*3+2)%6+7.187)*5-7/189,使用如下命令:
  1. [code]
  2. REM 粘贴表达式计算
  3. >>((3*3+2)%6+7.187)*5-7/189
  4. = 60.897962962963
复制代码
复杂的多函数混合嵌套计算,直接复制粘贴算式就行,计算更本不需要时间。
  1. >>3+5tan5lnlge+6pi*tanpi+arcsin0.75+lge+lnpi+6pi-tanpi+arcsin0.75+lge+lnpi+6pi*tanpi+arcsin0.75+lge+lnpi+6pi-tanpi+arcsin0.75+lge+lnpi+6pi-tanpi+arcsin0.75+lge/lnpi+6pi-tanpi+arcsin0.75+sin0.75+lge+lnpi//2+5tan5lnlge+6pi*tanpi+arcsin0.75*tanpi+arcsin0.75+lge+lnpi+6pi-tanpi+arcsin0.75+lge+lnpi+6pi-tanpi+arcsin0.75+lge+lnpi+6pi*tanpi+arcsin0.75+lge+lnpi+6pi-tanpi+arcsin0.75+lge+lnpi+6pi-tanpi+arcsin0.75+lge/lnpi+6pi-tanpi+arcsin0.75+sin0.75+lge+lnpi//2+5tan5lnlge+6pi*tanpi+arcsin0.75*tanpi+arcsin0.75+lge+lnpi+6pi-tanpi+arcsin0.75
  2. = 708.20927815645
复制代码
基于词法分析,支持数学风格的书写式,比如计算5*(arctan(cos(sin(ln(lg(2.71828)))))),许多编程语言只能接受这种带有许多括号及*号区分的表达式,但是现在你完全可以不写任何乘号和括号,直接这样写5arctancossinlnlge,i工具会自己识别判断。测试如下:
  1. REM 加括号和乘号的结果
  2. >>5*(arctan(cos(sin(ln(lg(2.71828))))))
  3. 答案=3.17898...
  4. REM 不加括号和乘号的结果
  5. >>5arctancossinlnlge
  6. 答案=3.17898...
复制代码
4.排列组合计算,比如我要计算双色球中百万大奖的概率是多少?就是算组合数C(33,6)*16的倒数:
  1. REM 计算组合数C(33,6)
  2. i/C 33 6
  3. =1107568
  4. i/shell 1/(16*1107568)
  5. =0.000000056430
  6. REM 只有可怜的亿分之5.643左右的概率
复制代码
5.增加复利、年金、个税计算等实用功能。
  1. REM 复利计算
  2. i/CPR     [本金] [利率] [复利次数]
  3. REM 年金计算
  4. i/YPR     [年金] [利率] [计息期数]
  5. REM 个税计算
  6. i/PIT     [收入] [三险一金]
复制代码
6.打印一个12阶幻方。
  1. i/mag 12
  2. ┌────────────────────────┐
  3. 144   2   3   4   5 139 138   8   9  10  11 133
  4.   13 131  15  16 128  18  19 125  21  22 122  24
  5.   25  26 118 117  29  30  31  32 112 111  35  36
  6.   37  38 106 105  41  42  43  44 100  99  47  48
  7.   49  95  51  52  92  54  55  89  57  58  86  60
  8.   84  62  63  64  65  79  78  68  69  70  71  73
  9.   72  74  75  76  77  67  66  80  81  82  83  61
  10.   85  59  87  88  56  90  91  53  93  94  50  96
  11.   97  98  46  45 101 102 103 104  40  39 107 108
  12. 109 110  34  33 113 114 115 116  28  27 119 120
  13. 121  23 123 124  20 126 127  17 129 130  14 132
  14.   12 134 135 136 137   7   6 140 141 142 143   1
  15. └────────────────────────┘
复制代码
7.hash计算模式,支持字符串hash计算:
  1. i/hash i
  2. Crc32 : e66c3671
  3. Md5   : 865c0c0b4ab0e063e5caa3387c1a8741
  4. Sha1  : 042dc4512fa3d391c5170cf3aa61e6a638f84342
  5. Sha256: de7d1b721a1e0632b7cf04edf5032c8ecffa9f9a08492152b926f1a5a7e765d7
复制代码
文件md5效验
  1. i/md5 i.exe
  2. REM 32位md5摘要
  3. MD5 Code:0a3c2eb8c4de4c0184dda0b9fdd82655
  4. i/md5.16 i.exe
  5. REM 16位md5摘要
  6. MD5 Code:c4de4c0184dda0b9
复制代码
8.高性能的素数分析工具。

  列出100万以内的素数
  1. i/pri 1000000
  2. 在1000000以内共有78498个素数
  3. ┌────────────────────────┐
  4.          2         3         5         7        11
  5.         13        17        19        23        29
  6.         31        37        41        43        47
  7.         53        59        61        67        71
  8.         73        79        83        89        97
  9.     ......
  10.     999613    999623    999631    999653    999667
  11.     999671    999683    999721    999727    999749
  12.     999763    999769    999773    999809    999853
  13.     999863    999883    999907    999917    999931
  14.     999953    999959    999961    999979    999983
  15. └────────────────────────┘
  16. 该范围内最大的素数为:999983
复制代码
列出一亿到一亿500之间的素数
  1. i/pri 100000000 100000500
  2. 在 100000000 到 100000500 区间内共有27个素数
  3. ┌────────────────────────┐
  4. 100000007 100000037 100000039 100000049 100000073
  5. 100000081 100000123 100000127 100000193 100000213
  6. 100000217 100000223 100000231 100000237 100000259
  7. 100000267 100000279 100000357 100000379 100000393
  8. 100000399 100000421 100000429 100000463 100000469
  9. 100000471 100000493
  10. └────────────────────────┘
复制代码
统计300亿内的素数个数
  1. i/pri.count 30000000000
  2. 在30000000000以内共有1300005926个素数
复制代码
列出第1000万个素数
  1. i/pri.index 10000000
  2. 第10000000个素数是179424673
复制代码
列出第10001个素数到第10050个素数之间的素数
  1. i/pri.index 10001 10050
  2. 第10001个素数 到 第10050个素数
  3. ┌────────────────────────┐
  4.     104743    104759    104761    104773    104779
  5.     104789    104801    104803    104827    104831
  6.     104849    104851    104869    104879    104891
  7.     104911    104917    104933    104947    104953
  8.     104959    104971    104987    104999    105019
  9.     105023    105031    105037    105071    105097
  10.     105107    105137    105143    105167    105173
  11.     105199    105211    105227    105229    105239
  12.     105251    105253    105263    105269    105277
  13.     105319    105323    105331    105337    105341
  14. └────────────────────────┘
复制代码
检测一个数是否是素数
  1. i/pri? 100000357
  2. 100000357 是素数
复制代码
计算30亿内的素数和
  1. i/pri.sum 3000000000
  2. 211169315361937456
复制代码
9.高次方程求解,三次方程参考范盛金的数学公式,四次方程采用费拉里降次为两个二次方程,五次方程没有精确的求根公式,采用牛顿迭代法(利用导线逼近0点)进而降次为四次方程。求解过程非常简单只需要使用/i 开关,将方程的系数输入便可得到所有解(包含复数解)。
  举例,求解方程3x^4+5x^2-6x=9,由于该方程没有x^3项,所以x^3项对应的系数写0,注意到“=9”等号右边的系数取负,因此用i工具来求解应该这样输入:
  1. i/i 3 0 5 -6 -9
  2. 一元四次方程3x^4+0x^3+5x^2-6x-9=0的解为:
  3. ┌────────────────────────┐
  4.   共轭复根:-0.252438186547+1.696390660707i
  5.             -0.252438186547-1.696390660707i
  6.   实数解为: 1.293411063722
  7.             -0.788534690627
  8. └────────────────────────┘
复制代码
再如求解等系数方程x^36+x^35+x^34+x^33+...+x^2+x^1+x^0=0,该方程所有系数均为1,共有37个1,所以直接i/i 37
  1. i/i 37
  2. 等系数方程x^36+x^35+x^34+x^33+x^32+x^31+x^30+x^29+x^28+x^27+x^26+x^25+x^24+x^23+x^22+x^21+x^20+x^19+x^18+x^17+x^16+x^15+x^14+x^13+x^12+x^11+x^10+x^9+x^8+x^7+x^6+x^5+x^4+x^3+x^2+x^1+1=0的解为:
  3. ┌────────────────────────┐
  4.       x[ 1]= 0.985615910348+0.169000820322i
  5.       x[ 2]= 0.942877445461+0.333139794742i
  6.       x[ 3]= 0.873014113161+0.487694943814i
  7.       x[ 4]= 0.778035754318+0.628219997296i
  8.       x[ 5]= 0.660674723390+0.750672305253i
  9.       ... ...
  10.       ... ...
  11.       x[32]= 0.660674723390-0.750672305253i
  12.       x[33]= 0.778035754318-0.628219997296i
  13.       x[34]= 0.873014113161-0.487694943814i
  14.       x[35]= 0.942877445461-0.333139794742i
  15.       x[36]= 0.985615910348-0.169000820322i
  16. └────────────────────────┘
复制代码
再来看下,智能的自动降次功能
  1. i/i 0 0 0 0 1 5
  2. 一元五次方程0x^5+0x^4+0x^3+0x^2+1x+5=0的解为:
  3. ┌────────────────────────┐
  4.   降为一元四次方程
  5.   降为一元三次方程
  6.   降为一元二次方程
  7.   降为一元一次方程
  8.   实数解为:x=-5.000000000000
  9. └────────────────────────┘
复制代码
直接来个五次方程的迭代解
  1. i/i 1 2 3 4 5 6
  2. 一元五次方程1x^5+2x^4+3x^3+4x^2+5x+6=0的解为:
  3. ┌────────────────────────┐
  4.   共轭复根:-0.913952173245+1.001776220695i
  5.             -0.913952173245-1.001776220695i
  6.   共轭复根: 0.538952173245+1.158003637160i
  7.              0.538952173245-1.158003637160i
  8.   迭代解为:-2.000000000000
  9. └────────────────────────┘
复制代码

作者: shootman2    时间: 2016-4-29 23:57

沙发,赞一个!
作者: codegay    时间: 2016-4-30 04:25

本帖最后由 codegay 于 2016-4-30 05:51 编辑

h,help显示帮助,q或者exit退出,比较符合习惯和直觉。
作者: happy886rr    时间: 2016-4-30 08:43

回复 3# codegay
显示帮助 i/?
退出 i
力求简洁,形成一种特有语法体系。因是初版,很多功能都没集成,比如计算积分,解方程,还有绘图引擎都在测试阶段,千万位的大数运算库还在编写,业余搞搞,进度很慢。
作者: CrLf    时间: 2016-4-30 10:53

不知楼主介不介意分享源码?

类似功能的第三方:
http://www.bathome.net/thread-35723-1-1.html
其算式解析部分基于:
http://bbs.bccn.net/thread-245044-1-1.html
作者: CrLf    时间: 2016-4-30 12:05

有些功能是否能合并?比如椭圆面积和正圆面积
作者: happy886rr    时间: 2016-5-10 00:21

回复 3# codegay
已加入q退出,帮助信息直接输i就能看到,增加了很多新功能。体积暴涨到28KB。
作者: happy886rr    时间: 2016-5-10 00:23

回复 6# CrLf
已合并圆、椭圆计算公式,并且增加了hash算法。增加了许多其他计算功能、完善了表达式计算。在尾部有源代码地址,附带数万行开源项目代码。
作者: happy886rr    时间: 2016-5-10 00:30

回复 5# CrLf
大师,算式解析部分,我对C不太懂,用的也是编程论坛那个方案。我请教了Abacus的作者,他的项目是公认最好的,但是我无法读懂他的巨大的代码,所以表达式解析还是在用StarWing的方案。
另外我发现hash.exe在计算超过2G的文件时,md5值是溢出的,因此我在i工具里集成了大文件md5算法。
作者: codegay    时间: 2016-5-10 00:55

回复 9# happy886rr


    日期格式和计算经常用到。可以考虑做一个。
作者: happy886rr    时间: 2016-5-10 09:36

回复 10# codegay
是计算时间差吗?还是别的?
作者: codegay    时间: 2016-5-10 09:44

回复 11# happy886rr


    嗯。论坛里经常有问到类似问题的。日期差,时间差,时期日期格式化之类的。
很久很久以前我也需要。不过现在会python了,可以自己解决了。
作者: happy886rr    时间: 2016-5-10 09:47

回复 12# codegay
好吧,等下一版,连正则表达式文本替换,文本排版,文件改名,时间一起集成进去,但是那样体积会增大到100KB之多。
作者: CrLf    时间: 2016-6-17 00:09

下载地址不存在...是在筹备新版吗?
作者: happy886rr    时间: 2016-6-17 08:12

回复 14# CrLf
大师,链接已可用。未筹划,因为我把十几个数学工具打包成为数学计算工具集了,里边涵盖很多命令行以及窗口界面的数学计算、绘图工具。GP很优秀的命令行,gmp大数运算库...。我觉得这些计算工具足以解决很专业的数学计算需求。刚完成的是一个类似安卓厨房的制作手机固件制作批处理,几千行批处理代码。就是自动制作各种ROM,root手机、备份app和用户信息,安卓内核的修改,recovery移植等等。
  1. @echo off&title
  2. setlocal enabledelayedexpansion
  3. color 0f
  4. ::安全保护
  5. if not exist "%~dp0Tools\" (exit)
  6. ::设置ROM路径
  7. set "ROMr=!CD!\ROM"
  8. ::设置工作路径
  9. PUSHD "%~dp0Tools"
  10. ::APK安装器
  11. if "%~x1"==".apk" (
  12. mode con cols=45 lines=11
  13. echo  ┌──────—─————┐
  14. echo  丨 ^*  Apk急速安装器  ^*    丨
  15. echo  └────────————┘
  16. echo ---^>正在安装%~nx1
  17. adb install %1 >NUL && echo ---^>安装成功 || echo ---^>安装失败
  18. ping -n 2 127.0.0.1>NUL
  19. exit
  20. )
  21. ::设置窗体
  22. mode con cols=58 lines=38
  23. ::设置java环境变量
  24. :head
  25. if exist .\jre\EnableJre\ (
  26. set "JAVA_HOME=!CD!"
  27. set "PATH=!PATH!;!JAVA_HOME!\jre\bin"
  28. set "dif=内置"
  29. ) else (set "dif=系统")
  30. ::创建重要目录
  31. if not exist .\temp\ (md .\temp 1>NUL 2>NUL)
  32. if not exist !ROMr!\ (md !ROMr!)
  33. if not exist !ROMr!\ (md !ROMr!)
  34. ::操作标示
  35. set "be1= "
  36. set "be2= "
  37. set "be3= "
  38. set "be4= "
  39. set "be5= "
  40. set "be6= "
  41. set "be7= "
  42. set "be8= "
  43. set "be9= "
  44. set "be0= "
  45. set "ie1= "
  46. set "ie2= "
  47. set "ie3= "
  48. set "be4= "
  49. set "be5= "
  50. set "be6= "
  51. set "be7= "
  52. set "be8= "
  53. set "be9= "
  54. set "be0= "
  55. set "ie1= "
  56. set "ie2= "
  57. set "ie3= "
  58. set "ie4= "
  59. set "ie5= "
  60. set "ie6= "
  61. set "ie7= "
  62. set "ie8= "
  63. set "ie9= "
  64. set "ie0= "
  65. set "ue2= "
  66. set "ue3= "
  67. set "ue4= "
  68. set "ue5= "
  69. set "ue6= "
  70. :main
  71. ::关闭自动脚本
  72. set NX=0
  73. cls
  74. echo ROM魔盒
  75. echo  ┌────────┬────────┬────────┐
  76. echo  丨反编译工具      丨模拟终端        丨内核编辑     (K)丨
  77. echo  丨  ┌ApkTool2.0.3丨   A# Adb Shell 丨   K# Kernel    丨
  78. echo  丨1#丨ApkTool1.5  丨                丨                丨
  79. echo  丨  └ShakaApk    丨备份还原        丨签名工具     (S)丨
  80. echo  丨                丨   B# BackUp    丨   S# SignApk   丨
  81. echo  丨优化工具        丨                丨                丨
  82. echo  丨   2# 合并odex  丨清空目录        丨旗舰功能     (U)丨
  83. echo  丨   3# OdexROM   丨   C# Clean     丨   U# Ultimate  丨
  84. echo  丨   4# Odex手机  丨                ├────────┘
  85. echo  丨                丨集成工具        丨
  86. echo  丨ROM工具         丨   I# Integrate 丨
  87. echo  丨   5# ROM 打包  丨                丨
  88. echo  丨   6# ROM 提取  丨JAVA切换        丨
  89. echo  丨   7# ROM 解包  丨   J# Jre^(!dif!^) 丨
  90. echo  丨   8# 无损解包  ├────────┘
  91. echo  丨   9# ROM 优化  丨
  92. echo  丨   0# ROM 信息  丨
  93. echo  丨   00 刷机脚本  丨
  94. echo  └────────┘
  95. set "cho="
  96. set /p cho=请选择:
  97. if "!cho!"=="" (goto main)
  98. goto BOX!cho:#=!
  99. exit
  100. :BOX00
  101. cls
  102. echo.
  103. echo ====================================
  104. echo  ###   刷机脚本编写   ###
  105. echo ====================================
  106. echo  1-创建刷机脚本
  107. echo  2-在刷机脚本中添加busybox !ue2!
  108. echo  3-在刷机脚本中添加su !ue3!
  109. echo  4-在刷机脚本中添加boot.img !ue4!
  110. REM 之后省略几千行...
复制代码

作者: happy886rr    时间: 2016-6-17 11:26

回复 14# CrLf
自己只是入门水平,去年连批处理也不会。这个论坛让我学到很多批处理技巧,受益颇丰。

未来就是那1600+第三方,很多功能有重复,完全可以做个迷你版的第三方合集,压缩为30M左右,包含常用重要第三方,就叫他“mini第三方”了。
作者: codegay    时间: 2016-6-17 12:15

回复 16# happy886rr


    .....你这进步速度太快。
作者: CrLf    时间: 2016-6-17 12:28

回复 16# happy886rr


    这个项目可以有,我看打个包就可以了,gawk sed curl wget 等必备,还有其他的推荐吗?
作者: happy886rr    时间: 2016-6-17 13:29

回复 18# CrLf

计算md5的太多,一个hash.exe就足够好用。不知第三方的下载量有没有统计过,把下载量排前几名的打包,做成一键的,用户点一下就自动将mini第三方的路径添加到环境变量。顺带把bcn也打包进去,这样未包含的第三方也可以用bcn获得。就是做成类似mingw的小集合。方便用户一键部署Batchhome第三方,从而在几秒内就建立一个cmd的扩展工具集,使目标电脑的批处理功能大为增强。
作者: CrLf    时间: 2016-6-17 13:34

回复 19# happy886rr


    回头统计一下看看
作者: happy886rr    时间: 2016-6-17 13:34

回复 17# codegay


    好多python都是看你的,然后模仿你的写法。你的py写的非常规范成熟。
作者: codegay    时间: 2016-6-23 13:12

回复 21# happy886rr


    这么说我好脸红,我的写法不是规范的。
python有个PEP8 规范,如果你还继续学python,应该看看这个。
有些公司可能有编码规范,估计和PEP8规范差不多。
作者: CrLf    时间: 2016-6-24 10:12

呃,网盘好像又挂了...
作者: vinememz    时间: 2021-1-28 22:05

下載鏈接掛了




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2