如何在MATLAB中绘制二维函数z = x² - y²并验证代码正确性
问题分析
- 你当前的代码存在两个核心错误,无法得到目标函数的图像:
- 没有生成二维坐标网格:你定义的
x = -3:3、y = -3:3都是长度为7的一维向量,直接做逐元素减法得到的z同样是一维数组,没有覆盖x和y所有组合的取值 - 绘图函数使用错误:
plot()是二维折线绘制函数,无法展示双变量的三维曲面结果
你当前运行得到的图像如下,只是z随向量索引变化的二维折线,和目标结果完全不符:
- 没有生成二维坐标网格:你定义的
修正方案
你需要先通过meshgrid生成x、y的二维网格,再使用三维绘图函数绘制曲面,参考代码如下:
% 定义x、y的取值范围,步长设为0.1可以让曲面更平滑,可按需调整 x = -3:0.1:3; y = -3:0.1:3; % 生成二维网格 [X,Y] = meshgrid(x,y); % 计算z值,这里的逐元素运算.^是正确的 Z = X.^2 - Y.^2; % 绘制三维网格曲面,也可以替换为surf(Z)绘制填充曲面 mesh(X,Y,Z) % 补充坐标轴标注 xlabel('x') ylabel('y') zlabel('z') title('z = x^2 - y^2 曲面图(双曲抛物面/马鞍面)')
运行上述代码就能得到你需要的马鞍面图像,如果需要绘制等高线等其他展示形式,可以替换mesh为contour、surfc等函数即可。
内容的提问来源于stack exchange,提问作者Asher
相关产品推荐
相关产品推荐

