为什么matlab总是提示‘Conversion to double from sym is not possible’?I_real=sym(zeros(15,1));I_float=zeros(15,1);I_real(1)=sym('1-exp(-1)');I_float(1)=vpa(double(I_real(1)));for n=1:14I_real(n+1)=1-n*I_real(n);I_float(n+1)=vpa(1-n*I_float(n

来源:学生作业帮助网 编辑:六六作业网 时间:2024/05/15 07:03:51
为什么matlab总是提示‘Conversiontodoublefromsymisnotpossible’?I_real=sym(zeros(15,1));I_float=zeros(15,1);I_

为什么matlab总是提示‘Conversion to double from sym is not possible’?I_real=sym(zeros(15,1));I_float=zeros(15,1);I_real(1)=sym('1-exp(-1)');I_float(1)=vpa(double(I_real(1)));for n=1:14I_real(n+1)=1-n*I_real(n);I_float(n+1)=vpa(1-n*I_float(n
为什么matlab总是提示‘Conversion to double from sym is not possible’?
I_real=sym(zeros(15,1));
I_float=zeros(15,1);
I_real(1)=sym('1-exp(-1)');
I_float(1)=vpa(double(I_real(1)));
for n=1:14
I_real(n+1)=1-n*I_real(n);
I_float(n+1)=vpa(1-n*I_float(n));
end
vpa([I_float I_real])

为什么matlab总是提示‘Conversion to double from sym is not possible’?I_real=sym(zeros(15,1));I_float=zeros(15,1);I_real(1)=sym('1-exp(-1)');I_float(1)=vpa(double(I_real(1)));for n=1:14I_real(n+1)=1-n*I_real(n);I_float(n+1)=vpa(1-n*I_float(n
这种转化确实挺晕的,经我调试,现将原因告诉你:
I_real(1)=sym('1-exp(-1)')后I_real(1)格式为sym 值为1-exp(-1)
double(I_real(1))后格式为double 值为0.6321
按我猜测你可能觉得小数位数不够而后用vpa,很好vpa转化后值是.63212055882855766597572255705018
但格式又变为sym,而I_float是double格式数组.所以将vpa(double(I_real(1)))赋值给I_float(1)会出错.程序改为如下,不知可如意
clc
clear
format long
I_real=sym(zeros(15,1))
I_float=zeros(15,1)
I_real(1)=sym('1-exp(-1)')
I_float(1)=double(I_real(1))
for n=1:14
I_real(n+1)=1-n*I_real(n);
I_float(n+1)=1-n*I_float(n);
end
vpa([I_float I_real])