我有一个冗长的表达式,它是使用一个相当复杂的函数的符号微分计算的。我现在打算在 for 循环中多次调用这个结果(符号函数),所以我想避免每次迭代都必须执行符号微分步骤,而是我想“保存”符号微分的结果,所以在每个循环上我只是在评估一个函数。也许一个例子会有所帮助:这里我们尝试使用两种方法评估零的余弦。
syms x
f = sin(x);
fp = diff(f,x);
fp = @(x) subs(fp, 'x', x);
tic
for i=1:1000
fp(0);
end
toc
tic
for i=1:1000
cos(0);
end
toc
结果:
Elapsed time is 3.654296 seconds.
Elapsed time is 0.007301 seconds.
因此使用我的符号函数非常昂贵!有没有办法减轻这种昂贵的函数调用?