← 返回首页
线性代数基础(一)
发表时间:2024-05-06 06:58:52
线性代数基础(一)

标量、向量和行列式

1.线性代数的本质

线性代数的本质是研究向量空间(也称为线性空间)和线性映射(也称为线性变换)的数学分支。它涉及以下主要内容。 - 向量空间:研究向量的集合,这些向量可以进行加法和数乘运算,并满足一定的公理。 - 线性映射:研究从一个向量空间到另一个向量空间的映射,这些映射保持向量的加法和数乘运算。 - 矩阵:矩阵是线性映射的一种表示方式,通过矩阵可以方便地进行线性方程组的求解和线性变换的计算。 - 行列式:行列式是与方阵相关联的一个标量值,它提供了关于矩阵的逆和线性方程组解的信息。 - 特征值和特征向量:研究矩阵的特征值和特征向量,它们在理解线性变换的性质和对矩阵进行对角化时非常重要。 - 内积空间:研究向量空间中定义了内积的特殊情况,内积空间允许我们定义向量的长度和角度,从而引入了几何概念。 - 正交性和正交投影:研究向量的正交性以及如何将向量投影到子空间上,这些概念在解决最小二乘问题和理解线性变换的几何意义时非常有用。 - 线性方程组:研究线性方程组的解,包括解的存在性、唯一性和解的结构。

线性代数是现代数学的基石之一,它在数学、物理、工程、计算机科学、经济学等许多领域都有广泛的应用。

2.标量

标量(Scalar),是一个单独的数值,没有方向和其他属性。

例如:小明,25岁,身高175,体重70,这里的具体数值就是标量。

标量可以是整数、浮点数或者其他基本数据类型的值。

实例:

# 定义一个标量
scalar = 10

# 打印标量的值
print("Scalar value:", scalar)

# 标量的加法
result_addition = scalar + 5
print("Scalar addition result:", result_addition)

# 标量的乘法
result_multiplication = scalar * 2
print("Scalar multiplication result:", result_multiplication)

运行结果:

Scalar value: 10
Scalar addition result: 15
Scalar multiplication result: 20

3.向量

向量(Vector),简单理解,就是一组标量。

例如:

向量是有序排列的标量序列,它具有大小和方向。在数学中,向量通常表示为一列有限个数的数值,例如:

其中,v1, v2, ..., vn 是向量的各个分量,$n$是向量的长度或者维度。例如(1,2),就是一个一维向量,其长度为2,有两个元素。

代码中,向量可以表示为一维数组或者列表,也可不用numpy,用list直接定义。

numpy是python中用来进行科学计算的工具库,他的默认属性是array,即数组。

约定导入包时统一简化,as np

实例:

import numpy as np

# 定义一个向量
vector = np.array([1, 2, 3, 4, 5])

# 打印向量的值
print("Vector:", vector)

# 计算向量的长度
vector_length = len(vector)
print("Vector length:", vector_length)

# 计算向量的维度
vector_dimension = vector.ndim
print("Vector dimension:", vector_dimension)

# 查看向量的形状
vector_shape = vector.shape
print("Vector shape:", vector_shape)

运行结果:

Vector: [1 2 3 4 5]
Vector length: 5
Vector dimension: 1
Vector shape: (5,)

首先定义了一个包含5个元素的向量 ([1, 2, 3, 4, 5])。然后,分别计算向量的长度、维度和形状。

4.向量的几何和物理意义

向量在几何学中代表了空间中的一个方向和大小。从几何意义上来说,一个向量可以表示为一个由起点和终点确定的箭头,箭头的长度代表了向量的大小(也称为模或长度),箭头的方向则表示了向量所指向的方向。

在物理学中,向量表示了具有大小和方向的物理量。这些物理量可以是位移、速度、加速度、力等。向量的物理意义在于描述物理现象中的各种运动、力的作用以及其他物理性质。

举例来说:

  1. 位移向量:表示物体从一个位置移动到另一个位置的距离和方向。位移向量的大小是物体从一个位置到另一个位置的直线距离,方向则是运动的方向。
  2. 速度向量:表示物体在某一时刻的运动速度,包括速度的大小(即速度的大小)和方向。速度向量的方向与物体的运动方向一致,大小表示单位时间内物体在其运动方向上的位移量。
  3. 加速度向量:表示物体在某一时刻的加速度,包括加速度的大小和方向。加速度向量的方向可以与速度方向一致(加速)或相反(减速),大小表示单位时间内速度的变化量。
  4. 力向量:表示物体受到的外力大小和方向。力的大小决定了物体的运动状态(加速度),而力的方向决定了物体受力的作用方向。

总之,向量在物理学中是描述物体运动、力的作用以及其他物理性质的重要工具,通过向量的表示和运算可以更清晰地描述和分析物理现象。

5.向量运算

1).向量加法 向量加法是将两个向量的对应分量相加,结果是一个新的向量,其每个分量分别是两个原向量对应分量的和。

2).向量减法 向量减法是将两个向量的对应分量相减,结果是一个新的向量,其每个分量分别是两个原向量对应分量的差。

3).数乘 数乘是将一个标量与向量的每个分量相乘,结果是一个新的向量,其每个分量分别是原向量对应分量乘以标量。

4).点积(Dot Product) 点积是将两个向量的对应分量相乘后再相加,结果是一个标量。

实例:

import numpy as np

# 定义两个向量
v1 = np.array([1, 2, 3])
v2 = np.array([4, 5, 6])

#加法运算
v_add = v1 + v2
print("Vector Addition (v1 + v2):", v_add)

#减法运算
v_sub = v1 - v2
print("Vector Subtraction (v1 - v2):", v_sub)

#数乘运算
scalar = 2
v_scalar_mul = scalar * v1
print("Scalar Multiplication (2 * v1):", v_scalar_mul)

#点积运算
dot_product = np.dot(v1, v2)
print("Dot Product (v1 . v2):", dot_product)
# 或者使用 @ 符号也可以
dot_product = v1 @ v2
print("Dot Product (v1 . v2):", dot_product)

运行结果:

Vector Addition (v1 + v2): [5 7 9]
Vector Subtraction (v1 - v2): [-3 -3 -3]
Scalar Multiplication (2 * v1): [2 4 6]
Dot Product (v1 . v2): 32
Dot Product (v1 . v2): 32

6.行列式

行列式是一种用来描述线性方程组解的有用工具,它的通俗解释可以是:想象你有一个方程组,其中每个方程都代表一个线性关系。

例如:

这个方程组可以表示为矩阵形式:

现在,行列式就是一个与这个矩阵相关的数值。它的值可以告诉你关于这个线性方程组的重要信息。当行列式的值不为零时,这表示方程组有唯一解;当行列式的值为零时,这表示方程组可能没有解,或者有无穷多个解。

需要注意的是:行列式一定是一个方阵。所谓方阵就是指行数和列数相等的矩阵。而且行列式的本质是一个数值。

7.计算行列式的三种方法

1).对角线法

对角线法也是三阶行列式计算使用最广泛的方法,以三阶行列式为例:

  1. 将第一、二列平移到行列式右侧
  2. 如图做出六条斜对角线
  3. 对角线上的元素相乘,红色相加的和 减去 蓝色相加的和

注意:对角线法适用于二、三阶行列式,对于更高阶的行列式暂时未找到规律

2).代数余子式法

以三阶行列式为例:

对于任一行(列)都可进行展开。

3).等价转化法

转化法的核心思想是将行列式转化成上三角行列式。

举例如下:

小结: - 对角线法,是使用最简单、最广泛的方法。 - 代数余子式法和等价转化法,在特定情况下能极大程度上简便运算,但需要读者对行列式进行灵活地观察。

实例:

import numpy as np
import sympy as sp
from sympy import *

# 定义一个三阶方阵
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 使用nmpy计算行列式
determinant1 = np.linalg.det(matrix)
# 使用sympy计算行列式
determinant2 = sp.Matrix(matrix).det()

print("numpy计算行列式的值为:", determinant1)
print("sympy计算行列式的值为:", determinant2)

运行结果:

numpy计算行列式的值为: 0.0
sympy计算行列式的值为: 0