MATLAB拟合多元非线性函数?
自变量x1=【
101 98.4 98.8 98.5 98.6 98.2 98.8 99.2 99.5 100.6 101.9 101.5 102.7 102.4 102.8 103.1 102.9 103.3 103.5 103.6 104.4 105.1 104.6 104.9 104.9 105.4 105.3 105.5 106.4 106.5 106.2 106.1 105.5 104.2 104.1 104.5 103.2 103.6 103.4 103 102.2 101.8
】
x2=【
496135.31 506708.07 530626.71 540481.21 548263.51 568916.2 573102.85 576698.95 576698.95 586643.29 594604.72 610224.52 625609.29 636072.26 649947.46 656561.22 663351.37 673921.72 674051.48 687506.92 696471.5 699776.74 710339.03 725851.79 733884.83 736130.86 758130.88 757384.56 763409.22 780820.85 772923.65 780852.3 787406.2 816829.25 825493.94 851590.9 855898.89 867177.63 895600 889600 900000 925000 919100
】
因变量y=【
6.903106 7.225627 8.235698 8.568031 9.057412 10.11868 11.53129 9.041437 9.371831 10.11123 10.83773 11.08377 10.10374 10.33224 10.57647 9.668508 8.662745 7.931444 7.811012 7.725547 7.753376 8.71688 8.187911 8.159127 8.164803 8.515319 8.592566 8.616842 7.977995 7.960922 7.722894 7.343536 6.759 7.079082 6.683803 6.322855 6.596952 7.004311 6.512667 6.890974 6.786185 6.329737 5.968858
】
怎样用MATLAB拟合y关于x1和x2的非线性曲线呢?选的模型是y=a*x1+b*x2+c*x1.^2+d*x2.^2+e
答案:>> x1=[101 98.4 98.8 98.5 98.6 98.2 98.8 99.2 99.5 100.6 101.9 101.5 102.7 102.4 102.8 103.1 102.9 103.3 103.5 103.6 104.4 105.1 104.6 104.9 104.9 105.4 105.3 105.5 106.4 106.5 106.2 106.1 105.5 104.2 104.1 104.5 103.2 103.6 103.4 103 102.2 101.8
];
>> x2=[496135.31 506708.07 530626.71 540481.21 548263.51 568916.2 573102.85 576698.95 576698.95 586643.29 594604.72 610224.52 625609.29 636072.26 649947.46 656561.22 663351.37 673921.72 674051.48 687506.92 696471.5 699776.74 710339.03 725851.79 733884.83 736130.86 758130.88 757384.56 763409.22 780820.85 772923.65 780852.3 787406.2 816829.25 825493.94 851590.9 855898.89 867177.63 895600 889600 900000 925000 ];
>> x3=x1.^2;
>> x4=x2.^2;
>> y=[6.903106 7.225627 8.235698 8.568031 9.057412 10.11868 11.53129 9.041437 9.371831 10.11123 10.83773 11.08377 10.10374 10.33224 10.57647 9.668508 8.662745 7.931444 7.811012 7.725547 7.753376 8.71688 8.187911 8.159127 8.164803 8.515319 8.592566 8.616842 7.977995 7.960922 7.722894 7.343536 6.759 7.079082 6.683803 6.322855 6.596952 7.004311 6.512667 6.890974 6.786185 6.329737 ];
>> x=[ones(42,1),x1',x2',x3',x4'];
>> [b,bint,r,rint,stats]=regress(y',x)
> In regress at 78
b =
0
-0.1380
0.0001
-0.0014
-0.0000
e=b(1) a=b(2) b=b(3) c=b(4) d=b(5)
y=-0.1380*x1+0.0001*x2-0.0014*x1.^2
其他:你的x1只有42个变量,x2和y有43个,你这个有问题。可以用matlab中的curve fitting tool来进行拟合。
上一个:MATLAB 编程问题,将数学公式用MATLAB语言或其内部原有的函数表达出来
下一个:matlab问题。要运行以下MATlab函数应该输入什么? curdir指的是什么?