辛苦几天收集的资料:
1.使用“nlinfit”
x1=1150,1000,900,850,700,625,550,475,3350,3500,5900,5800,5700,4600,4625,4725,11650,11200,11200]';
x2=[175,100,25,0,75,100,150,200,50,600,500,225,100,1225,1600,2000,1200,1000,1550
]';
x=[x1,x2];
y=[1.44E-02,1.80E-02,6.08E-02,5.59E-02,3.42E-02,7.74E-03,1.17E-03,6.16E-03,1.91E-04,1.91E-04,1.02E-03,2.83E-03,9.52E-05,3.77E-04,2.70E-04,1.87E-04,3.98E-04,4.04E-04,4.02E-04]';
beta0=[0.1 0.1 1 1];
myfun=@(a,x)4030.0./pi./4.2./(a(1).*x(:,1).^a(2).*a(3).*x(:,1).^a(4)).*exp(-(x(:,2).^2./2./(a(1).*x(:,1).^a(2)).^2+30.0.^2./2./(a(3).*x(:,1).^a(4)).^2));
[a,b,c,d,res]=nlinfit(x,y,myfun,beta0);a,res
plot3(x1,x2,y,'o',x1,x2,myfun(a,x))
值的选取没有定法,与实际问题的模型有关。
2.使用“regress”
线性的不行,用二次函数。
format long
A=[...
0.2 13.6 8503 251 27.4 7.7 9.9 3658 314 13.9 5.8 10.8 7307 433 26.8 7.70 9.70 6717 257 23.8 7.5 9.8 7609 280 21.7 5.6 11.3 4271 533 14.6 6.2 7.6 52169 48 225 3.23 9.16 16516 80 44.1 0.33 11.3 17366 85 54.1 0.14 9.5 14245 91 56.6 5.5 9.7 18184 3 31.6 2.3 8.9 33612 250 114.9 3.3 4.6 73927 5 166 1.9 9.7 32175 150 107.5 0.6 9.9 33088 242 142.3 0.22 11.7 18620 567 60.4 1.88 11.76 27885 267 71.6 2.78 10.9 21780 76 58.7]
x=A(:,1:4),Y=A(:,5)
x11=x(:,1).*x(:,1);
x12=x(:,1).*x(:,2);
x13=x(:,1).*x(:,3);
x14=x(:,1).*x(:,4);
x22=x(:,2).*x(:,2);
x23=x(:,2).*x(:,3);
x24=x(:,2).*x(:,4);
x33=x(:,3).*x(:,3);
x34=x(:,3).*x(:,4);
x44=x(:,4).*x(:,4);
X=[x(:,:),x11,x12,x13,x14,x22,x23,x24,x33,x34,x44]
[B,BINT,R] = REGRESS(Y,[ones(length(Y),1),X]) 结果:
B =
1.0e+003 *
-1.426098928217992
-0.004076772421011
0.255534919787513
0.000012942581436
0.000845938681439
0.000607150442496
-0.000574488595437
0.000000405451807
-0.000042626483419
-0.011775830339062
-0.000000876232149
0.000008150156703
-0.000000000013441
-0.000000013991054
-0.000000969496753
R =
3.122573422039807
0.447341267999400
-7.343326306615449
2.107836742251767
-6.239492394117182
9.044235126157025
2.238791755625499
4.285551199892858
-2.231536057549363
-1.979307925154075
3.503835830046878
1.414933242530537
-1.426757776398972
-12.052007973319576
14.597045597468522
-5.024612350970848
-1.747668123505179
-2.717435276394376
B就是系数,R就是预测值与实际值的差值。
3. 使用“lsqcurvefit”
clear
clc
x=[40 50 60 70 80 90 100 110 120 135 150];
y=[0.0096 0.0145 0.0194 0.0348 0.0501 0.0751 0.1000 0.1497 0.1993 0.2496 0.2999];
z=[0.2400 0.2865 0.3330 0.3600 0.3870 0.4010 0.4150 0.4390 0.4630 0.4875 0.5120];
X0=[1 1 1 1 1 1];
%只要这样写就可以了
f=@(p,x)( p(1) + p(2)*x(1,:) +
p(3)*x(2,:) + p(4)*x(1,:).^2 + p(5)*x(1,:).*x(2,:) +
p(6)*x(2,:).^2);
p=lsqcurvefit(f,X0,[x;y],z)