为什么matlab总是提示‘Conversion to double from sym is not possible’
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/18 15:29:54
为什么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])
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])
这种转化确实挺晕的,经我调试,现将原因告诉你:
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])
再问: 谢谢你的回答哦~我刚开始学习matlab,所以有很多地方不太懂,能不能再请教你一个问题?就是,如果现在的条件改为I14=0.062732164,递推关系为I(n-1)=(1-I(n))/n,那么该怎么改上面的编程才能到得到输出I14; I13; ··· ; I0的头8位精确有效数字?我得到的为什么全是零呢?万分感谢!
再答: clc clear I14=0.062732164; fprintf('I14= %.8g\n',I14)%%保留8位有效数字 for k=1:14 eval(['I',num2str(14-k),'=(1-I',num2str(15-k),')/',num2str(15-k),';']); eval( ['fprintf(''','I',num2str(14-k),' = %.8g\n'',','I',num2str(14-k),')']) end 或者 clc clear digits(8) I14=0.062732164; %fprintf('I14= %.8g\n',I14)%%保留8位有效数字 I14=vpa(I14) for k=1:14 eval(['I',num2str(14-k),'=(1-I',num2str(15-k),')/',num2str(15-k),';']); eval( ['I',num2str(14-k),'=vpa(I',num2str(14-k),')']) end
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])
再问: 谢谢你的回答哦~我刚开始学习matlab,所以有很多地方不太懂,能不能再请教你一个问题?就是,如果现在的条件改为I14=0.062732164,递推关系为I(n-1)=(1-I(n))/n,那么该怎么改上面的编程才能到得到输出I14; I13; ··· ; I0的头8位精确有效数字?我得到的为什么全是零呢?万分感谢!
再答: clc clear I14=0.062732164; fprintf('I14= %.8g\n',I14)%%保留8位有效数字 for k=1:14 eval(['I',num2str(14-k),'=(1-I',num2str(15-k),')/',num2str(15-k),';']); eval( ['fprintf(''','I',num2str(14-k),' = %.8g\n'',','I',num2str(14-k),')']) end 或者 clc clear digits(8) I14=0.062732164; %fprintf('I14= %.8g\n',I14)%%保留8位有效数字 I14=vpa(I14) for k=1:14 eval(['I',num2str(14-k),'=(1-I',num2str(15-k),')/',num2str(15-k),';']); eval( ['I',num2str(14-k),'=vpa(I',num2str(14-k),')']) end
matlab Conversion to double from sym is not possible
matlab 新手 Conversion to double from sym is not possible.
matlab绘图求助 提示错误Conversion to double from sym is not possible
matlab高手求助,Conversion to double from sym is not possible.
matlab问题:plot Conversion to double from sym is not possible,
matlab 画图出错 Conversion to double from sym is not possible.
Matlab求助!问题出现是Conversion to double from sym is not possible.
matlab中出现?Conversion to double from sym is not possible.
matlab里面Conversion to double from sym is not possible.怎么回事啊?
matlab 报错Conversion to logical from sym is not possible.无法从
Matlab Error using ==> plot Conversion to double from sym is
matlab高手求教!Error using plot Conversion to double from sym is