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
X=solve(a=A,b=B)X
## [1] -1.069444 -0.937500 -1.305556 2.500000
超定方程组是指方程的个数大于未知数的个数不相等的方程组,例如:
其中,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
非线性方程组可以通过变量的替换,转换为线性方程组求解,例如:
那么可以令:,那么方程就变成关于Y的线性方程组了,就可以先求解关于Y的线性方程组的解Y,那么原方程组的解X=exp(Y)。 那么求解方法就与线性方程组一致。