matlab怎么做多元非线性拟合,MATLAB多元非线性拟合

辛苦几天收集的资料:

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)

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值