0

X 値と Y 値は次のとおりです。

X    Y
20   10
100  25
140  50

このデータを式として近似的に表し、20 から 140 までの X の任意の値を代入できればいいのですが。このデータは、ホッケースティックの曲線のようなものです。それとももっと指数関数的ですか?これをコーディングして、これらの 3 点間に線形セグメントを作成することもできますが、式によってよりスムーズな結果が得られると、はるかに優れたものになります。上記の数値は固定されたものではありません。それらは少し異なる場合があります。式が私を球場に連れて行く限り。

4

5 に答える 5

1

3つの点は、次の形式の2次多項式曲線を一意に定義します。

y = Ax 2 + Bx + C

点の座標からA、B、Cを推定するための公式は広く知られています。

于 2013-01-25T14:07:54.297 に答える
1

多項式または指数関数の方程式を使用して、その種類の形状を近似できます。どちらを選択するかは、正確に何をしようとしているかによって異なります。

ある形状に近い滑らかな曲線が必要な場合は、式を選択し、希望どおりになるまで係数を微調整します。

Excel からのデータの多項式近似により、次の結果が得られます。

Y = 0.0036*(X^2) - 0.25*X + 13.542
于 2013-01-25T14:12:16.227 に答える
0

これを行う 1 つの方法は、Excel が提供するものと同様のGROWTH関数を実装することです。指数関数的な成長を想定して、指定したnew_y値から値を補間します。new_xこれは、JavaScript でのコードの一部です。これを Java に変換するのは非常に簡単です。

そのほとんどを他の人から借りたことに注意してください (コード内のクレジット)。

function GROWTH(known_y, known_x, new_x, use_const) {
  // Credits: Ilmari Karonen

  // Default values for optional parameters:
  if (typeof(known_x) == 'undefined') {
    known_x = [];
    for (var i = 1; i <= known_y.length; i++) known_x.push(i);
  }
  if (typeof(new_x) == 'undefined') {
    new_x = [];
    for (var i = 1; i <= known_y.length; i++) new_x.push(i);
  }
  if (typeof(use_const) == 'undefined') use_const = true;

  // Calculate sums over the data:
  var n = known_y.length;
  var avg_x = 0;
  var avg_y = 0;
  var avg_xy = 0;
  var avg_xx = 0; 
  for (var i = 0; i < n; i++) {
    var x = known_x[i];
    var y = Math.log(known_y[i]);
    avg_x += x;
    avg_y += y;
    avg_xy += x*y;
    avg_xx += x*x;
  }
  avg_x /= n;
  avg_y /= n;
  avg_xy /= n;
  avg_xx /= n;

  // Compute linear regression coefficients:
  if (use_const) {
    var beta = (avg_xy - avg_x*avg_y) / (avg_xx - avg_x*avg_x);
    var alpha = avg_y - beta*avg_x;
  } else {
    var beta = avg_xy / avg_xx;
    var alpha = 0;
  }

  // Compute and return result array:
  var new_y = [];
  for (var i = 0; i < new_x.length; i++) {
    new_y.push(Math.exp(alpha + beta * new_x[i]));
  }
  return new_y;
}
于 2013-01-25T14:09:01.247 に答える
0

なんらかの形式の回帰分析を使用して、一連の点に曲線を統計的に適合させることができます。ただし、曲線の有効性は、持っているポイントの数によって異なります。3 点では、式が正しいという確信はあまり得られません。

于 2013-01-25T14:10:08.940 に答える
-1

次のような関係を想定することから始めることができます。

y = A*exp(B*x)

両辺の自然対数を取る:

ln(y) = ln(A) + B*x

好きなだけ点を代入して、2 つの係数を解きます。これは単純な線形回帰の問題です。

あなたのデータについて私が得るものは次のとおりです。

y = exp(2.006369+0.013132*x)

生成された値の表を次に示します。

X   Y
0   7.436267437
20  9.669855877
40  12.5743343
60  16.35121402
80  21.26253316
100 27.6490367
120 35.95381719
140 46.75305634
160 60.7960002
180 79.0569415
200 102.8028156
220 133.6811
240 173.8341152
260 226.0476583

これは、大量のデータがある場合でも機能します。

指数関数のテイラー級数展開を行うと、多項式項の無限級数であることがわかります。2 次および 3 次の提案は、指数に対する切り捨てられた近似です。

于 2013-01-25T14:46:30.270 に答える