拟合函数形式为:y=a*(x-c)^b,求a,b,c的值?

2025-03-04 19:30:28
推荐回答(2个)
回答1:

取三组对应值建立方程组,第四组用于检验。
1484=a(0.2-c)^b,①

12.6=a(1-c)^b,②

8.4=a(2-c)^b.③

①/②,得1484/12.6=[(0.2-c)/(1-c)]^b,

取对数得ln1484-ln12.6=b[ln(0.2-c)-ln(1-c)]④

②/③,得1.5=[(1-c)/(2-c)]^b,

仿上,ln1.5=b[ln(1-c)-ln(2-c)]⑤

④/⑤,得[ln(0.2-c)-ln(1-c)]/[ln(1-c)-ln(2-c)]=(ln1484-ln12.6)/ln1.5≈11.76130699,
设f(c)=[ln(0.2-c)-ln(1-c)]/[ln(1-c)-ln(2-c)]-11.76130699,
f(0.1999)=-0.7,
f(0.19999)=2.1,
f(0.19993)=-0.23,
f(0.19994)=-0.046,
f(0.19995)=0.17,
取c=0.19994,
代入⑤,b=-0.49986,
代入②,a=11.27.
检验:11.27×(0.5-0.19994)^(-0.49986)=20.57,误差偏大,仅供参考。

回答2:

用非线性拟合,比如说
x = [1,2,3,4,5,6];
y = [0,2,4,6,8,18];
f = @(a,x)a(1)*(x-a(3)).^a(2);
a0 = [0,0,0];
afit = nlinfit(x,y,f,a0)