在我的机器上,以下代码:
for i=1:200
1+2+5;
end;
以0.000180秒的速度运行。
现在,这段代码:
syms x y z
f(x,y,z) = x + y+z;
for i=1:200
f(1,2,5);
end;
慢得多(6.193909秒)。
对于我的代码,我需要编写3个变量的几个复杂函数的导数,然后插入给定域中的所有整数点。这将有助于A LOT能够进行符号区分然后插入,但这看起来非常缓慢。
除了手动完成所有操作之外还有其他选择吗(手工编写完整衍生产品)?
答案 0 :(得分:5)
您可以使用matlabFunction
来加快计算速度:
syms x y z
f(x,y,z) = x + y+z;
h= matlabFunction(f);
for i=1:200
h(1,2,5);
end;
答案 1 :(得分:1)
这不是一个公平的比较,因为在第一个中你使用的是小整数而没有函数调用。
tic,for i = 1:200 f(1,2,5); end;toc % 1.355852 on average
g = @(x,y,z) x + y + z;
tic,for i = 1:200 g(1,2,5); end;toc % 0.000231 on average
syms x y z real
f(x,y,z) = x + y+z;
h = matlabFunction(f);
tic,for i = 1:200 g(1,2,5); end;toc % 0.000233 on average
不管。你应该根据你的应用,以不同的复杂程度在数字上评估衍生物。