完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
可变精度算术运算 因为数值的精度受每次操作所保留的数位的限制,所以数值的任何运算都会引入舍入误差,重复的多次数值运算会造成累积误差。而对符号表达式的运算是非常准确的,因为它们不需要进行数值运算,所以无舍入误差。对符号运算结果用函数eval或numeric,仅在结果转换时会引入舍入误差。 matlab对数的处理完全依靠计算机的浮点算术运算,显然在内存中进行运算,又快又好,只是浮点运算受到所支持字长的限制,每次操作会引入舍入误差,所以不能产生精确的结果。MATLAB中各个算术运算的相对精度大约是16位。相反,Maple的符号处理能力可以实现任何数位的运算。当缺省的数位增加时,每次计算就需要附加时间和计算机内存。 Maple缺省为16位的精度。函数digits返回全局Digits参数的当前值。Maple缺省准确度可以由digits(n)来改变,其中n是所期望的准确度数位。用这种方法增加准确度的副作用是,每个Maple函数随后进行的计算都以新的准确度为准,增加了计算时间。结果的显示不会改变,只有所用的Maple函数的缺省准确度受到影响。 另外有一个函数,它可以任何精度实行单个计算,而使全局的Digits参数不变。即:可变精度的算术或函数vpa,它以缺省的精度或任何指定的精度对单个符号表达式进行计算,并以同样的精度来显示结果。
>> format long % let ' s see all the usual digits
>> pi % how about to numeric accuracy ans= 3.14159265358979
>> digits % display the default ' Digits ' value Digits=16
>> vpa(' pi ') % how about to ' Digits ' value ans= 3.141592653589793
>> digits(18) % change the default to 18 digits
>> vpa(' pi ') % how about to ' Digits ' accuracy ans= 3.14159265358979324
>> vpa( ' pi ' ,20) % how about to 20 digits ans= 3.1415926535897932385
>> vpa( ' pi ' ,50) % how about to 50 digits ans= 3.1415926535897932384626433832795028841971693993751
>> vpa( ' 2^(1/3) ' ,200) % the cube root of 2 to 200 digits ans= 1.2599210498948731647672106072782283505702514647015079800819751121552996765
将函数vpa作用于符号矩阵,对它的每一个元素进行计算也同样达到所指定的位数。
>> A=sym( ' [1/4,log(sqrt(2));exp(1),3/7] ' ) A= [ 1/4 , log(sqrt(2))] [exp(1) , 3/7)]
>> vpa(A,20) % evaluate to 20 digits ans= [ .2500000000000000000, .34657359027997265471] [2.7182818284590452354, .42857142857142857143] |
|
相关推荐 |
|
1509 浏览 1 评论
200圆!求助大佬给一份VSG并网和离网模式的simulink仿真
1799 浏览 0 评论
MATLAB(3)--矩阵的引用(sub2ind、ind2sub、reshape函数使用)
2613 浏览 0 评论
2951 浏览 0 评论
4094 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 20:23 , Processed in 0.766598 second(s), Total 47, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号