主题:matlab三维曲线拟合
santak_m
[专家分:0] 发布于 2007-09-13 22:13:00
有一组数据如下,怎样根据目标函数拟合算出a,b,c的大小。
目标函数:z=a*x^b *y^c
X Y Z
70 25 3.9
70 50 8.5
70 100 25
80 25 5.5
80 50 12
80 100 34
90 25 7.5
90 50 18
90 100 46
100 25 10
100 50 22
100 100 60
200 25 65
200 50 150
200 100 400
300 25 200
300 50 450
300 100 1200
回复列表 (共8个回复)
沙发
santak_m [专家分:0] 发布于 2007-09-13 22:16:00
在线等啊,请各位大侠指点啊.
板凳
usfca2004 [专家分:40] 发布于 2007-09-14 02:40:00
Transform objective function into the following form
lnz= lna +b*lnx +c*lny
transform the x,y,z to the ln form
then do the regression.
3 楼
gslyd [专家分:1300] 发布于 2007-09-14 06:13:00
SSz=1.4677e+006
[a,b,c]=[.8351744741e-5, 2.711465210, .2583935670]
RSS=27884.41946
MSe= 1.8590e+003
R^2=.981001
4 楼
santak_m [专家分:0] 发布于 2007-09-15 10:11:00
谢谢各位指点.
5 楼
santak_m [专家分:0] 发布于 2007-09-15 10:20:00
请问3楼的答案是按照2楼的方法计算出来的吗?
6 楼
gslyd [专家分:1300] 发布于 2007-09-15 15:22:00
不是。
7 楼
santak_m [专家分:0] 发布于 2007-09-15 22:40:00
那请教下你的方法好吗?
8 楼
gslyd [专家分:1300] 发布于 2007-09-15 23:10:00
若zhat=a*x^b *y^c
一般的方法即为使sum(z-zhat)^2=min
而2楼的方法是使sum(ln(z)-ln(zhat))^2最小,目标函数不一样,在某些情况下这种变量转换的方法不可用,如z<0时,ln(z)不存在。
而我使用的是一般的方法。
我来回复