matlab vpa 函数是什么意思?

如题所述

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本身的精度求出来,再取有效数字,而是每运算一次,都控制精度。我举的例子不太好,因为加法不太会增加数字位数。希望你能理解我的意思....
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-01-09
vpa
我的理解是变量的计算精度,简单说是控制变量计算结果的显示位数
比如
>>
vpa(.5,9)
ans
=
.50000000
>>
vpa(pi,6)
ans
=
3.14159
可以在matlab里面输入help
vpa
第2个回答  2019-04-25
使用变量精度算法(VPA)去计算A中每个元素为d小数位精度,其中d是当前设置的位数,结果的每个元素是符号表达式。
R
=
vpa(A,
d)
用d个位数代替当前设置的位数。
比如:vpa
pi
75来计算pi的75位精度。
表达式:
A
=
vpa(hilb(2),25)
B
=
vpa(hilb(2),5)
返回:
A
=
[
1.0,
0.5]
[
0.5,
0.3333333333333333333333333]
B
=
[
1.0,
0.5]
[
0.5,
0.33333]
第3个回答  2019-05-01
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本身的精度求出来,再取有效数字,而是每运算一次,都控制精度。我举的例子不太好,因为加法不太会增加数字位数。希望你能理解我的意思....
相似回答