R与数学专题 |第三节: R求解线性代数

上期内容回顾

上一周给大家介绍了R在矩阵方面的相关计算,包括矩阵的基本运算;矩阵的分解;行列式的相关运算

本期内容导读

在这一周中,将接着给大家介绍R在线性代数方面的应用。通过本节的学习,您将能运用R求解线性方程组的解,超定方程组,非线性方程的线性求法。

1.线性方程组的求法

 

1.1 克莱姆法则

克莱姆法则,适用于求解变量和方程数目相等的线性方程组。 假设有N个未知数N个方程组成的方程组:

那么上述方程组可以写成矩阵的形式:

其中:

那么方程组的解为:

其中:

 

实例:

A=matrix(c(1,-2,1,1,            1,-2,1,-1,            2,4,2,5,             -3,2,6,3),nrow=4,ncol=4,byrow=T)
 B=c(2,-3,4,1)
A
##      [,1] [,2] [,3] [,4]
## [1,]    1   -2    1    1
## [2,]    1   -2    1   -1
## [3,]    2    4    2    5
## [4,]   -3    2    6    3
B
## [1]  2 -3  4  1

那么方程组的解:

X=sapply(c(1:4),   function(i,A,B){
    D1=A
    D1[,i]=B
  det(D1)/det(A)},   A=A,B=B)
X
## [1] -1.069444 -0.937500 -1.305556  2.500000

1.2 运用R中的solve函数求解线性方程组的解

X=solve(a=A,b=B)X
## [1] -1.069444 -0.937500 -1.305556  2.500000

1.3 超定方程组求解

超定方程组是指方程的个数大于未知数的个数不相等的方程组,例如:

 

其中,m>n。

仍然假设上述方程组的矩阵表现形式为:

那么:

其中,表示A的转置。 根据数学知识可以证明:如果,那么可逆。

所以可以这样求解上述超定方程组的解,令:

那么:

那么这个方程组的解与上述的超定方程组的解等价。

 

实例:

A=matrix(c(1,-2,1,1,            1,-2,1,-1,            2,4,2,5,            -3,2,6,3,            7,9,3,2),nrow=5,ncol=4,byrow=T)
B=c(2,-3,4,1,5)
A
##      [,1] [,2] [,3] [,4]
## [1,]    1   -2    1    1
## [2,]    1   -2    1   -1
## [3,]    2    4    2    5
## [4,]   -3    2    6    3
## [5,]    7    9    3    2
B
## [1]  2 -3  4  1  5

那么方程的解为:

X=solve(t(A)%*%A,t(A)%*%B)t(X)
##           [,1]      [,2]       [,3]      [,4]
## [1,] 0.2350175 0.2299386 -0.2129566 0.7899491

2. 非线性方程组的求法

非线性方程组可以通过变量的替换,转换为线性方程组求解,例如:

那么可以令:,那么方程就变成关于Y的线性方程组了,就可以先求解关于Y的线性方程组的解Y,那么原方程组的解X=exp(Y)。 那么求解方法就与线性方程组一致。

 

结束语:

通过这周的学习,大家对线性方程组的求解有了一定的认识,这周的课程只是带领大家入门,例如超定方程组可以应用于多元线性回归方程的求解。关于线性方程的求解方法还有很多,比如高斯消元法,迭代法,这些方法对于求解大矩阵的方程组更有效。详细的R语言实现方法可以私下联系,一起探讨更先进的算法实现。在这里就不一一列举了。

posted @   payton数据之旅  阅读(1854)  评论(1编辑  收藏  举报
点击右上角即可分享
微信分享提示