0

matlabで850以上の次のデータを外挿する方法は?

x =  200.0000  205.0000  210.0000  215.0000  220.0000  225.0000  230.0000  235.0000  240.0000 245.0000  250.0000  255.0000  260.0000  265.0000  270.0000  275.0000  280.0000  285.0000 290.0000  295.0000  300.0000  305.0000  310.0000  315.0000  320.0000  330.0000  340.0000 350.0000  360.0000  370.0000  380.0000  390.0000  400.0000  410.0000  420.0000  430.0000 440.0000  450.0000  460.0000  470.0000  480.0000  490.0000  500.0000  510.0000  520.0000 530.0000  540.0000  550.0000  560.0000  570.0000  580.0000  590.0000  600.0000  620.0000 640.0000  660.0000  680.0000  700.0000  750.0000  800.0000

y =  0.8900    0.8600    0.8400    0.8200    0.8000    0.7900    0.7700    0.7500    0.7400   0.7200    0.7100    0.6900    0.6800    0.6700    0.6500    0.6400    0.6300    0.6200   0.6100    0.6000    0.5900    0.5800    0.5700    0.5600    0.5500    0.5400    0.5200   0.5100    0.4900    0.4800    0.4700    0.4500    0.4400    0.4300    0.4200    0.4100   0.4000    0.3900    0.3900    0.3800    0.3700    0.3600    0.3600    0.3500    0.3400   0.3400    0.3300    0.3200    0.3200    0.3100    0.3100    0.3000    0.3000    0.2900   0.2800    0.2700    0.2600    0.2600    0.2400    0.2200
4

2 に答える 2

4

log(y)対をプロットlog(x)すると、線形関係に従うことがわかります。したがって、次のことができます。

x =  [200.0000  205.0000  210.0000  215.0000  220.0000  225.0000  230.0000  235.0000  240.0000 245.0000  250.0000  255.0000  260.0000  265.0000  270.0000  275.0000  280.0000  285.0000 290.0000  295.0000  300.0000  305.0000  310.0000  315.0000  320.0000  330.0000  340.0000 350.0000  360.0000  370.0000  380.0000  390.0000  400.0000  410.0000  420.0000  430.0000 440.0000  450.0000  460.0000  470.0000  480.0000  490.0000  500.0000  510.0000  520.0000 530.0000  540.0000  550.0000  560.0000  570.0000  580.0000  590.0000  600.0000  620.0000 640.0000  660.0000  680.0000  700.0000  750.0000  800.0000];
y =  [0.8900    0.8600    0.8400    0.8200    0.8000    0.7900    0.7700    0.7500    0.7400   0.7200    0.7100    0.6900    0.6800    0.6700    0.6500    0.6400    0.6300    0.6200   0.6100    0.6000    0.5900    0.5800    0.5700    0.5600    0.5500    0.5400    0.5200   0.5100    0.4900    0.4800    0.4700    0.4500    0.4400    0.4300    0.4200    0.4100   0.4000    0.3900    0.3900    0.3800    0.3700    0.3600    0.3600    0.3500    0.3400   0.3400    0.3300    0.3200    0.3200    0.3100    0.3100    0.3000    0.3000    0.2900   0.2800    0.2700    0.2600    0.2600    0.2400    0.2200];

coeff = polyfit(-log10(x) , log10(y), 1)   % the '1' means linear
xp = [200:1000];
yp = 10^coeff(2)*xp.^(-coeff(1));
plot(x,y,'o',xp,yp)

そして、あなたは得る:

ここに画像の説明を入力

于 2013-09-08T00:40:10.573 に答える
3

さらに拡張したい独自の曲線に上記の関数を使用しようとしていますが、いくつかの問題に直面しています。私はこの slm ツールボックスを初めて使用します。このエラーを回避する方法を提案してください。時間 1 は、値の範囲を持つ x 軸変数配列です: 9.8682e-05 9.8687e-05ここに画像の説明を入力

外挿の危険性についてコメントします。ミシシッピ州の生活で、マーク・トウェインほどうまく言った人はいませ。外挿しすぎて、予測としてランダムなガベージを期待してください。

そうは言っても、使用できるツールはたくさんあります。あなたはいくつかの同類の指数関数的な適合を行うかもしれません。ここでの問題は、適切な形状のモデルを見つける必要があることです。第一原理から理にかなっている物理モデルがまだない場合、データに適合するものを見つけるために、いくつかの実験が必要になることがよくあります。

スプライン モデルの方が優れていますが、問題は補間スプラインの外挿が不十分なことです。したがって、私の推奨事項は、 SLMのようなツールを使用して、外挿の領域で何が起こる可能性があるか、何が起こるべきかについての知識を組み込むことです。

ここでは、かなりの方法で外挿されているため、曲線の合理的な特性についていくつかの推測を行いました。正の二次導関数を使用して、曲線全体に単調減少制約を課しました。同様に、右端点がゼロより下になることは許されませんでした。

mdl = slmengine(x,y,'knots',[200:100:800,1000:500:2000],... 
   'decreasing','on','concaveup','on','rightminvalue',0,'plot','on');

ここに画像の説明を入力

于 2013-09-08T00:49:43.567 に答える