图解线性代数:线性方程组解的问题

发布于 2021-08-03 23:35 ,所属分类:知识学习综合资讯


点击上方"蓝字"
我们吧!

“图解线性代数”是我们新开的一个专栏,旨在使用python可视化packages来学习线性代数。通过这一专栏的学习,你将不仅学到线性代数知识,还会学到很多python可视化的教程。

线性代数的一个主要用途就是求解线性方程组,线性方程组的一个重要问题就是有解和无解的问题。这篇文章我们就来回顾这些内容,我们从两个未知数的线性方程组开始,然后逐渐扩展到三个未知数的线性方程组。在开始本文之前,我们先导入本文需要的一些packages。

%guiqt
#mayavi主要用来绘制3维可视化图形
frommayaviimportmlab
importmatplotlib.pyplotasplt
importnumpyasnp
#mpl_toolkits.mplot3d是Matplotlib里面专门用来画三维图的工具包
frommpl_toolkits.mplot3dimportAxes3D
#precision表示小数点之后保留三位,suppress为True表示浮点数都使用固定的格式表示,否则当数据中最小值的绝对值小于1e-4,会使用scientificnotation
np.set_printoptions(precision=3,suppress=False)

两个线性方程的可视化

考虑以下的线性方程组:


当然,两条直线并不一定交于一点,它们可能平行,也可能重合,重合的两条直线上的每个点都是交点。考虑下面两个方程:

以及

它们分别对应了无解和有无穷多解的情况。

平面的可视化

现在我们把方程扩展到三个未知数的线性方程组,这样每个方程将确定三维空间中的一个plane(平面)。在可视化这样的线性方程组之前,我们先学习一下怎么绘制plane。首先使用numpy中的meshgrid函数,其作用是从coordinate vector(坐标向量)返回coordinate matrices(坐标矩阵)。

x,y=np.arange(-2,3,1),np.arange(-2,3,1)
X,Y=np.meshgrid(x,y)
fig,ax=plt.subplots(figsize=(12,7))
ax.scatter(X,Y,s=50)
ax.axis([-3,3,-3,3])
ax.spines['left'].set_position('zero')
ax.spines['right'].set_color('none')
ax.spines['bottom'].set_position('zero')
ax.spines['top'].set_color('none')

现在我们考虑函数


这看起来并不像一个平面,我们其实可以使用plot_surface函数来绘制一个平面,matplotlib会自动在笛卡尔坐标之间进行插值,这使得图形看起来像一个平面。

fig=plt.figure(figsize=(12,7))
ax=fig.add_subplot(111,projection='3d')
ax.plot_surface(X,Y,Z,cmap='viridis')
ax.set_xlabel('xaxis')
ax.set_ylabel('yaxis')
ax.set_zlabel('zaxis')


有唯一解的线性方程组的可视化

现在我们已经学会了怎么去绘制平面,接下来我们来讨论3个未知数的线性方程组的解的问题。

考虑一下的线性方程组:

我们确信这里是有解的,但是该图并没有显示plane相交的部分,这主要是因为matplotlib的rending(渲染)算法并不是在绘制真正的3d图形,而仅仅是投射3d图形到2维来模拟3D特征。

Mayavi包 在rending 3d图形方面非常专业,我们可以调用Mayavi包来进行绘制,这个包在文章的开始部分已经被导入了。

mlab.clf()
X,Y=np.mgrid[-25:26:1,-25:26:1]
Z1=X+2*Y
mlab.mesh(X,Y,Z1,colormap="spring")
Z2=6-2*X-Y
mlab.mesh(X,Y,Z2,colormap="winter")
Z3=1.5*X+1.5*Y
mlab.mesh(X,Y,Z3,colormap="summer")
#添加坐标轴
mlab.axes()
#添加框架
mlab.outline()

可以看到三个平面相交于一个点,而这个点就是方程组的唯一解。

没有解的线性方程组的可视化

现在让我们对不存在解的线性方程组进行可视化。我们知道齐次线性方程组一定有解,因为至少会有一个零解,所以无需讨论齐次线性方程组。而非齐次线性方程组无解,充要条件是系数矩阵的秩不等于增广矩阵的秩。我们看以下的线性方程组:

我们看到三个平面没有产生相交,因而无解。

有无穷多解线性组的可视化

非齐次线性方程组有无穷多解,其充要条件是系数矩阵的秩等于增广矩阵的秩,但是小于。如下方程:

三个平面相交于一条直线,这就是方程组有无穷多解的直观展示。

总结

以上我们对线性方程组无解、有唯一解、有无穷多解做了可视化展示。最后,我们总结一下方程组解的问题,主要是一些理论知识:

对于齐次线性方程组







更多精彩等着你

我知道你在看

相关资源