如何在MATLAB中绘制含逐点最小化运算的二元函数三维图
MATLAB 含min运算二元函数的三维曲面绘制方案
错误原因排查
你此前绘制失败基本和min运算无关,主要是两类常见疏漏:
- 未使用逐点运算符(
./、.^),误做了矩阵级别的运算导致维度不匹配报错 - y取值包含0时出现分母为0的奇点,触发非法运算
完整可运行代码
% 定义自变量范围,y下限取1e-6避开0奇点,采样点数可按需调整 x = linspace(0, 10, 100); y = linspace(1e-6, 10, 100); % 生成二维网格矩阵 [X, Y] = meshgrid(x, y); % 逐点计算函数值 min_xy = min(X, Y); Z = log(1 + (min_xy.^2) ./ (4 .* Y)); % 绘制三维曲面 surf(X, Y, Z); % 基础可视化配置 xlabel('x'); ylabel('y'); zlabel('f(x,y)'); title('f(x,y) = log(1 + (min(x,y))^2/(4y)) 三维曲面'); colorbar; % 可选:添加以下代码获得平滑无网格的曲面效果 % shading interp;
关键逻辑说明
- MATLAB内置的
min(X,Y)本身支持同尺寸矩阵的逐点取最小值运算,不需要额外适配 - 所有针对矩阵元素的算术运算必须加
.前缀,否则会执行矩阵运算法则,出现维度不匹配的报错 - y下限设置的1e-6偏移量对0~10区间的数值精度影响可忽略,仅用于规避分母为0的非法运算
内容的提问来源于stack exchange,提问作者Nick Bodden
相关产品推荐
相关产品推荐

