在MatLab中求导数

在MatLab中求导数,matlab,calculus,Matlab,Calculus,正如标题所示,我想知道如何才能找到“函数”的导数。我不确定该怎么做,因为我实际上没有定义函数,只有一个值数组。因此,让我们尝试一个简单的例子: x = 1:5; y = x.^2 y = 1 4 9 16 25 正如所料。现在我想求导数。我知道这是2倍。可能使用diff函数,就像在符号工具箱中一样 diff(y) ans = 3 5 7 9 这看起来像2x+//1,长度(y)-1。有没有办法计算出它的导数,得到长度(y)

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

x = 1:5;
y = x.^2
y =
     1     4     9    16    25
正如所料。现在我想求导数。我知道这是2倍。可能使用diff函数,就像在符号工具箱中一样

diff(y)
ans =
     3     5     7     9
这看起来像2x+//1,长度(y)-1。有没有办法计算出它的导数,得到长度(y)的向量


我没有符号工具箱

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

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

你无能为力。这个话题已经在MathWorks网络论坛上讨论过了

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

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


参考资料

  • “MATLAB中的符号数学”
  • “无符号数学工具箱的符号微分”
  • “GNU倍频程-下载”
  • “GNU倍频程符号微分”

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

    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)
    

    有没有你还不知道导数的函数要应用?

    在matlab中查看符号变量:你希望向量的导数是什么样的?函数
    diff(y)
    将为您提供一个新的向量,看起来像
    y[i+1]-y[i]
    @Dan455 i没有符号工具箱@Andrewpilier,我知道diff会给出两个连续条目的差值。我试图找到另一个函数,它将为我提供
    2 4 6 8 10
    @JamesMaslek,那么你想做的是根据一组有限的值来“猜测”一个函数?这是不可能的。对于表示离散函数a(n)样本的给定有限值集
    a
    ,可以用
    diff(a)
    近似其一阶导数(就此而言,二阶导数可以用
    diff(a,2)
    近似,依此类推……)。为了准确起见,您需要确保采样率足够(请参阅)。他说他没有符号工具包。但我无法输入符号。我也有一个大数据集,我只是想做一个简单的例子抱歉,错过了关于没有符号工具包的部分,这是非常不幸的。我想应该是这样的,但我想我会询问是否有人有任何意见。只需安装GNU Octave。语法几乎与MATLAB相同,并且是免费/开源的。这不仅仅是一个复制MATLAB的胡作非为的尝试,它实际上是大学里经常使用的一个非常健壮的工具。请参考我上面文章中的参考文献[4]。这里有一些工作示例,说明您正试图使用在所有现代操作系统上工作的免费软件做什么。祝你好运:)