Error using fprintf
Unable to convert 'sym' value to 'double'.
这是我的意见
Step size = .2
dy/dt = f(t,y) = exp(-x*y)
y0 = 0
t0 = .1
final t = .5
n tn yn yn+1
0 0.100000 0.000000 Error using fprintf
Unable to convert 'sym' value to 'double'.
Error in FinalEuler (line 17)
fprintf('%d\t %f\t %f\t %f\n',n,x,yn,y1,y2);
这是我一直在使用的代码。
clc
syms y t x
h=input('Step size = ');
f_e=input('dy/dt = f(t,y) = ')
f_de=f_e
yn=input('y0 = ')
tn=input('t0 = ')
t_end=input('final t = ')
n=0
%iteration
fprintf('n\t\ttn\t\t\tyn\t\t\tyn+1\n');
for x=tn:h:t_end
y1=yn+subs(f_e,t,x)*h
y2=subs(y1,y,yn)
fprintf('%d\t %f\t %f\t %f\n',n,x,yn,y1,y2);
yn=y2;
n=n+1
end
我该如何修复程序代码?我需要调整或修复哪些具体代码?
y1
和y2
是符号变量(检查为什么键入whos y1 y2
,或class(y1)
)而不是双倍。您正尝试使用fprintf
将它们显示为浮点数,但在显示之前,您应将符号表达式转换为double:
y1 = double(yn+subs(f_e,t,x)*h);
y2 = double(subs(y1,y,yn))
或者,仅将y1
和y2
转换为仅用于显示的双倍,并使它们在下一次迭代中保持符号。
fprintf('%d\t %f\t %f\t %f\n',n,x,yn,double(y1),double(y2));