0

これは古い質問のように聞こえるかもしれません。コードを知っていると思っていましたが、実行しても期待値が得られません。

私の問題は次のとおりです。

対象関数:f = C / (x ^ p * y ^ q)

(機械加工について少しでも知っていれば、これはテイラーの工具寿命の式であることがわかります)

xyは独立変数です。f従属変数です。Cpおよびqは係数です。

次のように 3 つの([x, y], f)値のセットがあります。「exp_result」を参照してください。

そして、3 つの値セットに最適なサーフェスを探しています。

これが私のコードです:

それを実行すると、次のようになります。

  • C 1.224E4
  • p 2.025
  • q 5.688

したがって、私のベスト フィット サーフェスの式は ですT = 1.224E4 / (x ^ 2.025 * y ^ 5.688)

ただし、少なくとも、この方程式は 3 つのデータ セットによりよく適合することがわかりました T = 9.83E7 / (x ^ 3.39 * y ^ 2.63)

xとを差し込むことで、この式を使用してyにさらに近づきます。f誰が私がどこで間違ったのか考えていますか?

任意の提案をいただければ幸いです。ありがとうございました!

exp_result = [153.6   0.51  22.47; 192.01  0.61  6.52; 230.42  0.51  5.58];

f_exp = fittype('C / (x ^ p * y ^ q)', 'coefficients', {'C', 'p', 'q'}, 'independent', {'x', 'y'}, 'dependent', {'f'});

f_exp_coef = fit([exp_result(:,1), exp_result(:, 2)], exp_result(:, 3),f_exp);
4

1 に答える 1

0

C のスケールは、他の 2 つのパラメーターとは大きく異なるため、適合が難しくなっています。

(1) より近い初期推測を与えることによって

または(2)対数項で関数を書き直します

log(f) = log(C) - p*log(x) - q*log(y) または f' = c - p*x' - q*y'

[log(f) log(x) log(y)] を使用すると、同じ範囲 [1 10] にある c、p、q を取得できます。これにより、うまく適合することが期待されます。

于 2014-06-02T20:46:33.527 に答える