matlab symfun 与匿名函数

matlab symfun vs anonymous function

在 Matlab 中使用 symfun 和匿名函数有什么区别?哪个更好,即更快?看来,我可以同时使用符号和实数。

Here 他们讨论了内联函数和匿名函数的区别,但没有提到 symfun。

MATLAB 的基本功能专为数值计算而设计,即处理浮点数。默认情况下,MATLAB 变量和函数是数字的,这就是为什么在您的链接讨论中只比较内联函数和匿名函数。

但是,使用 Symbolic Math Toolbox 可以使用符号表达式和函数。这对于解决精确微分、积分、使用任意精度算术或求解方程等数学问题非常有用。然而,符号引擎被设计成智能的,而不是快速的(毕竟,符号引擎迟早要执行函数的评估,但 MATLAB 设计 是高效的与数值问题)。只要有可能,人们应该更喜欢数值 MATLAB 函数,尤其是那些通常可以扩展为以矢量化方式工作的函数,以及数组输入以提供数组输出。

当面临混合问题(需要符号数学,但也需要计算量大的结果评估)时,以参数(符号)方式解决初始问题可能是最实用的一次,然后通过将最后的结果转化为适当的数值函数来使用它。你应该看看 matlabFunction function of the Symbolic Math Toolbox, which performs exactly this and works quite well for reasonably scaled functions (but here's 一个反例)。

请注意,虽然您可以使用公式定义匿名函数,如 f=@(x) 3*x^2-2,这实际上将定义一个数字函数,该函数 returns 给定数字输入的值,例如 [=12] =].如果您手头有要计算的公式,请始终使用数值函数。符号数学应保留用于基本数值特征不能精确求解的情况,例如计算多元标量场的精确梯度。