为了使用常规变量执行功能评估,可以执行以下操作:
f = @(x)x.^2+3*x-5;
x0 = -10:0.01:10;
p = f(x0);
但是当使用符号变量时,效率会急剧下降。例如:
f = @(x)x.^2+3*x-5;
x0 = -10:0.001:10;
% using real values
tic;p = f(x0);toc
% using symbolic math
syms x;tic;P = double(subs(f,x,x0));toc
Elapsed time is 0.000686 seconds.
Elapsed time is 10.867689 seconds.
有没有办法在使用符号时提高速度?
答案 0 :(得分:1)
在这种情况下,从float到double的转换会导致性能下降。永远不要从浮点数学(x0 = -10:0.01:10;
)开始,继续使用符号数学。
x0=sym(-10):sym(.001):sym(10);
P=double(f(x0));