作业帮 > 综合 > 作业

matlab 非线性拟合

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/10 15:42:04
matlab 非线性拟合
数据定义如下:
n1=[1092.4 1099 1097 1095.6 1083.9 1078.2 1080.9 1064.2 1076.2 1069.3 1044.8 1044.8 1035.7 1042.1];
M1=[0.84 0.99 1.14 1.41 1.7 1.95 2.21 2.52 2.78 3.09 3.33 3.33 3.87 4.15];
n2=[177 177.8 175.2 177.1 174.8 173.5 174.6 171.3 172.7 171.5 167.5 167.5 165.7 166.2];
M2=[2.31 3.3 3.8 5.82 7.16 8.99 10.8 12.43 14.04 15.5 17.3 17.3 20.58 21.71];
for i=1:1:14
P1(i)=n1(i)*M1(i)/9550;
P2(i)=n2(i)*M2(i)/9550;
ita(i)=P2(i)/P1(i);
end
burden=[20 30 40 60 80 100 120 140 160 180 200 220 240 260];
以上是赋值过程.n1,n2,M1,M2,P1,P2都是中间变量.我想建立横坐标是burden,纵坐标是ita的函数关系.
现在,想画出burden-ita曲线.
分析如下:
1、理论上,burden在0~260的范围内时,ita值越来越大,但曲线斜率越来越小直至于0,ita值最后趋近于一个常数.
2、尽管理论上burden在260以后时,ita会减小.但由于我只想画出0~260的图形,所以不考虑260以后的情形(认为260以后的函数形式是另一个).
3、因此,可以假设0~260的函数形式是ita=k1-k2*exp(-m*burden)
(或者是ita=k1-k2*k3^(-m*burden) ),其中k1、k2、m、k3都应该是正数
matlab 非线性拟合
你提供的两个方程都不好使,用我的. R-square: 0.9845, Adjusted R-square: 0.9799.
clear
n1=[1092.4 1099 1097 1095.6 1083.9 1078.2 1080.9 1064.2 1076.2 1069.3 1044.8 1044.8 1035.7 1042.1];
M1=[0.84 0.99 1.14 1.41 1.7 1.95 2.21 2.52 2.78 3.09 3.33 3.33 3.87 4.15];
n2=[177 177.8 175.2 177.1 174.8 173.5 174.6 171.3 172.7 171.5 167.5 167.5 165.7 166.2];
M2=[2.31 3.3 3.8 5.82 7.16 8.99 10.8 12.43 14.04 15.5 17.3 17.3 20.58 21.71];
for i=1:1:14
P1(i)=n1(i)*M1(i)/9550;
P2(i)=n2(i)*M2(i)/9550;
ita(i)=P2(i)/P1(i);
end
burden=[20 30 40 60 80 100 120 140 160 180 200 220 240 260];
myfun=inline('k(1)*exp(k(2)*x) + k(3)*exp(k(4)*x)','k','x')
k = nlinfit(burden,ita,myfun,[1 0 -0.5 -0.01])
x=0:260;
y=k(1)*exp(k(2)*x) + k(3)*exp(k(4)*x);
plot(burden,ita,'o',x,y)
结果:
k =
0.8555 -0.0000 -0.5554 -0.0161