绘制二维直角坐标系的线性变换的动画python代码
时间: 2023-10-11 19:09:58 浏览: 111
以下是一个使用Matplotlib库绘制二维直角坐标系的线性变换动画的Python代码示例:
```python
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
# 定义二维向量
v = np.array([1, 0])
# 定义线性变换矩阵
A = np.array([[1, 1], [2, 1]])
# 定义图像显示范围
x_min = -3
x_max = 3
y_min = -3
y_max = 3
# 创建坐标系
fig, ax = plt.subplots()
# 绘制坐标系
ax.set_xlim(x_min, x_max)
ax.set_ylim(y_min, y_max)
ax.set_aspect('equal', adjustable='box')
ax.axhline(y=0, color='k')
ax.axvline(x=0, color='k')
# 绘制原始向量
original, = ax.plot([0, v[0]], [0, v[1]], 'b', label='Original')
# 定义更新函数
def update(num):
# 计算变换后的向量
transformed = A @ v
# 绘制变换后的向量
transformed_line.set_data([0, transformed[0]], [0, transformed[1]])
# 更新原始向量
original.set_label('Original: ' + str(v))
original.set_color('b')
# 更新变换后的向量
transformed_line.set_label('Transformed: ' + str(transformed))
transformed_line.set_color('r')
# 更新标题
ax.set_title('Linear Transformation: A = ' + str(A))
# 更新图例
ax.legend()
# 更新向量
v[:] = transformed[:]
# 创建变换后的向量线条
transformed_line, = ax.plot([], [], 'r', label='Transformed')
# 创建动画
ani = FuncAnimation(fig, update, frames=10, interval=1000, repeat=True)
# 显示动画
plt.show()
```
代码说明:
1. 定义二维向量 `v` 和线性变换矩阵 `A`
2. 创建坐标系和原始向量 `original`
3. 定义更新函数 `update`,用于更新变换后的向量
4. 在更新函数中计算变换后的向量 `transformed`,并更新原始向量和变换后的向量
5. 创建变换后的向量线条 `transformed_line`
6. 创建动画 `ani`,并通过调用 `plt.show()` 显示动画
此代码示例可以根据需要进行修改和扩展。
阅读全文