这可能听起来像一个老问题。我以为我知道代码,但运行它并没有给我预期的值。
我的问题是:
目标函数:f = C / (x ^ p * y ^ q)
(如果您对加工有所了解,可以说这是泰勒的刀具寿命方程式)
x
和y
是自变量; f
是因变量; C
,p
和q
是系数。
我有以下三组([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
和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);
答案 0 :(得分: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)],你可以得到相同范围内的c,p,q [1 10],这有希望让你更适合。