用Python的Numpy求解线性方程组

简介: 用Python的Numpy求解线性方程组

在本文中,您将看到如何使用Python的Numpy库解决线性方程组。


什么是线性方程组?

维基百科将线性方程组定义为:

在数学中,线性方程组(或线性系统)是两个或多个涉及同一组变量的线性方程的集合。

解决线性方程组的最终目标是找到未知变量的值。这是带有两个未知变量的线性方程组的示例:

等式1:

为了解决上述线性方程组,我们需要找到xy变量的值。解决方法有多种,例如消除变量,克莱默规则,矩阵解决方案。在本文中,我们将介绍矩阵解决方案。

在矩阵解中,要求解的线性方程组以矩阵形式表示AX = B。例如,我们可以用矩阵形式表示等式1,如下所示:

要查找的值xy变量方程1,我们需要找到在矩阵中的值X。为此,我们可以采用矩阵逆的点积A和矩阵B,如下所示:





X = inverse(A).B

用numpy求解线性方程组

要求解线性方程组,我们需要执行两个操作:矩阵求逆和矩阵点积。Python的Numpy库支持这两种操作。如果尚未安装Numpy库,则可以使用以下pip命令:



$ pip install numpy

现在让我们看看如何使用Numpy库解决线性方程组。

使用inv()和dot()方法

首先,我们将找到A在上一节中定义的矩阵逆。

首先让我们A在Python中创建矩阵。要创建矩阵,array可以使用Numpy模块的方法。矩阵可以视为列表列表,其中每个列表代表一行。

在以下脚本中,我们创建一个名为的列表m_list,其中进一步包含两个列表:[4,3][-5,9]。这些列表是矩阵中的两行A。要A使用Numpy 创建矩阵,将m_list传递给array方法,如下所示:


import numpy as np
m_list = [[4, 3], [-5, 9]]A = np.array(m_list)

为了找到矩阵的逆,将矩阵传递给linalg.inv()Numpy模块:



inv_A = np.linalg.inv(A)
print(inv_A)

下一步是找出矩阵的逆矩阵之间的点积A和矩阵B。重要的是要提一下,只有在矩阵的维度相等的情况下,才可能在矩阵之间获得矩阵点积,即,左矩阵的列数必须与右矩阵的行数匹配。

要使用Numpy库查找点积,使用linalg.dot()函数。



B = np.array([20, 26])X = np.linalg.inv(A).dot(B)
print(X)

输出:


[2. 4.]

验证一下,如果在方程式中插入x4替换未知数,您将看到结果为20。

现在,让我们解决由三个线性方程组成的系统,如下所示:

可以使用Numpy库按以下方式求解以上方程式:

公式2:



print(X)

在上面的脚本中,linalg.inv()linalg.dot()方法链接在一起。该变量X包含方程式2,并输出如下:


[ 5.  3. -2.]


未知数xy和的值分别是5、3 z和-2。您可以将这些值代入公式2并验证其正确性。

使用solve()方法

在前两个示例中,我们使用linalg.inv()linalg.dot()方法来找到方程组的解。但是,Numpy库包含该linalg.solve()方法,该方法可用于直接找到线性方程组的解:



print(X2)

输出:



[ 5.  3. -2.]

您可以看到输出与以前相同。


一个真实的例子

让我们看看如何使用线性方程组来解决实际问题。

假设有一个卖水果的人一天就卖出了20个芒果和10个橘子,总价为350元。第二天,他以500元的价格出售了17个芒果和22个橙子。如果这两天的水果价格都保持不变,那么一个芒果和一个橙子的价格是多少?

使用两个线性方程组可以轻松解决此问题。

假设一个芒果x的价格为,一个橙子的价格为y。上面的问题可以这样转换:

上面的方程组的解决方案如下所示:


X = np.linalg.solve(A,B)
print(X)

这是输出:





[10. 15.]

输出显示,一个芒果的价格为10元,一个橙子的价格为15元。

结论

本文介绍了如何使用Python的Numpy库解决线性方程组。您可以使用linalg.inv()linalg.dot()方法来求解线性方程组,也可以简单地使用solve()方法。solve()方法是首选方法。


相关文章
|
8月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
644 1
|
8月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
389 0
|
10月前
|
机器学习/深度学习 API 异构计算
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
JAX是Google开发的高性能数值计算库,旨在解决NumPy在现代计算需求下的局限性。它不仅兼容NumPy的API,还引入了自动微分、GPU/TPU加速和即时编译(JIT)等关键功能,显著提升了计算效率。JAX适用于机器学习、科学模拟等需要大规模计算和梯度优化的场景,为Python在高性能计算领域开辟了新路径。
947 0
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
|
10月前
|
存储 数据采集 数据处理
Pandas与NumPy:Python数据处理的双剑合璧
Pandas与NumPy是Python数据科学的核心工具。NumPy以高效的多维数组支持数值计算,适用于大规模矩阵运算;Pandas则提供灵活的DataFrame结构,擅长处理表格型数据与缺失值。二者在性能与功能上各具优势,协同构建现代数据分析的技术基石。
756 0
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
Pandas 和 NumPy 是 Python 中不可或缺的数据处理和分析工具。本文通过实际案例深入剖析了 Pandas 的数据清洗、NumPy 的数组运算、结合两者进行数据分析和特征工程,以及 Pandas 的时间序列处理功能。这些高级技巧能够帮助我们更高效、准确地处理和分析数据,为决策提供支持。
515 2
|
数据采集 数据可视化 数据处理
如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`)
本文介绍了如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`),加载历史数据,计算均线和其他技术指标,实现交易逻辑,记录和可视化交易结果。示例代码展示了如何根据均线交叉和价格条件进行开仓、止损和止盈操作。实际应用时需注意数据质量、交易成本和风险管理。
1050 5
|
存储 数据处理 Python
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第27天】在科学计算和数据分析领域,Python凭借简洁的语法和强大的库支持广受欢迎。NumPy和SciPy作为Python科学计算的两大基石,提供了高效的数据处理和分析工具。NumPy的核心功能是N维数组对象(ndarray),支持高效的大型数据集操作;SciPy则在此基础上提供了线性代数、信号处理、优化和统计分析等多种科学计算工具。结合使用NumPy和SciPy,可以显著提升数据处理和分析的效率,使Python成为科学计算和数据分析的首选语言。
436 3
|
存储 机器学习/深度学习 算法
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第26天】NumPy和SciPy是Python科学计算领域的两大核心库。NumPy提供高效的多维数组对象和丰富的数学函数,而SciPy则在此基础上提供了更多高级的科学计算功能,如数值积分、优化和统计等。两者结合使Python在科学计算中具有极高的效率和广泛的应用。
649 2
|
机器学习/深度学习 并行计算 大数据
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧2
【Python篇】NumPy完整指南(上篇):掌握数组、矩阵与高效计算的核心技巧
646 10
|
机器学习/深度学习 算法 数据挖掘
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧1
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
319 5

推荐镜像

更多