说到数学题,相信大家都不陌生,从小学到大学都跟数学打交道。 其中初中的方程组,高中的二次曲线,大学的微积分最为头疼, 这个项目 就使用python 来解决方程组问题,微积分问题,矩阵化简。
SymPy库
用Python解决方程组、微积分等问题,主要是用到Python的一个库——SymPy库。可以说这个项目也主要是学习SymPy库的用法。
SymPy是符号数学的Python库。它的目标是成为一个全功能的计算机代数系统,同时保持代码简洁、易于理解和扩展。 SymPy完全是用Python写的,并不需要外部的库。
大家可能还是不太明白,我稍微解释一下,单纯用语言内置的运算与变量解决的是,由值求结果。如:
#仅用于说明,不要直接运行
print x + y
上式中的x与y在这条语句执行前你肯定得赋值的,否则就会出错。
而符号计算不同,你可以在之前将其设为符号。
#仅用于说明,不要直接运行
x = Symbol('x')
y = Symbol('y')
print x + y
上述代码是可以的。因为Sympy库将x与y转换成了符号(概念上)。
这就是SymPy库。
解二元一次方程功能实现
解方程的功能主要是使用Sympy中solve函数实现。
示例题目是:
此处输入图片的描述
符号表示
方程中的符号
from sympy import *
x = Symbol('x')
y = Symbol('y')
或者
from sympy import *
x, y = symbols('x y')
第二个用空格隔开,下面代码中用x,y。括号里面的其实可以随意定义,因为是显示用。 比如:
x = Symbol('x1')
但考虑到易读性还是相同比较好。
方程表示
代码表示与手写还是有区别的,下面列出常用的:
加号 +
减号 -
除号 /
乘号 *
指数 **
对数 log()
e的指数次幂 exp()
对于长的表达式,如果不确定,就加小括号
题目中表达式可表示为:
2 * x - y - 3 = 0
3 * x + y - 7 = 0
由于需要将表达式都转化成右端等于0,这里把常数3和7移到等式左边。
利用solve函数解方程
在解决例子之前,我们先解决一个一元一次的方程。
x * 2 - 4 = 0
虽然很容易口算出来,我们还是要用solve函数
print solve(x * 2 - 4, x)
#result
#[2]
solve:第一个参数为要解的方程,要求右端等于0,第二个参数为要解的未知数。还有一些 其他的参数,想了解的可以去看官方文档。
下面进行例题求解:
solve([2 * x - y - 3, 3 * x + y - 7],[x, y])
完整代码为:
from sympy import *
x = Symbol('x')
y = Symbol('y')
print solve([2 * x - y - 3, 3 * x + y - 7],[x, y])
结果如下:
此处输入图片的描述