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

转载 2015年07月10日 17:29:16
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

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

format这个函数不是用于控制运算精度的,它只能控制结果显示类型。运算的时候还是用matlab自己的精度,具体是多少就不知道了。   matlab控制运算精度用的是digits和vpa这两个函...
  • zhuifengren2012
  • zhuifengren2012
  • 2014年08月31日 19:02
  • 1729

MATLAB控制运算精度

先来看一段MATLAB代码    clear;   theta = 264.3783;   t1 = [cos(theta); cos(2*theta);cos(3*theta); cos(...
  • wenyusuran
  • wenyusuran
  • 2014年08月04日 10:36
  • 2288

Matlab并行运算

Matlab并行运算 目前,新购置的电脑大部分都是多核的了,使用Matlab进行大量计算时如何有效利用多核呢?Matlab目前版本已经比较好的支持多核并行运算了。是用的Matlab版本是R2007b...
  • chenbang110
  • chenbang110
  • 2013年09月11日 10:32
  • 5972

【Matlab】text函数使用方法

功能: 在当前轴中创建text对象。函数text是创建text图形句柄的低级函数。可用该函数在图形中指定的位置上显示字符串。 用法: text(x,y,'string')在图形中指定的位置(x,y)...
  • hero_myself
  • hero_myself
  • 2014年12月23日 23:31
  • 2951

如何提高 matlab 计算速度 运算效率

最近在网上查了一些资料,并结合自己的经验,就如何提高matlab计算效率,总结一下几个原则: 1. 提前给数组分配大小。 2. 尽量用矢量计算,减少 for 循环。 3. 尽量调用 mal...
  • robert_chen1988
  • robert_chen1988
  • 2016年10月20日 01:10
  • 3008

Matlab图像代数运算

图像的代数运算是指多幅图像的加、减、乘、除和一般的线性运算。图像的代数运算不但可以作为复杂图像处理的预处理步骤,还有其它许多用途,如:加法对同一场景的多幅图像求平均,可以有效地降低具有叠加性质的随机噪...
  • u010485442
  • u010485442
  • 2014年07月26日 11:07
  • 2158

Matlab fread的问题:imwrite写single精度的大矩阵,结果不对

前面的博客《C++读取Matlab的mat文件的注意事项》中讲了如何在C++中读取mat文件,这里我们将mat文件转成二进制文件。然后用标准的读取读取文件流的方法来读取。 当然,对于矩阵型的mat文...
  • zzz7290
  • zzz7290
  • 2014年01月01日 17:56
  • 2000

python中运算过程中小数精度的控制

用python进行运算时,如果会出现浮点数,有时候会需要对小数精度进行控制,主要方法有以下几种:1、round()round()是python的内置方法, round()如果只有一个数作为参数,不指定...
  • xiaodongxiexie
  • xiaodongxiexie
  • 2017年02月08日 22:06
  • 2142

matlab学习笔记(三)---图像的代数运算

1、绝对值差函数imabstiff I=imread('cameraman.tif'); J=uint8(filter2(fspecial('gaussian'),I)); K=ima...
  • u012495573
  • u012495573
  • 2015年11月11日 14:58
  • 2263

MATLAB绘制B样条曲线

1 B样条曲线1.1 B样条曲线定义B样条方法具有表示与设计自由型曲线曲面的强大功能,是形状数学描述的主流方法之一,另外B样条方法是目前工业产品几何定义国际标准——有理B样条方法(NURBS)的基础。...
  • Mr_Grit
  • Mr_Grit
  • 2015年05月09日 18:50
  • 9038
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:matlab控制运算精度函数digits(A)和vpa(B)的使用方法
举报原因:
原因补充:

(最多只允许输入30个字)