问题
利用surf函数画三维图在xoy平面的投影时,画出的图像较黑,如下图所示。
原因
原因在于坐标轴取点太密,surf的边界是黑的,所以看起来全黑了。
解决
用mesh画,画完加一句shading interp。后续图像如下所示。
shading interp作用
对曲面或图像对象的颜色着色进行色彩的插值处理,使色彩平滑过渡。
执行代码
已知
x
∈
[
0
,
1
]
x\in[0,1]
x
∈
[
0
,
1
]
,
y
∈
[
−
1
,
1
]
y\in[-1,1]
y
∈
[
−
1
,
1
]
,
(
1
−
x
)
2
+
y
2
)
∈
[
0
,
1
]
\sqrt{(1-x)^2+y^2) }\in[0,1]
(
1
−
x
)
2
+
y
2
)
∈
[
0
,
1
]
函数
f
(
x
,
y
)
=
2
x
−
2
x
2
+
y
2
2
x
2
+
2
y
2
+
1
−
2
x
f(x,y)=\frac{2x-2x^2+y^2}{2x^2+2y^2+1-2x}
f
(
x
,
y
)
=
2
x
2
+
2
y
2
+
1
−
2
x
2
x
−
2
x
2
+
y
2
画出该函数在xoy平面上的图像表示。
clear;
clc;
f=@(x,y)(2.*x-2.*x.*x+y.*y)./(2.*x.*x+2.*y.*y+1-2.*x);
x=0:0.01:1;
y=-1:0.01:1;
[X,Y]=meshgrid(x,y);%meshgrid()生成二维网格矩阵,
%将输入的两个向量进行相应的行扩充和列扩充以得到两个增广矩阵,对该矩阵可应用二维函数
Z=f(X,Y);
Z(sqrt((1-X).^2+Y.^2)>1)=NaN; %限定定义域
%surf(X,Y,Z);
mesh(X,Y,Z); %只有网格
shading interp
colorbar; %添加色标,生成与高度对应的图例(显示出最大值和最小值)
view(0,90); %投影在xoy轴
参考