Matlab___VPA函数

VPA函数

matlab控制运算精度用的是digitsvpa这两个函数

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.4142b没有用vpa函数,所以b1.4142135623730950488016887242097......

  vpa函数对其中每一个运算都控制精度,并非只控制结果。

  digits(11);

  a=vpa(2/3+4/7+5/9);

  b=2/3+4/7+5/9;

  a的结果为1.7936507936b的结果为1.793650793650794......也就是说,计算a的值的时候,先对2/34 /75/9这三个运算都控制了精度,又对三个数相加的运算控制了精度。而b的值是真实值,对它取11位有效数字的话,结果为1.7936507937,与a不同,就是说vpa并不是先把表达式的值用matlab本身的精度求出来,再取有效数字,而是每运算一次,都控制精度。我举的例子不太好,因为加法不太会增加数字位数。

posted on 2011-09-17 20:25  神一样的魔鬼  阅读(3579)  评论(0编辑  收藏  举报

导航