0

我正在解决曲线拟合等问题,需要找到 50 点三次拟合的导数。这些问题要求在给定数据的情况下找出细菌的生长速度。我目前的代码是

time = [1,2,4,5,7,9];
bacteria = [2000,4500,7500,15000,31000,64000];

rcubic = polyfit(time,bacteria,3);
newTime = linspace(1,7,50);
vrcubic = polyval(rcubic,newTime);

growthRate = [diff(vrcubic)./diff(newTime)];
derivative = diff(vrcubic)

我想知道growthRate 或导数对于这个问题是否正确,或者它们是否都是错误的。因为他们给出了明显不同的值。也随着向量的长度缩短。

干杯

4

1 回答 1

0

vrcubic 对时间的导数确实由下式给出

growthRate = [diff(vrcubic)./diff(newTime)];

您的 derivative表达只是相邻数据点之间的差异。

您还可以在此处使用分析微分

growthRate = polyval( polyder(rcubic), newTime );

我总是更喜欢后者,因为即使 newTime 点的采样非常稀疏,它也是正确的导数。

于 2016-04-30T07:52:01.187 回答