![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
落叶高精度表达式计算器技术详解
文章平均质量分 83
落叶无情
这个作者很懒,什么都没留下…
展开
-
高精度反正切函数的实现
高精度反正切函数的实现反正切函数的根本实现方法还是泰勒展开式逼近,但它不能单独采用,必须使自变量X趋进这个函数曲线的平滑度最高的点,这个点的收敛速度最快,反正切函数arctan(x)的这个点是0和无穷大。这里采用趋近零的方法,arctan(x)中的x的值大多是没法用泰勒展开式计算或计算量太大,时间太长。这里需要通过反正切公式推导出合适的新的公式,把对 Arctan(x)的直接运算转换成arctan(0.000…xxx)运算,然后通过公式反算回去:公式原型:Arctan(x)=Arctan(y)+Ar原创 2020-12-20 11:24:39 · 2344 阅读 · 1 评论 -
高精度对数函数的实现
针对高精对数,我目前已采用了容易编程和高效的方法。就是开方分解Ln(x)中的X(早先调试开方程序时就发现,大于零的数进行开方运算,当开方次数无限增加时,开方值无限接近1),当然开方不是乱用的,必需有理论或已有公式的支持,这个公式就是:,其实这个算法本身并不会使对数运算获得本质的提升,提速的根本是开平方有快速算法,这个和傅里叶变换对乘法的加速是一个原理,傅里叶变换本身也不会使乘法变快,提速的根本...原创 2016-05-22 18:39:11 · 3056 阅读 · 0 评论 -
高精度加,减法算法
大数加,减法目前我所知道的算法:1)对于用子符串形式表示的数,可以直接相加,减,例:1 的ascii码为49,2 的ascii码为50,1+2的字符串相加为49+50=99 ,再减去一次48等于51,51是3的ascii码。2)对于直接用数的值表示的数,可以直接相加减,也可以换算成大的进制表示形式进行运算,理论上大进制表示的数运行效率更高,如:1234+4567,当十进制时要运行4次加法,...原创 2017-07-30 10:03:55 · 791 阅读 · 0 评论 -
大数除法之估商法源码
Public Function myEXCEPT(str1 As StrToZx, str2 As StrToZx) As StrToZx '除法子程序 Dim a() As Long Dim b() As Long Dim i As Long Dim ysjg() As Long原创 2017-07-22 10:13:15 · 591 阅读 · 0 评论 -
大数(正整数)除法之多精除以单精
大数运算中会经常遇到多精除以单精的情况,有时也会把某些除法分解成多精除以单精加快运行速度,这里所说单精数是不超过cpu位长二分这一的数,32位机是65535,在此以千进制数为例讲解一下具体实现, For i = 1 To 被除数数组长度 运算结果(i) = 被除数(i) \ 单精数 被除数(i + 1) = (被除数(i) M...原创 2017-08-05 15:04:28 · 562 阅读 · 0 评论 -
大数除法之估商法
我用VB完整的实现了估商法,支持正负,小数,科学计数法,之所以说完整实现,是因为这个程序是我写的(落叶高精度表达式计算机)的子程序,能够和其它计算程序配合,实现高精度加减乘除,阶乘,乘方,开N次方,函数等混合运算.例:能够运行万位精度,开10000次方根正确运算,开N次方根是用的迭代法,为什么举这个例子,因为参入运算的子程序如果有问题,是计算不出正确结果的,现在这个计算机已完善:另外我再...原创 2017-07-22 10:04:43 · 3802 阅读 · 0 评论 -
基于泰勒展开式的高精三角函数实现
以sin()函数为例谈谈我的三种实现:公式是sinx=x−x33!+x55!−x77!+x99! ∑n=1∞(−1)nx(2n−1)(2n−1)!第一种是在硬算的基础上简单优化:下面是流程码 x2 = x*x 'x*x原创 2016-04-16 20:37:42 · 4607 阅读 · 0 评论 -
基于泰勒展开式的高精三角函数实现,方法三
对sin()的高精算法又进一步改进,分享一下,欢迎吧友们指正。还是针对sin()函数的泰勒展开式进行计算:用到改进公式:sinx=x−x⋅x^2(4⋅5⋅6⋅7⋅8⋅9−x^2(6⋅7⋅8⋅9−x^2(8⋅9−x^2)))/9!............. 此公式为本人原创,适合泰勒展开式中一部分公式加速运算,缺点是需要预先根据精度估算出所需的泰勒级数,程序变得复杂,冗余量很大,我在程序中最后没有...原创 2016-04-16 20:46:25 · 4023 阅读 · 0 评论 -
高精度对数函数的实现二
针对泰勒展开式:ln(1+x)=x-x^2/2+x^3/3-……+(-1)^(k-1)*(x^k)/k(|x|转换成:ln(1+x)=x(1-x(1/2-x(1/3-x(1/4-x(1/5..........)))))这样转换并没有提高效率,但可以预算1/2 1/3 1/4 1/5.....针对一万精度,因为经过了开方优化,这里只需要10000\70=133次泰勒级数运算,所以可以预制133个万位...原创 2016-05-25 21:05:15 · 1795 阅读 · 0 评论 -
高精度反三角函数的实现
本帖最后由 落叶 于 2016-6-5 09:16 编辑 经过了几天艰难的查资料,对高精反三角函数实现并运行成功,分亨一下, 主要资料参考:http://blog.163.com/shikang999@1 ... 962012426103454943/ 因为加入了我的改进,和我自已的方法,所以我在原创中发布: 这里反三角函数的根本实现方法还是泰勒展开式,但它不能单独...原创 2016-06-05 09:22:33 · 4686 阅读 · 2 评论 -
高精度乘方一
先说说整指数乘方,百度上搜到一个程序,效率很高,代码简洁:int pow(int x,int n){int temp(x),res(1);while(n){if(n&1){res *= temp;}temp *= temp;n>>=1;}return res;}把2^61代入运算,内存变化图是这样的:61的二进制形式是111101res = 2 2...原创 2016-06-17 14:01:33 · 1562 阅读 · 0 评论 -
高精度乘方二
上面只是说到整指数,如果指数是小数,情况就复杂多了,有一种方法是先把小数化成分数如2的1.2次方就等于2的5分之6次方,等价于2的6次方,再开5次方,yroot(5,2^6)=2.2973967099940700135972538935559这个方法缺点很大,如2^0.1111111111111111等于2的10000000000000000次方,然后再开1111111111111111次方这...原创 2016-06-17 14:04:13 · 867 阅读 · 0 评论 -
多精度通用加法子程序源码
Type StrToZx '高精度数的结构头 ZhFhBz As Boolean '正负号标志,正为1,负为0 XsdWz As Long '小数点右边数字的长度。例1234.56中这个数是2原创 2016-12-12 22:12:19 · 515 阅读 · 0 评论