2016-04-30 10 views
0

私はカーブフィッティング法でいくつかの問題に取り組んでおり、立方体フィットの50点を見つける必要があります。質問は、与えられた細菌の増殖率を求める質問です。私の現在のコードは、私がgrowthRateまたは誘導体は、この問題のために正しいかどうかを疑問に思って、または、彼らは両方とも間違っている場合Matlab - polyvalデータの微分方程式

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) 

です。彼らは著しく異なる価値を与えたからです。また、ベクトルの長さが短くなると、時間に対するvrcubicの

乾杯

+0

「growthRate」は、「物理的」成長率を表します。しかし、私は 'newTime = linspace(1,7,50);を' newTime = linspace(time(1)、time(end)、50);に置き換えるのが最善であると思う。 – user1391279

答えて

0

誘導体は確かにあなたのderivative式は、隣接データポイント間だけの違いである

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

で与えられます。

また、それがNEWTIMEポイントが非常にまばらにサンプリングされている場合であっても正しい誘導体であるように私はいつも後者を好むだろう

ここ

growthRate = polyval(polyder(rcubic), newTime); 
を分析分化を使用することができます。

+0

返信いただきありがとうございます。これを速度と加速を含む第2の質問に適用する。これは速度に関してはうまく機能しますが、2次微分を得るために速度ベクトルに同じ関数を適用すると、値は110(1x10^100)乗のオーダーになります。コードは です。velocity = polyval(polyder(rcubic)、newTime) acceleration = polyder((velocity)、newTime) – Vladamir