2

正如标题所示,我想知道如何找到“函数”的导数。我不确定该怎么做,因为我真的没有定义函数,只是一个值数组。所以让我们尝试一个简单的例子:

x = 1:5;
y = x.^2
y =
     1     4     9    16    25

正如预期的那样。现在我想取导数。我知道这是 2 倍。可能使用 diff 函数,就像在符号工具包中一样?

diff(y)
ans =
     3     5     7     9

这看起来像 2x +/- 1,长度为 length(y)-1。有什么方法可以计算它的导数并获得长度(y)的向量?

我没有符号工具包。

4

3 回答 3

3

你能做的很少。这个话题已经在 MathWorks 网络论坛上讨论过了。

@noah 提供了一个在有​​限数据集上进行数值微分(即:差分)的示例,而您正在寻找一种对应用于离散域数据集的连续域连续范围函数进行符号微分的方法。

简而言之,没有发生。您在问如何在没有锤子、螺丝刀或钉子的情况下安装架子。您可以随时下载并安装 GNU Octave,它是 MATLAB 的免费替代品。


参考。

  1. “MATLAB 中的符号数学” http://faraday.elec.uow.edu.au/subjects/annual/ECTE313/Symbolic_Maths.pdf
  2. “没有符号数学工具箱的符号微分” http://www.mathworks.com/matlabcentral/newsreader/view_thread/83397
  3. “GNU Octave - 下载” http://www.gnu.org/software/octave/
  4. “使用 GNU Octave 进行符号微分” http://octave.1599824.n4.nabble.com/Examples-for-use-of-symbolic-toolbox-td1601724.html
于 2013-07-24T15:32:12.157 回答
0

对于小数据集,数值微分有点棘手。我能想到的最好的方法是显式创建函数,然后将其应用于数据。

>> syms x y
>> y = x^2;
>> dy = diff(y);
>> dy

ans = 
    2*x

>> v = 1:5;
>> f = matlabFunction(dy);
>> f(v)



ans = 
    2 4 6 8 10
于 2013-07-24T15:17:59.460 回答
0

你没有符号工具箱,你想要符号导数。这是一个建议:如果您已经知道要应用于向量的函数的导数(具有基本微积分知识),只需将其直接应用于向量即可。例如:

vector = [1 2 3 4 5] % intended function = x^2
result = 2*vector
vector = [1 2 3 4 5] % intended function = sin(x)
result = cos(vector)

您是否尝试应用任何您不知道导数的功能?

于 2013-07-29T18:05:42.780 回答