首页 > 解决方案 > 特定值的符号函数的导数

问题描述

我正在尝试在 Octave 中使用此代码来评估函数f,的导数df在特定x值:

pkg load symbolic;
syms x;
f = @(x) sqrt(2*x+1) - sqrt(x+4);
disp(f);
df = diff(f,x);

df(4)例如,我尝试了 and eval(df,4),但它们都没有给出语法或其他错误。

此代码的主要功能是使用这些值f使用 Newton-Raphson 方法找到函数根。

标签: matlaboctavenewtons-method

解决方案


您将匿名函数与符号函数混淆了。你f是一个匿名函数。它不使用符号变量x,因为x在这个函数中是局部的,它是一个输入参数。该函数将以数字方式评估您提供的任何输入。

定义一个符号函数如下:

pkg load symbolic

syms x
f = sqrt(2*x+1)-sqrt(x+4)
df = diff(f,x)

输出:

>> f = sqrt(2*x+1)-sqrt(x+4)
f = (sym)

      _______     _________
  - ╲╱ x + 4  + ╲╱ 2⋅x + 1

>> df = diff(f,x)
df = (sym)

       1             1
  ─────────── - ───────────
    _________       _______
  ╲╱ 2⋅x + 1    2⋅╲╱ x + 4

要评估给定的函数x,您可以使用subs并将结果转换为double

double(subs(df,x,4))

这将返回值 0.15656。


推荐阅读