在这个问题中,我们最小化 \mathrm{trace}(Y^*AY),其中 A 是一个 12 \times 12 的一维二阶差分算子,而 Y 是 12 \times 4 的矩阵。
注意:我们不建议用这种方式解决这个问题,因为对于常数 A,使用传统的特征值求解器可以更快地完成。
>> !cp examples/tracemin/*.m .
>> randn('state',0);
>> A = Kinetic(12);
>> parameters(A);
>> Y0 = guess(4);
>> [fn,Yn] = sg_min(Y0,'frcg','euclidean');
iter grad F(Y) flops
0 2.249340e+00 4.339273e+00 3807
1 1.635681e+00 1.774835e+00 106770
2 6.506188e-01 1.160615e+00 196319
3 4.400435e-01 1.043566e+00 295232
4 3.460854e-01 9.601858e-01 386244
5 3.418816e-01 9.122465e-01 471214
6 2.591414e-01 8.543284e-01 560763
7 1.225067e-01 8.319959e-01 661414
8 5.660065e-02 8.280403e-01 785192
9 2.346852e-02 8.271969e-01 935587
10 9.258692e-03 8.270659e-01 1105819
11 4.723177e-03 8.270398e-01 1261468
12 3.282461e-03 8.270316e-01 1417625
13 1.984453e-03 8.270281e-01 1576710
14 9.808233e-04 8.270270e-01 1726651
15 4.339561e-04 8.270267e-01 1876592
16 1.990167e-04 8.270267e-01 2022569
17 6.563434e-05 8.270267e-01 2163632
18 3.165945e-05 8.270267e-01 2322727
19 2.015557e-05 8.270267e-01 2468720
20 1.261539e-05 8.270267e-01 2612825
21 7.123104e-06 8.270267e-01 2748702
22 2.552485e-06 8.270267e-01 2935969
23 9.679096e-07 8.270267e-01 3119232
24 3.168742e-07 8.270267e-01 3287067
25 2.062080e-07 8.270267e-01 3472366
图 9.3 展示了本次运行的收敛曲线。