matlab 优化问题(矛盾方程组)(50*5)矩阵多多指教
各位大侠你们好!小弟最近算一个优化问题有些不清楚望指教!多谢!
我是计算5个未知数。
有51组数距。即51个线性方程去解5个未知数。约束条件是非负。当我的向量d是准确值的时候和我推导的未知数基本没问题10, 20, 30, 40, 50
当我把向量d做微小的扰动1%到2%之间的时候,所得到的未知数相差相当的大,请问这种情况如何解决??谢谢万分感谢
下面是我运行的程序:
c=[0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00
6.4651E-07 1.3153E-06 1.9841E-06 2.6529E-06 3.3217E-06
2.4969E-06 5.1721E-06 7.8473E-06 1.0523E-05 1.3198E-05
5.4173E-06 1.1437E-05 1.7456E-05 2.3475E-05 2.9494E-05
9.2741E-06 1.9975E-05 3.0676E-05 4.1377E-05 5.2078E-05
1.3933E-05 3.0654E-05 4.7374E-05 6.4094E-05 8.0814E-05
1.9262E-05 4.3339E-05 6.7416E-05 9.1493E-05 1.1557E-04
2.5125E-05 5.7896E-05 9.0668E-05 1.2344E-04 1.5621E-04
3.1389E-05 7.4193E-05 1.1700E-04 1.5980E-04 2.0260E-04
3.7921E-05 9.2095E-05 1.4627E-04 2.0044E-04 2.5461E-04
4.4587E-05 1.1147E-04 1.7835E-04 2.4523E-04 3.1211E-04
5.1275E-05 1.3218E-04 2.1310E-04 2.9403E-04 3.7496E-04
5.7963E-05 1.5409E-04 2.5040E-04 3.4671E-04 4.4302E-04
6.4651E-05 1.7708E-04 2.9011E-04 4.0313E-04 5.1616E-04
7.1339E-05 2.0100E-04 3.3208E-04 4.6317E-04 5.9426E-04
7.8027E-05 2.2572E-04 3.7620E-04 5.2669E-04 6.7717E-04
8.4716E-05 2.5111E-04 4.2233E-04 5.9354E-04 7.6476E-04
9.1404E-05 2.7704E-04 4.7033E-04 6.6361E-04 8.5690E-04
9.8092E-05 3.0337E-04 5.2006E-04 7.3676E-04 9.5345E-04
1.0478E-04 3.2997E-04 5.7141E-04 8.1285E-04 1.0543E-03
1.1147E-04 3.5670E-04 6.2422E-04 8.9174E-04 1.1593E-03
1.1816E-04 3.8345E-04 6.7837E-04 9.7331E-04 1.2683E-03
1.2484E-04 4.1020E-04 7.3373E-04 1.0574E-03 1.3811E-03
1.3153E-04 4.3695E-04 7.9015E-04 1.1439E-03 1.4977E-03
1.3822E-04 4.6371E-04 8.4751E-04 1.2327E-03 1.6180E-03
1.4491E-04 4.9046E-04 9.0568E-04 1.3237E-03 1.7417E-03
1.5160E-04 5.1721E-04 9.6451E-04 1.4166E-03 1.8687E-03
1.5828E-04 5.4396E-04 1.0239E-03 1.5114E-03 1.9990E-03
1.6497E-04 5.7072E-04 1.0836E-03 1.6080E-03 2.1323E-03
1.7166E-04 5.9747E-04 1.1437E-03 1.7061E-03 2.2686E-03
1.7835E-04 6.2422E-04 1.2039E-03 1.8058E-03 2.4077E-03
1.8504E-04 6.5097E-04 6.6210E-04 1.9067E-03 2.5495E-03
1.9172E-04 6.7772E-04 7.2213E-04 2.0089E-03 2.6938E-03
1.9841E-04 7.0448E-04 7.8190E-04 2.1122E-03 2.8405E-03
2.0510E-04 7.3123E-04 8.4127E-04 2.2163E-03 2.9895E-03
2.1179E-04 7.5798E-04 9.0010E-04 2.3213E-03 3.1406E-03
2.1848E-04 7.8473E-04 9.5827E-04 2.4270E-03 3.2937E-03
2.2516E-04 8.1149E-04 1.0156E-03 2.5332E-03 3.4487E-03
2.3185E-04 8.3824E-04 1.0721E-03 2.6397E-03 3.6055E-03
2.3854E-04 8.6499E-04 1.1274E-03 2.7466E-03 3.7638E-03
2.4523E-04 8.9174E-04 1.1816E-03 2.8536E-03 3.9237E-03
2.5192E-04 9.1849E-04 1.2344E-03 2.9606E-03 4.0848E-03
2.5861E-04 9.4525E-04 1.2857E-03 3.0676E-03 4.2472E-03
2.6529E-04 9.7200E-04 1.3355E-03 3.1746E-03 4.4106E-03
2.7198E-04 9.9875E-04 1.3834E-03 3.2816E-03 4.5750E-03
2.7867E-04 1.0255E-03 1.4296E-03 3.3886E-03 4.7402E-03
2.8536E-04 1.0523E-03 1.4737E-03 3.4956E-03 4.9060E-03
2.9205E-04 1.0790E-03 1.5157E-03 3.6026E-03 5.0724E-03
2.9873E-04 1.1058E-03 1.5554E-03 3.7096E-03 5.2392E-03
3.0542E-04 1.1325E-03 1.5927E-03 3.8167E-03 5.4062E-03
3.1211E-04 1.1593E-03 1.6274E-03 3.9237E-03 5.5734E-03];
d=[0.0000E+00
3.6450E-04
1.4446E-03
3.2203E-03
5.6715E-03
8.7781E-03
1.2520E-02
1.6877E-02
2.1830E-02
2.7358E-02
3.3440E-02
4.0058E-02
4.7193E-02
5.4825E-02
6.2936E-02
7.1507E-02
8.0519E-02
8.9954E-02
9.9793E-02
1.1002E-01
1.2061E-01
1.3155E-01
1.4282E-01
1.5440E-01
1.6629E-01
1.7846E-01
1.9090E-01
2.0359E-01
2.1651E-01
2.2965E-01
2.4300E-01
2.3848E-01
2.5218E-01
2.6604E-01
2.8004E-01
2.9416E-01
3.0839E-01
3.2271E-01
3.3711E-01
3.5156E-01
3.6606E-01
3.8058E-01
3.9513E-01
4.0967E-01
4.2421E-01
4.3874E-01
4.5324E-01
4.6770E-01
4.8211E-01
4.9646E-01
5.1075E-01];
d1=[0.0000E+00
3.6277E-04
1.4348E-03
3.2125E-03
5.6656E-03
8.7668E-03
1.2444E-02
1.6965E-02
2.1991E-02
2.7340E-02
3.3723E-02
4.0367E-02
4.6752E-02
5.4392E-02
6.2841E-02
7.1984E-02
8.0257E-02
8.9267E-02
1.0011E-01
1.0896E-01
1.2070E-01
1.3225E-01
1.4346E-01
1.5401E-01
1.6491E-01
1.7707E-01
1.8966E-01
2.0424E-01
2.1763E-01
2.3030E-01
2.4408E-01
2.3948E-01
2.5207E-01
2.6399E-01
2.7869E-01
2.9166E-01
3.0975E-01
3.2371E-01
3.3702E-01
3.5157E-01
3.6602E-01
3.7800E-01
3.9461E-01
4.0832E-01
4.2320E-01
4.4052E-01
4.5159E-01
4.6837E-01
4.8058E-01
4.9273E-01
5.0822E-01];
x1=c\d
=lsqnonneg(c,d)
=lsqlin(c,d,[],[],[],[],,[],[],optimset('largescale','off'))
x4=c\d1
=lsqnonneg(c,d1)
=lsqlin(c,d1,[],[],[],[],,[],[],optimset('largescale','off'))
cond(c)
x1 =
9.8324
20.1370
30.0017
39.9006
50.0508
x2 =
9.8324
20.1370
30.0017
39.9006
50.0508
resnorm =
2.2835e-010
residual =
1.0e-005 *
0
0.0025
0.0022
0.0153
0.0230
0.0328
0.0296
0.0145
0.0733
0.1162
-0.0060
-0.0260
0.0293
0.0308
0.0099
-0.0322
-0.0654
-0.1166
-0.1252
0.0095
-0.1430
-0.0697
0.3090
-0.1377
-0.1207
-0.3090
0.4247
0.3903
0.1984
-0.1736
-0.2441
0.4880
-0.0641
-0.2674
0.0458
-0.1226
-0.1141
-0.1005
0.2075
0.0120
-0.2904
-0.3987
0.4665
-0.1431
-0.0673
0.1048
0.4735
0.3408
-0.0850
-0.5188
0.0444
exitflag =
1
Optimization terminated.
x3 =
9.8324
20.1370
30.0017
39.9006
50.0508
resnorm =
2.2835e-010
residual =
1.0e-005 *
0
-0.0025
-0.0022
-0.0153
-0.0230
-0.0328
-0.0296
-0.0145
-0.0733
-0.1162
0.0060
0.0260
-0.0293
-0.0308
-0.0099
0.0322
0.0654
0.1166
0.1252
-0.0095
0.1430
0.0697
-0.3090
0.1377
0.1207
0.3090
-0.4247
-0.3903
-0.1984
0.1736
0.2441
-0.4880
0.0641
0.2674
-0.0458
0.1226
0.1141
0.1005
-0.2075
-0.0120
0.2904
0.3987
-0.4665
0.1431
0.0673
-0.1048
-0.4735
-0.3408
0.0850
0.5188
-0.0444
exitflag =
1
x4 =
68.0628
-37.5993
32.4039
84.2340
26.4976
x5 =
15.8427
0
31.4698
64.2644
35.9759
resnorm =
4.8296e-005
residual =
0
0.0000
-0.0000
0.0000
0.0000
0.0000
-0.0000
0.0002
0.0003
0.0001
0.0004
0.0005
-0.0003
-0.0002
0.0001
0.0007
-0.0000
-0.0005
0.0005
-0.0008
0.0003
0.0009
0.0008
-0.0003
-0.0014
-0.0015
-0.0014
0.0005
0.0009
0.0003
0.0007
0.0015
0.0003
-0.0017
-0.0010
-0.0022
0.0017
0.0013
0.0003
0.0004
0.0004
-0.0021
0.0001
-0.0006
-0.0001
0.0028
-0.0004
0.0020
0.0000
-0.0020
-0.0006
exitflag =
1
Optimization terminated.
x6 =
15.8427
0
31.4698
64.2644
35.9759
resnorm =
4.8296e-005
residual =
0
-0.0000
0.0000
-0.0000
-0.0000
-0.0000
0.0000
-0.0002
-0.0003
-0.0001
-0.0004
-0.0005
0.0003
0.0002
-0.0001
-0.0007
0.0000
0.0005
-0.0005
0.0008
-0.0003
-0.0009
-0.0008
0.0003
0.0014
0.0015
0.0014
-0.0005
-0.0009
-0.0003
-0.0007
-0.0015
-0.0003
0.0017
0.0010
0.0022
-0.0017
-0.0013
-0.0003
-0.0004
-0.0004
0.0021
-0.0001
0.0006
0.0001
-0.0028
0.0004
-0.0020
-0.0000
0.0020
0.0006
exitflag =
1
ans =
1.6560e+003 优化工具箱直接做了,用最小二乘原理 2# matlab1234
这三种方法都是根据最小二乘做的!
如果向量b不扰动的话,得出 的数值是相当接近的。可是做 微小扰动后偏差 比较大,这个问题我感到很棘手。 没人回复啊 cond那么大,扰动带来比较夸张的变化正常啊。
本身就是ill-conditioned. 5# nwcwww 你好! 我晓得我上面这个矩阵条件数很大。我想咨询一下 ,条件数很大的矛盾方程组用最小二乘什么方法求解???万分感激!
页:
[1]