clear
close all hidden
x1 =[ -2.7600 -2.6575 -2.5538 -2.3472 -2.2435...
-2.1398 -2.0373 -1.9335 -1.8297 -1.7272...
-1.6235 -1.5198 -1.3135 -1.2098 -1.1060...
-1.0035 -0.8998 -0.7960 -0.6935 -0.5898...
-0.4860 -0.2797 -0.1760 -0.0722 0.0303...
0.1340 0.2378 0.3403 0.4440 0.5477...
0.6502 0.7540 0.8578 0.9615 1.0640...
1.1678 1.2715 1.3740 1.4777 1.5815...
1.6840 1.7878 1.8915 1.9953 2.0978];
y1= [0.0102 0.0109 0.0116 0.0133 0.0142...
0.0152 0.0162 0.0173 0.0186 0.0198...
0.0212 0.0227 0.0259 0.0277 0.0296...
0.0317 0.0339 0.0362 0.0387 0.0414...
0.0443 0.0506 0.0542 0.0579 0.0619...
0.0662 0.0707 0.0756 0.0809 0.0865...
0.0924 0.0988 0.1057 0.1129 0.1207...
0.1291 0.1379 0.1474 0.1575 0.1683...
0.1798 0.1921 0.2053 0.2193 0.2353];
x2 =[-5.2600 -5.1575 -5.0538 -4.8472 -4.7435...
-4.6398 -4.5373 -4.4335 -4.3297 -4.2272...
-4.1235 -4.0198 -3.8135 -3.7098 -3.6060...
-3.5035 -3.3998 -3.2960 -3.1935 -3.0898...
-2.9860 -2.7797 -2.6760 -2.5722 -2.4697...
-2.3660 -2.2622 -2.1597 -2.0560 -1.9523...
-1.8498 -1.7460 -1.6423 -1.5385 -1.4360...
-1.3322 -1.2285 -1.1260 -1.0223 -0.9185...
-0.8160 -0.7123 -0.6085 -0.5048 -0.4023];
y2 =[0.0102 0.0109 0.0116 0.0133 0.0142...
0.0152 0.0162 0.0173 0.0186 0.0198...
0.0212 0.0227 0.0259 0.0277 0.0296...
0.0317 0.0339 0.0362 0.0387 0.0414...
0.0443 0.0506 0.0542 0.0579 0.0619...
0.0662 0.0707 0.0756 0.0809 0.0865...
0.0924 0.0988 0.1057 0.1129 0.1207...
0.1291 0.1379 0.1474 0.1575 0.1683...
0.1798 0.1921 0.2053 0.2193 0.2353];
plot(x1,y1,'o',x2,y2,'o'); % 右画出的图和数据何以看出y1和y2相同,只是x1,x2之间发生了平移
hold on
x=x1; % 可以把x1换成x2
y=y1; % 可以把y1换成y2
a0=[1,-.1,1]; % 以下为最优化方法的非线性最小二乘曲线拟和
options=optimset('MaxFunEvals',100000000);
options=optimset('MaxIter',10000000000);
[a,residual]=lsqcurvefit(@nihe2,a0,x,y,[],[],options); %调用nihe2函数
hold on;
x=-10:0.001:30;
axis([-10 10 -0.5 2]); % 限制坐标
plot(x,1./(a(3)+a(1)*exp(a(2)*((x)))),'r-'); % 绘制拟和后的曲线 红色
grid on %若图太小,可用放大镜查看
x=x2; % 可以把x1换成x2
y=y2; % 可以把y1换成y2
a0=[1,-.1,1]; % 以下为最优化方法的非线性最小二乘曲线拟和
options=optimset('MaxFunEvals',100000000);
options=optimset('MaxIter',10000000000);
[a,residual]=lsqcurvefit(@nihe2,a0,x,y,[],[],options); %调用nihe2函数
hold on;
x=-10:0.001:30;
axis([-10 10 -0.5 2]); % 限制坐标
plot(x,1./(a(3)+a(1)*exp(a(2)*((x)))),'r-'); % 绘制拟和后的曲线 红色
grid on %若图太小,可用放大镜查看
我们所拟合的数据区间x1为[ -2.7600 2.0978];x2为[-5.2600 -0.4023];
它们所在区间不同而y值相同,还有我们给出的拟合函数相同,都是1./(a(3)+a(1)*exp(a(2)*(x)));
则所拟合出的a(1),a(2),a(3)肯定就不同了,系数不同,则画出的图形就不同了。
如果你想得出平移后的结果,则拟合函数应分别为1./(a(3)+a(1)*exp(a(2)*(x)));和1./(a(3)+a(1)*exp(a(2)*(x-2.5))); |