matlab控制运算精度函数digits(A)和vpa(B)的使用方法

format这个函数不是用于控制运算精度的,它只能控制结果显示类型。运算的时候还是用matlab自己的精度,具体是多少就不知道了。
  matlab控制运算精度用的是digits和vpa这两个函数。
  digits用于规定运算精度,比如:
  digits(20);
  这个语句就规定了运算精度是20位有效数字。但并不是规定了就可以使用,因为实际编程中,我们可能有些运算需要控制精度,而有些不需要控制。vpa就用于解决这个问题,凡是用需要控制精度的,我们都对运算表达式使用vpa函数。例如:
  digits(5);
    a=vpa(sqrt(2));
  这样a的值就是1.4142,而不是准确的1.4142135623730950488016887242097......
  又如:
  digits(5);
    a=vpa(sqrt(2));
  b=sqrt(2);
  这样a的值是1.4142,b没有用vpa函数,所以b是1.4142135623730950488016887242097......
  vpa函数对其中每一个运算都控制精度,并非只控制结果。
  digits(11);
  a=vpa(2/3+4/7+5/9);
  b=2/3+4/7+5/9;
  a的结果为1.7936507936,b的结果为1.793650793650794......也就是说,计算a的值的时候,先对2/3,4 /7,5/9这三个运算都控制了精度,又对三个数相加的运算控制了精度。而b的值是真实值,对它取11位有效数字的话,结果为1.7936507937,与a不同,就是说vpa并不是先把表达式的值用matlab本身的精度求出来,再取有效数字,而是每运算一次,都控制精度。
  vpa对它括起来的运算每一次都控制精度,但有一点需要注意,vpa对函数的参数不起作用。
  举一个例子:
  digits(5);

  a=vpa(sqrt(2/3));

b=vpa(sqrt(vpa(2/3)));
  结果a为0.81649,b为.81650。sqrt是一个函数,2/3是参数,也就是说,a式中,vpa对2/3是不起作用的,只对sqrt函数的返回值作用。如果想达到2/3的精度也要控制的效果,就要用b式,对参数也使用vpa函数。
  还有一点,digits这个函数不是必需的,vpa可以这样用:
  vpa(表达式,运算精度);
  举例来说:
  vpa(pi,5);
  和
  digits(5);
  vpa(pi);
  结果是一样的,vpa不指定运算精度,就用digits函数指定的。如果也没有用digits函数,那就是按matlab本身的精度来运算


转载自http://blog.sina.com.cn/s/blog_65c1064a01010xqv.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: digits()函数MATLAB中用于设置数字显示精度函数。它可以控制数字的小数位数和有效数字位数。默认情况下,MATLAB显示5位小数和16位有效数字。使用digits()函数可以改变这些设置。 例如,如果要将数字显示精度设置为10位小数和30位有效数字,可以使用以下命令: digits(30); format long; 这将使MATLAB显示30位有效数字和10位小数。注意,digits()函数只影响数字的显示,而不影响计算精度。如果需要更高的计算精度,可以使用MATLAB的Symbolic Math Toolbox。 ### 回答2: MATLAB是一种非常流行的科学计算软件,它具有非常丰富的内置函数库,digits()函数就是其中一个常用的函数digits()函数是用来指定MATLAB的浮点数精度的,也就是说,它可以控制MATLAB显示浮点数时的小数位数。默认情况下,MATLAB的浮点数的精度为16位,但是可以通过digits()函数来进行修改。 使用digits()函数很简单,只需要在命令窗口中输入digits(n),其中n表示你想要设置的位数,然后按下回车键即可。例如:digits(5)表示将浮点数的精度设置为5位小数。一旦设定了精度MATLAB所有的浮点数计算和输出都会按照这个设置来进行。 但是需要注意的是,在实际使用中,digits()函数不应当过分使用,因为它可能会影响到MATLAB计算精度。这也就意味着,digits()函数只应当在需要精确控制小数位数的情况下使用。 除此之外,digits()函数还可以用来进行数字截断。例如:digits(5),然后输入1/3,将得到0.33333,而不是0.333333333333333(默认情况下的精度)。这种截断在某些情况下可以帮助我们更方便地进行手动计算。 总之,digits()函数MATLAB中非常常用的一个函数,它能够帮助我们控制和调整浮点数的精度,但是需要考虑到它对计算精度的影响。因此,在使用digits()函数时需要谨慎操作,以免给结果带来不利的影响。 ### 回答3: MATLAB中的"Digits"函数用于控制当前工作空间中的数字显示精度。它是MATLAB的内置函数,主要是为了使数值在计算时更加精确而产生的。 例如,当您输入一个数字时,默认显示格式是浮点格式,比如: >> a = 1/3 a = 0.3333 但在某些情况下,我们需要使用更高的精度来计算数字。为此,可以使用Digits函数来设置当前工作空间中数字的显示精度。其语法如下: Digits(n) 其中,n是表示要显示的数字的位数,可以是任意非负整数。例如,通过输入Digits(10),将显示十位数字,如下所示: >> Digits(10) Digits will be displayed with 10 digits after the decimal point. >> a = 1/3 a = 0.3333333333 请注意,设置所需的高精度的数字显示精度会影响所有在MATLAB中进行的数字计算的结果。 当您完成需要高精度的计算时,可以将Digits函数重置为默认值,即Float格式(通常为16位数字)。如下所示: >> Digits Digits will be displayed with 16 digits after the decimal point. >> Digits(0) >> a = 1/3 a = 0.3333 除此之外,Digits函数还可以用于在符号计算中使数字更加精确。例如,当您使用符号变量时,将Digits函数设置为更高的位数将提高结果的精度

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值