在 R 中求解方程组
在本文中,我们将讨论如何用 R 编程语言求解方程组。
R语言中的solve()函数用于求解方程。这里的方程类似于 a*x = b,其中 b 是向量或矩阵,x 是将要计算其值的变量。
Syntax: solve(a, b)
Parameters:
- a: coefficients of the equation
- b: vector or matrix of the equation
示例 1:求解三个方程的系统方程
Given Equations:
x + 2y + 3z = 20
2x + 2y + 3z = 100
3x + 2y + 8z = 200
Matrix A and B for solution using coefficient of equations:
A->
1 2 3
2 2 3
3 2 8
B->
20
100
200
为了使用 R 中的两个矩阵解决这个问题,我们使用以下代码:
R
# create matrix A and B using given equations
A <- rbind(c(1, 2, 3),
c(2, 2, 3),
c(3, 2, 8))
B <- c(20, 100, 200)
# Solve them using solve function in R
solve(A, B)
R
# Load package MASS
library(MASS)
# create matrix A and B using given equations
A <- rbind(c(19, 32, 31),
c(22, 28, 31),
c(31, 12, 81))
B <- c(1110, 1406, 3040)
# Solve them using solve
# function wrapped in fractions
fractions(solve(A, B))
R
# create matrix A and B using given equations
A <- matrix(c(4, 7, 3, 6), ncol = 2)
print(A)
print("Inverse matrix")
# Solve them using solve function in R
print(solve(A))
输出:
80 -36 3.99999999999999
这意味着 x=80、y=-36 和 z=4 是线性方程的解。
示例 2:求解三个方程的系统方程
为了得到分数形式的解,我们使用 R 语言中的库 MASS 并将求解函数包装在分数中。
Given Equations:
19x + 32y + 31z = 1110
22x + 28y + 13z = 1406
31x + 12y + 81z = 3040
Matrix A and B for solution using coefficient of equations:
A->
19 32 31
22 28 13
31 12 81
B->
1110
1406
3040
为了使用 R 中的两个矩阵解决这个问题,我们使用以下代码:
电阻
# Load package MASS
library(MASS)
# create matrix A and B using given equations
A <- rbind(c(19, 32, 31),
c(22, 28, 31),
c(31, 12, 81))
B <- c(1110, 1406, 3040)
# Solve them using solve
# function wrapped in fractions
fractions(solve(A, B))
输出:
[1] 159950/2243 -92039/4486 29784/2243
这意味着 x=159950/2243 、 y=-92039/4486 和 z=29784/2243 是上述线性方程的解。
示例 3:求解逆矩阵
电阻
# create matrix A and B using given equations
A <- matrix(c(4, 7, 3, 6), ncol = 2)
print(A)
print("Inverse matrix")
# Solve them using solve function in R
print(solve(A))
输出:
[,1] [,2]
[1,] 4 3
[2,] 7 6
[1] "Inverse matrix"
[,1] [,2]
[1,] 2.000000 -1.000000
[2,] -2.333333 1.333333