更有效的符号功能评估

时间:2016-02-11 19:21:21

标签: matlab symbolic-math

为了使用常规变量执行功能评估,可以执行以下操作:

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.

有没有办法在使用符号时提高速度?

1 个答案:

答案 0 :(得分:1)

在这种情况下,从float到double的转换会导致性能下降。永远不要从浮点数学(x0 = -10:0.01:10;)开始,继续使用符号数学。

x0=sym(-10):sym(.001):sym(10);
P=double(f(x0));