【Excel】多元一次方程组求解计算器
1 灵感来源
看书,偶然看到“解联立方程组”的内容,描述了如何用数组公式minverse和mmult求解二元一次方程组,惊到了。
二元一次方程组,通过消元的方式,可以手动求解,这是小学就练习了无数次的知识点。
excel求解二元一次、或者多元多次方程组,可以用规划求解,这是大约17年我了解到的方法,也在工作生活中多次用到。
但是书里的方法大不一样。线性代数里的知识在excel里大展拳脚,我当时仿佛看到了新世界。跟着步骤练手,成了。
脑子里产生了一个新的念头:解二元、三元、N元,变量个数不同,求解的excel就有多少个(单元格区域大小不一样不能通用)。怎么才能把不同变量数的多元一次方程组做到一个模板里呢?
经过摸索练习,最后终于做成了想要的样子(2020/6/1)。
2 思路分析
求解的部分已经解决,利用书里介绍的方法:
- 整理方程式,将带系数的变量放在等号左边,常量放在等号右边;
- 使用minverse函数计算系数矩阵的逆矩阵;
- 使用mmult函数计算系数矩阵的逆矩阵乘以常量矩阵,即得变量的解。
注:系数逆矩阵城西常量矩阵为什么就能得到变量的解,这一点我也没弄明白具体过程,大学时候学的线性代数已经完全还给老师了对不起。
关键的问题在于,如何在变量数量不等的条件下,实现以上过程。
即:如何实现大小变化的矩阵的范围的引用。(假设行/列数为1-50。)
当时尝试了不少方法(原谅我是个摸索中前进的小白,那时候对offset不熟),最后,通过offset函数实现了目的。
注:印象中也尝试了其他函数实现不同范围的引用,但是范围之外的单元格由于计算不到,会显示错误。offset没有这个问题,故最后敲定offset。
3 实现步骤
3.1 变量数单元格设置
由上分析,如果要做成适用于多元一次方程组的求解计算器,变量的个数是一个重要的参数。故首先设置了一个单元格,用来填入变量的个数,即多元一次方程组的元数。
3.2 系数、常量单元格设置
- 制作50×50的系数表;
- 将方程式的变量的系数填入;
- 将常量填写在系数单元格右侧(其他地方也可以,看个人喜好)。
注:此处设计的50×50系数矩阵,即解五十元一次方程组。理论上N元都可以,但是好像某个函数有参数限制,所以此处设置的50。具体哪个函数,找了一下,没找到,有兴趣的亲可以再求证了。
3.3 系数逆矩阵计算
使用minverse+offset函数,minverse计算系数逆矩阵,offset引用变量单元格的数值指定引用范围。
注:数组公式需按ctrl+shift+enter一起输入。
3.4 变量求解
使用mmult+offset函数计算系数矩阵的逆矩阵乘以常量矩阵,即得多元一次方程组变量的解。
注:数组公式需按ctrl+shift+enter一起输入。
4 总结&感想
总体来说,是线性代数+数组函数+offset一起协作解决了一个有点有趣又似乎没什么实际应用价值的问题。
不知道用到它的会是什么样的朋友,但是我相信它还是会遇到一直找它的小伙伴的~
【原创内容,引用请注明出处:https://blog.****.net/truly121314/article/details/107854989】