作业帮 > 综合 > 作业

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

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/26 04:24:31
matlab二元函数拟合怎么设计函数.
下面是数据,要求拟合一个二元函数,自变量为a,b.请问在非线性拟合之前怎么设计函数,使其拟合误差最小.很急,请大家帮帮忙.
a\b6.187.58.710.812.9
0.350.6070.53030.54810.51580.581
0.40.7420.56580.5510.63760.8415
0.450.75340.62850.72580.69680.8522
0.50.82830.72790.97580.77510.836
0.550.86710.73751.04350.80350.8611
0.60.91550.8841.18380.82881.0792
0.650.93250.94831.22781.03171.2311
0.71.02011.01561.36061.16871.6888
0.751.02311.16061.58291.22261.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)的形式的二元函数,但要拟合之前要先构造一个函数,然后才能通过拟合得到公式的相关参数,从而得到一个比较好的公式。 就是在构造这个参数的时候总构造不好,拟合出来的误差比较大。请教高手这个初始构造的非线性函数怎么构造???急。。。