【问题标题】:Doing a derivative in MatLab在 MatLab 中做一个导数
【发布时间】:2013-07-24 15:04:32
【问题描述】:

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

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)的向量?

我没有符号工具包。

【问题讨论】:

  • 在matlab中查看符号变量:mathworks.com/help/symbolic/…
  • 你认为向量的导数是什么样的?函数diff(y) 为您提供了一个看起来像y[i+1] - y[i] 的新向量。
  • @Dan455 我没有符号工具包。 @AndrewPiliser,我知道 diff 会在两个连续条目中给出差异。我正在尝试找到另一个可以给我2 4 6 8 10的功能
  • @JamesMaslek 那么你想要做的是“猜测”一个基于有限值集的函数吗?这是不可能的。
  • 对于代表离散函数 a(n) 样本的给定有限值集 a,您可以使用 diff(a) (就此而言,二阶导数可以近似为diff(a, 2),依此类推……)。为了准确,您需要确保采样率足够(请参阅Nyquist theorem)。

标签: matlab calculus


【解决方案1】:

你无能为力。 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

【讨论】:

  • 这很不幸。我有点想会是这样,但我想我会问看看是否有人有任何意见。
  • 只需安装 GNU Octave。语法几乎与 MATLAB 相同,而且它是免费/开源的。这不仅仅是复制 MATLAB 的一次拙劣尝试,它实际上是一个非常强大的工具,经常在大学中使用。
  • 请参考我上面帖子中的参考文献[4]。使用可在所有现代操作系统上运行的免费可用软件,有一些工作示例可以说明您正在尝试做什么。祝你好运:)
【解决方案2】:

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

>> 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

【讨论】:

  • 他说他没有符号工具包。
  • 但我无法进入 syms
  • 我也有一个大数据集,我只是想做一个简单的例子
  • 对不起,错过了关于没有符号工具包的部分
【解决方案3】:

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

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)

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

【讨论】:

    猜你喜欢
    • 2011-11-25
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 2016-10-30
    • 2010-11-03
    • 1970-01-01
    • 2020-03-25
    相关资源
    最近更新 更多