【问题标题】:Derivative of anonymous functions without defining symbolic variables in MatlabMatlab中不定义符号变量的匿名函数的导数
【发布时间】:2019-07-02 07:35:01
【问题描述】:

考虑以下代码:

f = @(x) x.^2; 

是否可以得到函数句柄f的导数作为另一个函数句柄,而不定义符号变量?

【问题讨论】:

    标签: matlab anonymous-function derivative function-handle


    【解决方案1】:

    不,要获得导函数,您需要使用符号工具箱。

    但是你可以通过创建如下函数得到一个近似值(有限差分近似值):

    f = @(x) x.^2;
    d = 1e-6;
    df = @(x) (f(x+d)-f(x))/d;
    

    d 在这里确定近似的精度。如果你把它弄得太小,你最终会进入浮点舍入误差域,所以要小心!

    测试:

    x = -2:0.01:2;
    max(abs(df(x) - 2*x))  % returns 1.0006e-06
    

    【讨论】:

    • 或者更好的是,使用更高阶的方案,或者至少使用中心差异@(x) (f(x+d)-f(x-d))/(2*d) - 允许您提高相同d 的准确性。这是正确的方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 2015-01-04
    • 2019-12-30
    • 2016-05-08
    • 2012-07-10
    • 1970-01-01
    • 2012-04-15
    相关资源
    最近更新 更多