Python 函数绘图

最近看数学,发现有时候画个图还真管用,对理解和展示效果都不错。尤其是三维空间和一些复杂函数,相当直观,也有助于解题。

本来想用 mathlab,下载安装都太费事,杀鸡不用牛刀,Python 基本就能实现,三维图还可以拖动图像来回旋转。

下面分别在二维三维举例说明。

1. 二维绘图

  1.    描述:

绘制极坐标系中 r=1 和 r=2cosθ的相交部分(没画的时候,确实没看出 r=2cosθ也是正圆)

  1.   程序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import numpy as np
import matplotlib.pyplot as plt

plt.figure(1)
ax = plt.subplot(111)
x = np.linspace(0, np.pi * 2, 200)  # 在0到2pi之间,均匀产生200点的数组

# r = 2cosθ
r = 2 * np.cos(x)  # 半径
ax.plot(r * np.cos(x), r * np.sin(x))

# r = 1
r = 1
ax.plot(r * np.cos(x), r * np.sin(x))
plt.show()
  1.    运行结果
图片.png

2. 三维绘图

  1.    描述:

绘制向量函数 r(t)=(sint,cost,t) 的图,可将函数视为“大黄蜂”的飞行曲线,即 t 时刻,它在空间中的位置是(x,y,z)。即向量 r 的坐标 x,y,z 都是 t 的函数,分别是 x(t)=sint, y(t)=cost, z(t)=t。并且绘制它的导数(飞行速度)r’(t)=(cost,-sint,1)

  1.   程序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure(1)
ax = fig.add_subplot(1,1,1,projection='3d') # 指定三维空间做图

t = np.linspace(0, 4, 200)  # 在0到4之间,均匀产生200点的数组
theta = t * 2 * np.pi # 角度

# r(t)=(sint,cost,t)
z = t
x = np.sin(theta)
y = np.cos(theta)
ax.plot(x, y, z, label='r(t)')

# r’(t)
z = 1
x = np.cos(theta)
y = -np.sin(theta)
ax.plot(x, y, z, label='r\'(t)')

ax.legend()
plt.show()
  1.    运行结果
图片.png

3. 三维曲面

  1. 描述

绘制曲面 z = x^2 + y^2

  1. 程序
1
2
3
4
5
6
7
8
9
10
11
12
13
from matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = Axes3D(fig)
X = np.arange(-2, 2, 0.1)
Y = np.arange(-2, 2, 0.1)
X, Y = np.meshgrid(X, Y)
Z = X**2 + Y**2

ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')
plt.show()
  1. 运行结果
图片.png