因为是示例为主,我们将方程组限制在二元一次方程组:x,y两个变量,两个方程。类似这样:
每个方程有两个变量,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)
上代码:
注意到获取参数的函数getParm,仍然做了一定程度的简化,有兴趣的朋友可以把它完善以适应各种复杂的情况。
而解方程组的函数solv3,结构相当简单,就是利用前面推导的公式。
测试一下:
得到结果: