第十一天 线性代数基础

news/2024/11/14 4:47:27/

线性代数是数学的一个分支,广泛应用于计算机科学、物理学、工程学等领域。Python 提供了一些强大的库来进行线性代数计算,其中最著名的是 NumPy 和 SciPy。下面是一些线性代数的基础概念和如何在 Python 中使用这些库的示例。

线性代数是数学的一个分支,主要处理线性关系问题。以下是线性代数的基础知识概览:

一、行列式

行列式是由n²个元素组成的n行n列矩阵A的一种代数运算规则或函数,行列式内的矩阵元素A是一个方阵,这样的行列式被称为n阶行列式,用det(A)或|A|表示。

  1. 特殊行列式的计算:对于对角行列式、上三角行列式、下三角行列式来说,其行列式运算结果等于其主对角线上元素的乘积。

  2. 行列式的性质

    • 行列式与其转置行列式的结果相等。
    • 行列式交换任意两行(或列),行列式结果变号。
    • 若行列式中有两行(或列)元素完全相同或对应成比例,则行列式结果为0。
    • 在同一行列式中,第j行的元素与第i行元素的代数余子式的乘积之和为0(列同理)。
    • 用数字k乘行列式某一行(或列)中所有元素,等于用k乘此行列式。
    • 若行列式某行元素可以拆为两数之和,则行列式可以拆为两个行列式的和。
    • 行列式某行元素加上另一行对应元素的k倍,行列式的值不变。

二、矩阵

由mxn个数按照一定的次序排成的m行n列的矩形数表称为mxn的矩阵。

  1. 特殊矩阵

    • 方阵:当矩阵的行数和列数相等时,称该矩阵为方阵。
    • 零矩阵:当矩阵的元素全为0时,该矩阵被称为零矩阵。
    • 对角矩阵:若一个方阵除了主对角线上的元素外,其余元素都等于零,则称之为对角阵(diag)。
    • 单位矩阵:单位矩阵是个方阵,从左上角到右下角的对角线(主对角线)上的元素均为1,除此以外全都为0。
    • 梯形阵:若非零行(即至少有一个非零元素的行)全在零行的上面,且各非零行中第一个(或最后一个)非零元素前(或后)面零元素的个数随着行数增大而增多(或减少),则称为上(或下)梯形矩阵,统称为梯形阵。
    • 对称矩阵:对于n阶方阵A来说,若矩阵以主对角线(从左上至右下)为对称轴,各元素对应相等,即aij=aji,则该矩阵被称为对称矩阵。对称矩阵与其转置矩阵相等,对角矩阵、单位矩阵都是对称矩阵。
    • 反对称矩阵:对于n阶方阵A来说,若矩阵以主对角线(从左上至右下,主对角线上元素全为0)为对称轴,各元素对应相反,即aij=-aji,则该矩阵被称为反对称矩阵。
  2. 矩阵的基础运算

    • 矩阵乘法
    • 方阵的幂运算
    • 矩阵的转置
    • 方阵的行列式
    • 矩阵的秩:矩阵中最大的非零子式的阶数称为矩阵的秩。
    • 矩阵的迹:方阵主对角线上元素之和称为矩阵的迹。
  3. 伴随矩阵:矩阵的各个元素的代数余子式构成的矩阵的转置称为原矩阵的伴随矩阵。

  4. 矩阵初等变换:包括行变换和列变换,如行互换、行倍加、行倍乘、列互换、列倍加、列倍乘等。

  5. 逆矩阵:设A是n阶方阵,如果存在n阶方阵B,使得AB=BA=E(E是n阶单位矩阵),则称A是可逆的,并称B是A的逆矩阵。

三、向量空间

  1. 向量的概念:向量是具有大小和方向的量,可以用有向线段来表示。

  2. 向量组的线性相关性:如果向量组中的向量可以由其他向量线性表示,则称这些向量线性相关;否则,称它们线性无关。

  3. 向量空间:向量空间是一个定义了加法和数乘运算的向量集合,满足一定的运算规则和性质。

  4. 向量组的特性

    • 向量的内积/点乘/数量积:两个向量的内积等于它们的对应分量乘积的和。
    • 正交性:如果两个向量的内积为0,则称这两个向量正交。
    • 施密特正交规范化:是一种将向量组正交化的方法。
    • 正交矩阵:如果矩阵A满足AT=A(-1),则称A为正交矩阵。

四、方程组求解

线性代数的一个重要应用是求解线性方程组,包括齐次线性方程组和非齐次线性方程组。

  1. 齐次线性方程组:方程组的所有项都是未知数的线性函数,且常数项全为0。
  2. 非齐次线性方程组:方程组的所有项都是未知数的线性函数,但常数项不全为0。

五、矩阵的分解

  1. 矩阵的相似:如果矩阵A和B满足P^(-1)AP=B(P为可逆矩阵),则称A和B相似。

  2. 特征值与特征向量:设A是n阶方阵,如果存在数λ和非零n维列向量x,使得Ax=λx,则称λ是A的特征值,x是A的对应于特征值λ的特征向量。

  3. 矩阵可相似对角化的条件:一个n阶方阵A可相似对角化的充分必要条件是A有n个线性无关的特征向量。

  4. 实对称矩阵的特性:实对称矩阵的特征值都是实数,且实对称矩阵的不同特征值对应的特征向量是正交的。

  5. 矩阵特征值分解EVD:对于可对角化的矩阵A,可以将其分解为A=PΛP^(-1)的形式,其中P是由A的特征向量构成的矩阵,Λ是由A的特征值构成的对角矩阵。

  6. 矩阵奇异值分解SVD:对于任意m×n矩阵A,可以将其分解为A=UΣVT的形式,其中U是m×m正交矩阵,Σ是m×n对角矩阵(对角线上的元素称为奇异值),VT是n×n正交矩阵的转置。

  7. 向量(Vectors)
    向量是一个一维数组,可以表示成列向量或行向量。

使用 NumPy 创建向量
python
import numpy as np

列向量

vector_column = np.array([[1], [2], [3]])
print(“Column Vector:\n”, vector_column)

行向量

vector_row = np.array([1, 2, 3])
print(“Row Vector:\n”, vector_row)
2. 矩阵(Matrices)
矩阵是一个二维数组。

使用 NumPy 创建矩阵
python

2x3 矩阵

matrix = np.array([[1, 2, 3], [4, 5, 6]])
print(“Matrix:\n”, matrix)
3. 矩阵运算
矩阵加法
python
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
C = A + B
print(“Matrix Addition:\n”, C)
矩阵乘法
python

元素乘法(逐元素相乘)

elementwise_multiplication = A * B
print(“Elementwise Multiplication:\n”, elementwise_multiplication)

矩阵乘法(线性代数乘法)

matrix_multiplication = np.dot(A, B)
print(“Matrix Multiplication:\n”, matrix_multiplication)
矩阵转置
python
A_transpose = A.T
print(“Transpose of A:\n”, A_transpose)
4. 矩阵的逆和行列式
逆矩阵
python

必须是方阵且行列式不为0

A_inv = np.linalg.inv(A)
print(“Inverse of A:\n”, A_inv)
行列式
python
det_A = np.linalg.det(A)
print(“Determinant of A:\n”, det_A)
5. 解线性方程组
假设我们有一个线性方程组 Ax = b,我们可以使用 NumPy 的 linalg.solve 方法来求解。

python
A = np.array([[3, 1], [1, 2]])
b = np.array([9, 8])
x = np.linalg.solve(A, b)
print(“Solution to Ax = b:\n”, x)
6. 特征值和特征向量
python

特征值

eigenvalues = np.linalg.eigvals(A)
print(“Eigenvalues:\n”, eigenvalues)

特征向量和特征值

eigenvalues, eigenvectors = np.linalg.eig(A)
print(“Eigenvalues:\n”, eigenvalues)
print(“Eigenvectors:\n”, eigenvectors)
7. 向量范数和矩阵范数
向量范数
python
vector = np.array([1, -2, 2])
norm_vector = np.linalg.norm(vector)
print(“Norm of the vector:\n”, norm_vector)
矩阵范数
python
norm_matrix = np.linalg.norm(matrix, ord=‘fro’) # Frobenius norm
print(“Frobenius norm of the matrix:\n”, norm_matrix)
总结
这些是线性代数的一些基本概念,以及如何使用 NumPy 在 Python 中进行这些计算。NumPy 提供了非常高效和简洁的接口来处理这些线性代数运算。如果你需要更高级的功能,SciPy 也提供了许多线性代数相关的函数。


http://www.ppmy.cn/news/1546377.html

相关文章

05 SQL炼金术:深入探索与实战优化

文章目录 SQL炼金术:深入探索与实战优化一、SQL解析与执行计划1.1 获取执行计划1.2 解读执行计划 二、统计信息与执行上下文2.1 收集统计信息2.2 执行上下文 三、SQL优化工具与实战3.1 SQL Profile3.2 Hint3.3 Plan Baselines3.4 实战优化示例 SQL炼金术&#xff1a…

R和MATLAB及Python混合效应模型

R片段 使用 R 进行混合效应模型的分析是一种强有力的方法,尤其在研究带有嵌套或重复测量的复杂数据结构时。混合效应模型能够有效地检测和分析多层级数据中的固定效应和随机效应,这在研究选择性扰动效应时尤为有用。 R 中常用的软件包 lme4&#xff1…

Android 开发指南:初学者入门

Android 是全球最受欢迎的移动操作系统之一,为开发者提供了丰富的工具和资源来创建各种类型的应用程序。本文将为你提供一个全面的入门指南,帮助你从零开始学习 Android 开发。 目录 1. 了解 Android 平台[1]2. 设置开发环境[2]3. 学习基础知识[3]4. 创…

快速入门Zookeeper

Zookeeper ZooKeeper作为一个强大的开源分布式协调服务,扮演着分布式系统中至关重要的角色。它提供了一个中心化的服务,用于维护配置信息、命名、提供分布式同步以及提供组服务等。通过其高性能和可靠的特性,ZooKeeper能够确保在复杂的分布式…

标题:网络安全:数字时代的守护盾

标题:网络安全:数字时代的守护盾 在21世纪的今天,随着信息技术的飞速发展,网络已成为我们生活、工作和学习中不可或缺的一部分。它像一张无形的网,将世界各地的人们紧密相连,极大地促进了信息的交流与共享…

鸿蒙ArkTS和TS有什么区别?

Ark是强类型,打包编译的时候会保留类型。提高程序运行效率。 TS 支持类型校验,但是并不严格,支持any、unknown 这些不明确的类型。编译后其实jsd.ts,js文件不保留类型。 ArkTS基本禁用了动态类型 比如对象不能随意添加或者删除某些属性&am…

天地图入门|标注|移动飞行|缩放,商用地图替换

“天地图”是国家测绘地理信息局建设的地理信息综合服务网站。集成了来自国家、省、市(县)各级测绘地理信息部门,以及相关政府部门、企事业单位 、社会团体、公众的地理信息公共服务资源,如果做的项目是政府部门、企事业单位尽量选…

Golang | Leetcode Golang题解之第559题N叉树的最大深度

题目: 题解: func maxDepth(root *Node) (ans int) {if root nil {return}queue : []*Node{root}for len(queue) > 0 {q : queuequeue nilfor _, node : range q {queue append(queue, node.Children...)}ans}return }