matlab vpa
来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/06/09 13:30:04
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本身的精度求出来,再取有效数字,而是每运算一次,都控制精度.我举的例子不太好,因为加法不太会增加数字位数.希望你能理解我的意思.
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本身的精度求出来,再取有效数字,而是每运算一次,都控制精度.我举的例子不太好,因为加法不太会增加数字位数.希望你能理解我的意思.
matlab vpa
matlab int函数没有显式积分 vpa
MATLAB算π出错我输入vpa(pi,300) .结果是:ans =3.14159265358979311599796
MATLAB 用vpa保留有效数字以后 无法与pi做运算 为什么
matlab 求极限结果通过vpa转换为数值,但类型却不是数值
matlab 为什么 a=1e41-1e22;vpa(a,50) 结果还是1e41
我用 MATLAB 的 vpa(pi,100000) 来计算π后100000位数字的时候,发现它只显示了前32366位,
matlab中积分时遇到了没有解析解的积分,但这时vpa(int(函数))可以算出一个值,这个值靠谱吗?
matlab
matlab 蒙特卡罗
matlab中( :,
排列组合 matlab