Matlab问题!逐步多元非线性回归 以及求极值问题
发布网友
发布时间:2022-05-12 03:24
我来回答
共1个回答
热心网友
时间:2023-11-06 13:51
%%引言
%%你的变量是10个,而方程只有7个,做的效果可能会比较差
%%神经网络等我没接触过
%%下面只弄那个多项式
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%第一步
data=[1.0
13.0
1.5
0.330;
1.4
19.0
3.0
0.366;
1.8
25.0
1.0
0.294;
2.2
10.0
2.5
0.476;
2.6
16.0
0.5
0.209;
3.0
22.0
2.0
0.451;
3.4
28.0
3.5
0.482];
x1=data(:,1);
x2=data(:,2);
x3=data(:,3);
y=data(:,4);
mat=[ones(size(x1)),x1,x2,x3,
x1.*x2,
x1.*x3,
x2.*x3,
x1.^2,
x2.^2,
x3.^2];
%下面的A就是我们要的常数,分别对应于a,b1,b2,b3,b4,b5,b6,b7,b8,b9
A=mat\y
%%%%%%%%%第一步结束
%%%%%%%%得到的结果是:
A
=
0
0
0.0149
0.1844
-0.0024
0.0510
-0.0024
0
-0.0002
-0.0448
发现第一个,第二个以及第8个等于0。先去掉这三个。即a,b1,b7=0
%%%%第二步。去掉上述三项再次拟合
%%你好好比较一下两步之间的mat矩阵的构造就知道怎么弄了。
data=[1.0
13.0
1.5
0.330;
1.4
19.0
3.0
0.366;
1.8
25.0
1.0
0.294;
2.2
10.0
2.5
0.476;
2.6
16.0
0.5
0.209;
3.0
22.0
2.0
0.451;
3.4
28.0
3.5
0.482];
x1=data(:,1);
x2=data(:,2);
x3=data(:,3);
y=data(:,4);
mat=[x2,x3,
x1.*x2,
x1.*x3,
x2.*x3,
x2.^2,
x3.^2];
%去掉a,b1,b7对应的项
%下面的A就是我们要的常数,分别对应于b2,b3,b4,b5,b6,b8,b9
A=mat\y
%%%%%%%%%第二步结束
得到的结果是:
A
=
0.0149
0.1844
-0.0024
0.0510
-0.0024
-0.0002
-0.0448
上述几项,你觉得哪一项可以去掉,你仿上面第二步。就可以了。祝你成功。