1◆◆多元一次方程组
◆◆◆◆
竟然指定是问学霸,被我看到了那可是不
行的,必须强势插入,召唤学渣好帮手---
Python①!
打开Python①命令行,逐行输入(回
车换行):
>
>
>
i
m
p
o
r
t
n
u
m
p
y
a
s
n
p
#numpy②
>>> a = np.array([
[1, 1, 0, 0],
[0, 0, 1,-1],
[1, 0, 1, 0],
[0, 1, 0, 1]
])
>>> b= np.array([8, 6, 13, 8])
>>> result = np.linalg.solve(a, b)
>>> print(result)
[ 3.5 4.5 9.5 3.5]
上面方程组的答案就是[ 3.5 4.5 9.5 3.5],下面来
解释一下这个方程怎么变形为这个代码。
1.1 方程组中有4项未知数,可以看作:
1.2
变形为常见方程方式(明白原理后,在脑子里按顺
序分配未知量即可):
1*x + 1*y + 0*z + 0*w = 8
0*x + 0*y + 1*z - 1*w = 6
1*x + 0*y + 1*z + 0*w= 13
0*x + 1*y + 0*z - 1*w = 8
1.3
因为未知数的位置是严格定义了的,现在直接抄下
倍数,将方程左边变形为矩阵:
[[1, 1, 0, 0],
[0, 0, 1,-1],
[1, 0, 1, 0],
[0, 1, 0, 1]]
1.4 方程右边变形为数列(可理解为一维矩阵):
[8, 6, 13, 8]
1.5
最后,完成numpy②线性代数模块求解(Linear
algebra):
>>> result = np.linalg.solve(a, b)
>>> print(result) #打印结果
[ 3.5 4.5 9.5 3.5] #这4个数依次对应xyzw这4个
未知数
1分半搞定,学霸已放弃求解,献上他的大拇哥 : )。
2◆◆多元多次方程组
不过,学霸就是学霸,其他人都在惊叹我的神速,学霸已
经发问,你解多元多次方程组速度如何?
吓死宝宝了,还好以前做过不少功课,30秒复习一下思路
赶紧接招:咱们一人出一个方程,合起来解吧,我的是x**3
+
y = 4。学霸不假思索对曰:x**2 + y**2 = 16。果然学霸是纸
算,自然不愿意上高次。
这回,得动用解多次方程的神器了---scipy③。有了上面
一次方程组的积累,下面应该能轻松看懂。
2.1 方程组变形,让右侧为0:
x**3 + y - 4 = 0
x**2 + y**2 - 16 = 0
2.2 在python①命令行中输入:
>>> from scipy.optimize import fsolve #scipy③
>>> def func(x):
x1,x2=x[0],x[1] #注意前面有4个空格
return [x1**3 + x2 -4, x1**2 + x2**2 - 16] #注意
前面有4个空格
>>> result = fsolve(func, [1,1]) # 初始化计算使
用x=1,y=1
>>> print(result)
[ 0.12503055 3.99804544] #这就是方程组的解了
从头到尾不到2分钟。群里顿时炸锅了,全班见证了学渣
秒杀学霸的奇迹:)。
有人说“数学是思维的科学”,现实是大部分人只能在数
学计算上不被学霸秒杀,才能和他们谈数学思维。请善用数学
工具,完成你的逆袭!
3◆◆相关工具链接与安装:
① python的下载与安装
















