matlab二元函数拟合怎么设计函数。

下面是数据,要求拟合一个二元函数,自变量为a,b。请问在非线性拟合之前怎么设计函数,使其拟合误差最小。很急,请大家帮帮忙。

a\b 6.18 7.5 8.7 10.8 12.9
0.35 0.607 0.5303 0.5481 0.5158 0.581
0.4 0.742 0.5658 0.551 0.6376 0.8415
0.45 0.7534 0.6285 0.7258 0.6968 0.8522
0.5 0.8283 0.7279 0.9758 0.7751 0.836
0.55 0.8671 0.7375 1.0435 0.8035 0.8611
0.6 0.9155 0.884 1.1838 0.8288 1.0792
0.65 0.9325 0.9483 1.2278 1.0317 1.2311
0.7 1.0201 1.0156 1.3606 1.1687 1.6888
0.75 1.0231 1.1606 1.5829 1.2226 1.484
我要拟合的是二元函数,也就是说两个变量的,其中x是a,y是b。那么最后得出的就是z=f(x,y)的形式的二元函数,但要拟合之前要先构造一个函数,然后才能通过拟合得到公式的相关参数,从而得到一个比较好的公式。
就是在构造这个参数的时候总构造不好,拟合出来的误差比较大。请教高手这个初始构造的非线性函数怎么构造???数据就是上面的那些数据。急。。。请多帮忙。谢谢

非性线拟合一般是根据数据产生的特点来的(就是说数据产生符合什么分布函数)
对你这样的应用,我个人感觉使用线性拟合简单易行:
如下给定数据的拟合曲线:
x=[0.5,1.0,1.5,2.0,2.5,3.0];
y=[1.75,2.45,3.81,4.80,7.00,8.60];
p=polyfit(x,y,2)
plot(x,y)
计算结果为:
p =0.5614 0.8287 1.1560
即所得多项式为y=0.5614x^2+0.08287x+1.15560
-------------------------------------
如果你要非线性拟合,那么可以:
x=[1.1389 1.0622 0.9822 0.934 0.9251 0.9158];
y=[0.03 1 5.03 15.05 19.97 30.3];
myfunc=inline('-beta(1)*log(x+beta(2))-beta(3)','beta','x'); %非线性函数
beta=nlinfit(x,y,myfunc,[0 0 0]); %通过这个非线性函数进行拟合
k=beta(1),a=beta(2),b=beta(3)
%测试这个方程
xx=min(x):max(x);
yy=-k*log(x+a)-b;
plot(x,y,'o',x,yy,'r')
------------------------------------------------------------------------------------
以上x,y数据可以任意,就是你所提问的a,b。追问

谢谢这位高手。但是我要拟合的是二元函数啊,也就是说两个变量的,其中x是a,y是b。那么最后得出的就是z=f(x,y)的形式的二元函数,但要拟合之前要先构造一个函数,然后才能通过拟合得到公式的相关参数,从而得到一个比较好的公式。
就是在构造这个参数的时候总构造不好,拟合出来的误差比较大。请教高手这个初始构造的非线性函数怎么构造???急。。。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-13
你的情况可用1stopt
相似回答