105-R编程15-用R帮你解方程

2022-04-05 15:17:27 浏览数 (1)

  • 参考:
    • 在R里面对三元一次方程求解 - 云 社区 - 腾讯云 (tencent.com)[1]
    • 使用R solve(a,b)解方程 - 1-阿里云开发者社区 (aliyun.com)[2]

前言

忽然发现R 连方程我还不会。这怎么可以,赶紧学学。

直接操作

比如这里我们要求解一个三元一次方程,那最简单的就是消元的思想了,也就是让三元变二元再变一元:

  • ①利用代入法或加减法,消去一个未知数,得出一个二元一次方程组;
  • ②解这个二元一次方程组,求得两个未知数的值;
  • ③将这两个未知数的值代入原方程中较简单的一个方程,求出第三个未知数的值,把这三个数写在一起的就是所求的三元一次方程组的解。

在R 中的话,我们可以借助矩阵,利用solve 函数计算。

这个函数可以接受两个参数:solve(A,b)

  • A 为方程组的系数矩阵;
  • b 则是方程组等式右端的常数向量;

比如已知方程组:

代码语言:javascript复制
2.6x   0.3y   25.9z = 116
20.6x   13.5y = 202
8x   3.3y   40.3z = 221

那我们就先制作一下solve 函数的输入:

代码语言:javascript复制
> A <- matrix(c(2.6, 0.3, 25.9, 20.6, 13.5, 0, 8, 3.3, 40.3), ncol = 3, byrow = T)
> A
     [,1] [,2] [,3]
[1,]  2.6  0.3 25.9
[2,] 20.6 13.5  0.0
[3,]  8.0  3.3 40.3

> b <- c(116, 202, 221)

直接调用函数即可:

代码语言:javascript复制
> solve(A,b)
[1] 5.117247 7.154422 3.882194

也就对应我们上面的x,y,z 了。

ps:当我读到最后的时候,就发现这个教程并没有意向的那么朴素了。

尤其是:

★在R里面解方程真的是非常方便啊,我不禁在想,如果我大学本科就知道了R这个神器,高等数学,线性代数,概率论应该就理解的更牢固吧?不过好像意义也不大,因为离开校园后它们的用处几乎没有,而学习它们的时候无法也就是考试分数更高,可是已经都是满分了,除非去逼迫授课老师把考题出难一点。 ”

手动狗头一下。

对了,你还有其他方法解方程吗?

参考资料

[1]

在R里面对三元一次方程求解 - 云 社区 - 腾讯云 (tencent.com): https://cloud.tencent.com/developer/article/1654486

[2]

使用R solve(a,b)解方程 - 1-阿里云开发者社区 (aliyun.com): https://developer.aliyun.com/article/11164

0 人点赞