【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))
相关推荐
小七在进步几秒前
类和对象(五)
java·开发语言·算法
Rebecca_aLi3 分钟前
码匠教育:零基础学 Python,标识符到循环全套基础语法解析
开发语言·python·正则表达式
wuyk5555 分钟前
Python实战项目05:JSON数据解析与数据可视化小案例|全套实战闭环
python·信息可视化·json
belldeep6 分钟前
python:wps2md
python·wps2md
IvanCodes10 分钟前
Python 正则表达式(十四):文本匹配、查找与替换
开发语言·python·正则表达式
夜雪一千10 分钟前
Python URL编码踩坑:单层编码、双重编码实战解析
开发语言·python
茶栀(*´I`*)13 分钟前
【Python数据可视化】Matplotlib从零到精通:图表核心解剖、多子图布局与三大经典图表实战
python·信息可视化·matplotlib
孙启超15 分钟前
【AI开发之Rust】第 21 课:双端集成与出包 —— Android(.so→AAR)与 iOS(xcframework)
开发语言·后端·rust
SelectDB技术团队20 分钟前
Agent Trace 数据底座建设:宽表建模、全文检索与成本聚合的配置与验证步骤
大数据·python·clickhouse·elk·elasticsearch·全文检索·复杂查询
Brilliantwxx25 分钟前
【STM32】 __weak 弱引用、中断标志位、异常处理与 HAL_Delay 优先级
开发语言·stm32·单片机·嵌入式硬件