numpy瑞士军刀 第三卷:实战演练 第七章 组合大阵
第三卷:实战演练
第七章 组合大阵
第一节 水患危机
卯时刚过,陆小阵便被一阵急促的敲门声惊醒。开门一看,是青云镇的李掌柜,满脸焦急。
“少侠救命!青河决堤,整个镇子都要被淹了!”
陆小阵匆匆赶到镇外,只见青河水位暴涨,堤岸已有三处缺口。十几个村民正用沙袋堵漏,但收效甚微。
"普通方法不行,"陆小阵观察地形后说,“需要布置’分水阵’,但范围太大…”
"所以要用组合阵法。"一个熟悉的声音传来。清虚道长不知何时已站在他身后,手中拂尘轻扬。
第二节 矩阵组合
道长带着陆小阵来到高处,指着河堤说:“看好了,这就是’矩阵乘法’的精妙之处。”
他先布置了三个小型分水阵:
分水阵A = np.array([[1, 0], [0, 0.5]])
分水阵B = np.array([[0.8, 0], [0, 0.7]])
分水阵C = np.array([[0.6, 0], [0, 0.9]])
然后演示了组合方法:
组合阵 = 分水阵A @ 分水阵B @ 分水阵C # 矩阵乘法
奇妙的事情发生了!三个小阵法的效果叠加,形成一个覆盖整个河段的大阵。汹涌的河水顿时变得温顺,乖乖退回河道。
"这就是线性代数的力量,"道长解释道,“通过矩阵乘法,小阵法可以组合成威力巨大的大阵。”
第三节 节点破坏
就在阵法即将完成时,突然三支黑羽箭从林中射出,精准命中三个阵法的关键节点!
"黑风寨!"陆小阵拔剑四顾。只见五个黑衣人从林中窜出,为首的正是那持九环刀的大汉。
"小子,今日就让你见识下’矩阵分解’的厉害!"大汉狞笑着抛出一把黑豆。黑豆落地后自动排列成一个破坏性阵法:
破坏阵 = np.linalg.inv(组合阵) # 矩阵求逆
组合阵顿时剧烈震荡,眼看就要崩溃!
第四节 机关联动
千钧一发之际,数十枚银针从侧面射来,精准击中黑豆阵的弱点。
"苏姑娘!"陆小阵惊喜地看到苏沐晴站在不远处,手中拿着一个精巧的机关匣。
"看我的’机关矩阵’!"少女按下机关,匣中飞出数十个零件,在空中组成一个稳定的结构:
机关阵 = np.linalg.solve(组合阵, 破坏阵) # 解线性方程组
黑豆阵应声而破!黑衣人见势不妙,仓皇逃窜。
"唐门机关术竟能如此精确!"陆小阵赞叹道。
苏沐晴微微一笑:"机关之道,贵在精准联动。不过…"她看向清虚道长,“比起道长的组合大阵,还是差了些意境。”
道长抚须而笑:“各有千秋。机关精确,阵法灵动。今日多亏姑娘相助。”
夕阳下,河水安然流淌,三人并肩而立…
NumPy概念点睛:
NumPy的线性代数模块功能强大:
- 矩阵乘法:
@
运算符或np.dot()
- 矩阵分解:
np.linalg.cholesky()
,np.linalg.qr()
- 行列式:
np.linalg.det()
- 解方程:
np.linalg.solve()
如同组合多个小阵形成大阵,线性代数让我们能构建复杂的数值计算系统。下章将学习"随机之道"。