对问题的描述

对问题的描述

问题本身

讨论一个非常常见的问题

求解线性方程组
A x = b Ax = b

我们使用变分的思想,如果A是一个对称正定的矩阵,我们可以把这个问题转化为求
1 2 x T A x x T b \frac{1}{2}x^{T}Ax - x^{T}b 的最小值的问题
如果A是满秩但不是实对称的,我们把方程组转化为 A T A x = A T b A^{T}Ax = A^{T}b 的问题就行了。

问题的可视化

因为我们无法描绘出三维以上的世界,我们这里只讨论A是2x2的实对称方阵

1 2 x T A x = x T b \frac{1}{2}x^{T}Ax = x^{T}b 所表示的图形,是一个凸面。

我们可以这么去理解, 首先 1 2 x T A x \frac{1}{2}x^{T}Ax 表示的是一个曲面,他的等高线是一系列椭圆, x T b x^{T}b 表示的是一个平面,凸面减去平面还是凸面,他依旧有一个全局最小值。

我们决定验证一下这个事情:
我们令
A = 3 1 1 5 A = \begin{matrix} 3&1\\1&5\end{matrix}
运用matlab画出来,我们在此画一个凸面图和一个等高线图。其中,数值较高的部分颜色为暖色调,较低的部分为冷色调。

clear
clc
%% 参数
N = 512;
mu = 1:30;
%% 表达式以及网格化表面图
figure(1)
vec = -N/2+0.5:N/2-0.5;
[xx, yy] = meshgrid(vec,vec);
Z = 3*xx.^2+2*xx.*yy+5*yy.^2;
s = surf(xx,yy,Z,'FaceAlpha',0.5,'EdgeColor','none');
%这里我们将透明度调成0.5并去掉凸面的边框
colorbar
%% 等高线图
figure(2);
subplot(121);
contour(Z);  %绘制函数的等高线
subplot(122);
contourf(Z,16);  %绘制等高线指定条数16并填充颜色

作图结果如下:
z = x T A x z = x^{T}Ax 的图像如下
在这里插入图片描述

等高线如下

在这里插入图片描述
我们作 z = b T x z = b^{T}x 的图像
b = 1 1 b = \begin{matrix} 1\\ 1\end{matrix}
代码如下:

clear
clc
%% 参数
N = 512;
mu = 1:30;
%% 表达式以及网格化表面图
figure(1)
vec = -N/2+0.5:N/2-0.5;
[xx, yy] = meshgrid(vec,vec);
Z = xx+yy;
s = surf(xx,yy,Z,'FaceAlpha',0.8,'EdgeColor','none');
colorbar
%% 等高线图
figure(2);
subplot(121);
contour(Z);  %绘制函数的等高线
subplot(122);
contourf(Z,16);  %绘制等高线指定条数16并填充颜色

结果如下:
在这里插入图片描述
在这里插入图片描述
我们把这两个合一块

Z = A T x b T x Z = A^{T}x -b^{T}x 的图像如下
代码为:

clear
clc
%% 参数
N = 512;
mu = 1:30;
%% 表达式以及网格化表面图
figure(1)
vec = -N/2+0.5:N/2-0.5;
[xx, yy] = meshgrid(vec,vec);
Z = 0.5*(3*xx.^2+2*xx.*yy+5*yy.^2)-xx-yy;
s = surf(xx,yy,Z,'FaceAlpha',0.8,'EdgeColor','none');
colorbar
%% 等高线图
figure(2);
subplot(121);
contour(Z);  %绘制函数的等高线
subplot(122);
contourf(Z,16);  %绘制等高线指定条数16并填充颜色

在这里插入图片描述
在这里插入图片描述

没错,从整体上确实与第一幅图相比并没有太大的变化,我们可以这么理解,平面对于整体图形在数值上的贡献已经被凸面给抹杀掉了。从数值上的角度理解的话,那就是二次函数会随着自变量与0的距离变大而变大,而线性函数在数值上的贡献是远远不如二次函数的。

发布了31 篇原创文章 · 获赞 6 · 访问量 2805

猜你喜欢

转载自blog.csdn.net/weixin_29732003/article/details/103310961