![9cad49cfce577f8005589577b6e02ef2.png](https://i-blog.csdnimg.cn/blog_migrate/6c84041ec03c605c993ae6f753ea1647.jpeg)
因为是示例为主,我们将方程组限制在二元一次方程组:x,y两个变量,两个方程。类似这样:
![b33ca9b8a06fb153c760f70318c52e5c.png](https://i-blog.csdnimg.cn/blog_migrate/4e453453dba2633786f87d5bc18b63d5.jpeg)
每个方程有两个变量,x和y,形式为:ax+by+c=d
由于这次有了两个方程,我们提取参数的代码就适合提炼为一个独立的函数。获取两个方程的参数都可以调用一个函数。这是代码组织的一个基本思想。
这里又涉及到了函数多个返回值的功能,这是相当实用的功能。
看过前面两篇文章《用python编程7行代码解数学方程(ax+b=c的形式) 》和《python编程解方程第二弹:10行代码解二次方程(纯字符) 》,对于通过切割字符串来提取参数的技巧应该已经非常了解了,本篇对此不展开,见代码即可。
这里提一下的是,解方程组的通用方法。寻求通用方法,是编程的一个基本思路。
上面图中任何一个具体的方程组,相信读者朋友都能求解,那么对于一个一般的方程组怎样求解呢?想弄懂这个问题的读者,学历至少必须达到或超过初二下学期。
方程1:a1*x + b1*y + c1 = d1
方程2:a2*x + b2*y + c2 = d2
通用解法:
第一步:方程1等号两边同乘b2,方程2等号两边同乘b1
第二步:方程1减去方程2
这就消去了变量y
得到 (a1*b2-a2*b1)x+(c1*b2-c2*b1)=d1*b2-d2*b1
简单得到x=((d1-c1)*b2-(d2-c2)*b2)/(a1*b2-a2*b1)的公式
用同样的方法消去变量x,得到y的解决=((d1-c1)*a2-(d2-c2)*a1)/(-a1*b2+ a2*b1)
上代码:
![d3898839c7d6bcb64e88ca700ec5c4fe.png](https://i-blog.csdnimg.cn/blog_migrate/d49d55a818ad7f25287442edc8004846.jpeg)
注意到获取参数的函数getParm,仍然做了一定程度的简化,有兴趣的朋友可以把它完善以适应各种复杂的情况。
而解方程组的函数solv3,结构相当简单,就是利用前面推导的公式。
测试一下:
![5da3622f5dd454f6d911414b84c260a7.png](https://i-blog.csdnimg.cn/blog_migrate/401cadad2c7a11aa9441ef865a0e4788.jpeg)
得到结果:
![fa167d9e3d20ff7cc1e29b743f53f6bf.png](https://i-blog.csdnimg.cn/blog_migrate/623fd2a2a5e9c150307360757a79ab92.jpeg)