【python】求解线性方程

唯一解(矩阵法、solve函数)

{ 3 x + y = 9 x + 2 y = 8 \left\{ \begin{matrix} 3x+y=9 \\ x+2y=8 \end{matrix} \right. {3x+y=9x+2y=8
A x = b Ax=b Ax=b,其中 A = [ 3 1 1 2 ] A=\left[\begin{matrix} 3 & 1 \\ 1 &2 \end{matrix}\right] A=[3112], B = [ 9 8 ] B=\left[\begin{matrix} 9 \\ 8 \end{matrix}\right] B=[98],则 x = A − 1 b = [ 2 3 ] x = A^{-1}b=\left[\begin{matrix} 2 \\ 3 \end{matrix}\right] x=A−1b=[23]

可以使用np.linalg.inv(a) @ b或者np.linalg.solve(a, b)求解

python 复制代码
import numpy as np
a = np.array([[3, 1], [1, 2]])
b = np.array([[9] ,[8]])
x1 = np.linalg.inv(a) @ b  #第一种解法
#上面语句中@表示矩阵乘法
x2 = np.linalg.solve(a, b) #第二种解法

print(a);print(b)
print(np.linalg.inv(a))
print(x1); print(x2)

最小二乘解(方程数>未知数)

具体解释线性方程组的最小二乘解和最小范数解 - 杨晓东的文章 - 知乎
{ 3 x + y = 9 x + 2 y = 8 x + y = 6 \left\{ \begin{matrix} 3x+y=9 \\ x+2y=8 \\x+y=6 \end{matrix} \right. ⎩ ⎨ ⎧3x+y=9x+2y=8x+y=6

使用广义逆矩阵np.linalg.pinv(a) @ b,结果最小二乘解:[2,3.1667]

python 复制代码
import numpy as np
a = np.array([[3, 1], [1, 2], [1, 1]])
b = np.array([9, 8, 6])
x = np.linalg.pinv(a) @ b  
print(np.round(x, 4))
相关推荐
B站_计算机毕业设计之家1 天前
python舆情分析可视化系统 情感分析 微博 爬虫 scrapy爬虫技术 朴素贝叶斯分类算法大数据 计算机✅
大数据·爬虫·python·scrapy·数据分析·1024程序员节·舆情分析
B站_计算机毕业设计之家1 天前
基于python人脸识别系统 人脸检测 实时检测 深度学习 Dlib库 ResNet深度卷积神经网络 pyqt设计 大数据(源码)✅
python·深度学习·目标检测·计算机视觉·信息可视化·人脸识别·1024程序员节
汤姆yu1 天前
2026版基于python大数据的电影分析可视化系统
大数据·python·1024程序员节·电影分析可视化
Elieal1 天前
Java的Collection 集合体系详解
java·开发语言
Pa2sw0rd丶1 天前
Python 循环导入详解:为什么会导致生产环境崩溃及企业级解决方案
后端·python
梨轻巧1 天前
Maya Python入门:创建locator、getAttr() 获取属性、setAttr() 设置属性、定位xform()
python·maya
charlie1145141911 天前
HTML 理论笔记
开发语言·前端·笔记·学习·html·1024程序员节
Xxxx. .Xxxx1 天前
Classwork 5 - Check the HTML Tags
python
郝学胜-神的一滴1 天前
Linux中的`fork`函数详解:深入解析
linux·服务器·开发语言·c++·算法
曾凡宇先生1 天前
无法远程连接 MySQL
android·开发语言·数据库·sql·tcp/ip·mysql·adb