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语言实现方法可以私下联系,一起探讨更先进的算法实现。在这里就不一一列举了。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步