MATLAB版本不行,求解该题,xdm,支援一下

  1. 观察一个数(在此用@记述)在以下四条不同指令作用下的异同:
    a=@
    b=sym(@)
    c=sym(@,’d’)
    d=str2sym(‘@’)
    在此,@分别代表具体数值7/3,pi/3,pi*3^(1/3);而异同通过vpa(abs(a-b)),vpa(abs(b-d)),vpa(abs(c-d))
a=7/3;
b=sym(7/3);
c=sym(7/3,'d');
d=str2sym('7/3');
vpa(abs(a-b)),vpa(abs(b-d)),vpa(abs(c-d))

a=pi/3;
b=sym(pi/3);
c=sym(pi/3,'d');
d=str2sym('pi/3');
vpa(abs(a-b)),vpa(abs(b-d)),vpa(abs(c-d))

a=pi*3^(1/3);
b=sym(pi*3^(1/3));
c=sym(pi*3^(1/3),'d');
d=str2sym('pi*3^(1/3)');
vpa(abs(a-b)),vpa(abs(b-d)),vpa(abs(c-d))
abs(a-b))vpa(abs(b-d))vpa(abs(c-d))
7/30.00.00.00000000000000014802973661668756666666667788716
pi/30.00.00.00000000000000011483642827992216762806615818554
pi*3^(1/3)0.00.000000000000000266011141662909443748423932216380.000000000000000266011141662909472676799178551

由上表可知,a和b在精度上是一致的,都是double精度,sym和str2sym在表示一般的分数表达式时是一样的,但是需要符号表达式计算时,b的精度不足。c一直都是十进制截断,比符号计算精度低。