线性变换与矩阵乘法的奥秘

线性变换与矩阵乘法的奥秘

背景简介

在探索线性代数的世界中,我们经常遇到基向量、线性变换和矩阵乘法等核心概念。这些概念不仅构成了现代数学的基础,还广泛应用于计算机图形学、机器学习和数据分析等领域。在本篇文章中,我们将深入探讨这些主题,并通过实际的Python代码和图形展示,揭示它们之间的联系和应用。

线性变换的基础

线性变换是一种特殊的函数,它保持向量加法和标量乘法的性质。通过矩阵与向量的乘积,我们可以实现对向量的线性变换。例如,通过使用基向量 i_hat j_hat ,我们可以构建一个基础矩阵,并通过它来变换一个二维向量 v

from numpy import array

# 声明基向量
i_hat = array([2, 0])
j_hat = array([0, 3])

# 构建基础矩阵
basis = array([i_hat, j_hat]).transpose()

# 声明向量v
v = array([2, 1])

# 通过基础矩阵变换向量v
new_v = basis.dot(v)

print(new_v)  # 输出结果为 [4, 3]

在上述代码中,我们创建了一个新的向量 new_v ,它是原始向量 v 在基础矩阵变换下的结果。

复杂变换的探索

在二维空间中,我们还可以实现更复杂的变换,如旋转、剪切和翻转。例如,通过调整基向量的值,我们可以实现对空间的旋转和剪切。

# 声明更复杂的基向量
i_hat = array([2, 3])
j_hat = array([2, -1])

# 构建基础矩阵
basis = array([i_hat, j_hat]).transpose()

# 通过基础矩阵变换向量v
new_v = basis.dot(v)

print(new_v)  # 输出结果为 [6, 5]

在这个例子中,向量 v 经过基础矩阵的变换后,不仅被拉伸,还发生了旋转和剪切。

三维及以上维度的基向量

当我们扩展到三维或更高维度时,基向量的概念同样适用。例如,在三维空间中,我们可以使用 i_hat j_hat k_hat 来描述三维空间的基向量。

矩阵乘法的原理

矩阵乘法是线性代数中的核心概念之一。它允许我们将多个变换组合在一起,形成一个单一的变换。例如,通过矩阵乘法,我们可以将旋转和剪切这两种变换合并为一个变换。

# 使用NumPy合并变换矩阵
from numpy import array

# 变换1
i_hat1 = array([0, 1])
j_hat1 = array([-1, 0])
transform1 = array([i_hat1, j_hat1]).transpose()

# 变换2
i_hat2 = array([1, 0])
j_hat2 = array([1, 1])
transform2 = array([i_hat2, j_hat2]).transpose()

# 合并变换
combined = transform2 @ transform1

# 测试变换
v = array([1, 2])
print(combined.dot(v))  # 输出结果为 [-1, 1]

在这个例子中,我们合并了两个变换矩阵,并使用合并后的矩阵对向量 v 进行了变换。

DOT()与MATMUL()和@的使用比较

在NumPy中, dot() matmul() 方法都可以用来执行矩阵乘法。然而,对于高维矩阵和元素广播, matmul() 通常更为高效。此外,矩阵乘法是不可交换的,意味着变换的顺序会影响最终结果。

总结与启发

通过探索线性变换和矩阵乘法,我们可以更深入地理解向量在不同变换下的行为。这种理解不仅有助于我们在数学和计算机科学中解决问题,还能够启发我们从不同角度思考问题的本质。掌握这些概念,将为我们打开一扇通往更高维度世界的大门。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值