0

这听起来像是一个老问题。我以为我知道代码,但运行它并没有给我预期的值。

我的问题是:

目标函数:f = C / (x ^ p * y ^ q)

(如果你对机械加工有所了解,你可以说这是泰勒的刀具寿命方程)

x并且y是自变量;f是因变量;C,pq是系数。

我有如下三组([x, y], f)值,请参阅“exp_result”。

我正在寻找最适合这三组值的曲面。

这是我的代码:

通过运行它,我得到:

  • C 1.224E4
  • p 2.025
  • q 5.688

所以我的最佳拟合曲面方程是T = 1.224E4 / (x ^ 2.025 * y ^ 5.688)

不过,至少我发现这个方程更适合三组数据: T = 9.83E7 / (x ^ 3.39 * y ^ 2.63).

通过插入x's 和y's,我可以更接近f's 使用这个等式。有人知道我在哪里做错了吗?

任何建议表示赞赏。谢谢!

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 的尺度与其他两个参数非常不同,使其更难拟合。

(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 回答