作业帮 > 综合 > 作业

>> y=exp(pi/3*1i);

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/15 19:36:08
>> y=exp(pi/3*1i);
>> syms x;
y^-6
(y^-6)*x
ans =
1.0000 + 0.0000i
ans =
x*((2111062325329919*i)/2535301200456458802993406410752 + 1)
为什么最后的结果ans不等于 x*(1.0000 + 0.0000i)?
>> y=exp(pi/3*1i);
ans =

x*((2111062325329919*i)/2535301200456458802993406410752 + 1)

>> vpa(ans,6)

ans =

x*(8.32667*10^(-16)*i + 1.0)%
这是因为第二个ans是符号类型的,默认以分数形式出现,这样显示误差会最小
而第一个ans是数值型的,默认以小数显示 ,实际上是有误差的,并且比较大
另外
>> format long
>> y^-6
ans =
1.000000000000000 + 0.000000000000001i%不完全是0i,这个是显然的
>> vpa(ans,10)%将他转换为符号类型,和上面的是类似的

ans =

8.326672685*10^(-16)*i + 1.0
再问: 那么怎么样才能把第二个ans换成我想要的x*(1.0000 + 0.0000i)呢?
再答: 这个没有什么好办法,如果没必要的话,就应该是8.326672685*10^(-16)*i + 1.0 这样的,因为这样参与计算才是最准确的。 如果纯粹为了显示好看,只有先对y本身进行四舍五入,人为降低他的精度