原标题:R语言中求解线性方程组的方法
线性方程组及解概述
线性方程组一般使用下面的形式表示:
线性方程组
写成矩阵的形式为:
Am×n Xn×1 = bm×1
对于该方程组:
有解的充分必要条件是R(A) = R(A, b)
有唯一解的充分必要条件是R(A) = R(A, b) = n;
有无限多解的充分必要条件是 R(A) = R(A, b) < n;
无解的充分必要条件是 R(A) < R(A, b)
注:R(A)表示矩阵A的秩。
满秩恰定线性方程组的求解
对于R(A) = R(A, b) = n,且(m=n)的线性方程组,可以使用矩阵知识直接来求解,也可以使用solve函数来求解。
如求下面方程组的解:
在R中编写程序及运行结果如下图所示:
求解恰定方程组的解
如使用solve函数的话,可以使用下面的程序:
> A
> b
> solve(A,b)
其运行结果如下图所示:
使用solve函数求解满秩方程组
可以看出两种方式的结果是相同的。
超定方程组的求解
对于超定方程组(m>n的情况,即方程个数多于变量个数的情况),可以使用矩阵知识来求解,如求下面方程组的解:
在R中编写的代码及运行结果如下图所示:
超定方程组求解
如上图所示可知,该方程组的解是x1=1,x2=0(第2个结果由于精度问题,可以近似为0)。
欠定方程组求解
欠定方程组指方程的个数少于变量的个数即(m
可以编写如下R程序:
A
b
sol.svd
#获取U D V各个值
U
C
Y
在R中运行的结果如下图所示:
欠定方程组求解
这里求得的方程组的一个解是:x1=0.83; x2= 0.33; x3=-0.17
其实,该方程组应该有无穷多解,这里使用最小二乘法求出其中的一个解。
实际上,对于非满秩的方程组都可以使用这种方法来求解,感兴趣的读者可以自己试验一下。
总结
本文只介绍了求解的方法,但并没有判断一个方程组是否有解,以及有解的话是唯一解还是无穷多解。本号将在今后给出一个尽可能完善的求解线性方程组的函数。敬请关注。返回搜狐,查看更多
责任编辑: