x是在【-5,5】的21个值,y是在【0,10】中的31个值,要求使用subplot(2,1,1)和subplot(2,1,2)将产生的曲面图和等高线图画画在同一个窗口上,函数:z=cos(x)*cos(y*e(-2.5*sqrt(x^2+y^2)))
时间: 2025-06-25 22:01:57 浏览: 10
### 使用 Python 和 MATLAB 绘制曲面图和等高线图
#### Python 实现方法
以下是基于 `matplotlib` 的实现方式,利用 `subplot` 创建两个子图,在第一个子图中绘制曲面图,第二个子图中绘制对应的等高线图。
```python
import numpy as np
from matplotlib import cm
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 定义数据范围
x = np.linspace(-5, 5, 21)
y = np.linspace(0, 10, 31)
X, Y = np.meshgrid(x, y)
# 计算 z 值
Z = np.cos(X) * np.cos(Y * np.exp(-2.5 * np.sqrt(X**2 + Y**2)))
# 创建图形窗口并设置子图布局
fig = plt.figure(figsize=(8, 6))
# 子图 1: 曲面图
ax1 = fig.add_subplot(2, 1, 1, projection='3d')
surf = ax1.plot_surface(X, Y, Z, cmap=cm.coolwarm, linewidth=0, antialiased=False)
ax1.set_title('Surface Plot of $z=\cos(x)\cdot\cos(y e^{-2.5 \sqrt{x^2+y^2}})$', fontsize=10)
fig.colorbar(surf, shrink=0.5, aspect=5)
# 子图 2: 等高线图
ax2 = fig.add_subplot(2, 1, 2)
contour = ax2.contourf(X, Y, Z, levels=50, cmap=cm.coolwarm)
plt.colorbar(contour)
ax2.set_title('Contour Plot of $z=\cos(x)\cdot\cos(y e^{-2.5 \sqrt{x^2+y^2}})$', fontsize=10)
# 调整子图间距
plt.subplots_adjust(hspace=0.4)
plt.show()
```
此代码实现了在同一个窗口中的上下排列的两幅图。上方为三维曲面图,下方为其二维等高线表示形式[^1]。
---
#### MATLAB 实现方法
下面是使用 MATLAB 编写的相应程序:
```matlab
% 数据定义
[x, y] = meshgrid(linspace(-5, 5, 21), linspace(0, 10, 31));
z = cos(x).*cos(y.*exp(-2.5*sqrt(x.^2 + y.^2)));
% 图形窗口初始化
figure;
% 子图 1: 曲面图
subplot(2, 1, 1);
surf(x, y, z, 'EdgeColor', 'none');
colormap(jet);
colorbar;
title('Surface Plot of z=\cos(x)*\cos(ye^{-2.5*\sqrt{x^2+y^2}})');
xlabel('x-axis');
ylabel('y-axis');
% 子图 2: 等高线图
subplot(2, 1, 2);
contourf(x, y, z, 50);
colormap(jet);
colorbar;
title('Contour Plot of z=\cos(x)*\cos(ye^{-2.5*\sqrt{x^2+y^2}})');
xlabel('x-axis');
ylabel('y-axis');
```
该脚本同样生成了一个包含两个子图的窗口,分别展示了给定函数 \( z = \cos(x) \times \cos(y \times e^{-2.5 \sqrt{x^2 + y^2}}) \) 的三维表面视图及其等高线投影[^3]。
---
### 结论
无论是采用 Python 还是 MATLAB,都可以方便地完成指定的任务需求。两种工具都提供了强大的可视化能力来展示复杂的数学关系,并支持灵活定制图表样式以满足不同场合下的演示需要[^4]。
阅读全文