matlab的三维画图 想画一个球 方程是x^2+y^2+z^2=100; 那么怎么画呢???

程序如下:>>x=[-10:0.5:10];>>y=sqrt(100-x.^2);>>[x,y]=meshgrid(x,y);>>z=sqrt(100-(x.^2+y.^... 程序如下:
>> x=[-10:0.5:10];
>>y=sqrt(100-x.^2);
>> [x,y]=meshgrid(x,y);
>> z=sqrt(100-(x.^2+y.^2));
>> surf(x,y,z)
??? Error using ==> surf at 78
X, Y, Z, and C cannot be complex.
这样就出错了!!!
是什么问题???
如果Y也y=[-10:0.5:10];会导致取值x=10,y=10.而球的方程是不可能的
所以不知道了!!!
求教高手!!!
展开
ustbwhh7
2012-12-07 · 超过12用户采纳过TA的回答
知道答主
回答量:29
采纳率:0%
帮助的人:11.9万
展开全部
哥们 你的错误出在第四行,
z=sqrt(100-(x.^2+y.^2));

当x=5时,100-(5^2+8.6603^2)为负数,但matlab中sqrt函数自变量为负值不显示错误,而是输出一个复数,但绘图是不认复数的,所以出错。
你的问题是x在正负5的某一段区间内第四行有复数产生,绘图出现错误。
X, Y, Z, and C cannot be complex.

意识是X,Y,Z不能为复数。
正确的代码已经贴出来了,我就不重复了。
cxd1301
推荐于2017-11-24 · TA获得超过3021个赞
知道小有建树答主
回答量:593
采纳率:50%
帮助的人:315万
展开全部
画球体的方法很多,比如用sphere函数,程序如下:
clear;
clc;
[x,y,z]=sphere(100);
x=10*x;
y=10*y;
z=10*z;
surf(x,y,z)
xlabel('x')
ylabel('y')
zlabel('z')
axis equal

也许你会想问如果球心不在原点怎么办,方法如下:
x0=0;y0=0;z0=0; % 设定球心
r=10; % 设定半径
%下面开始画
[x,y,z]=sphere(50); % 参数可缺省
mesh(r*x+x0,r*y+y0,r*z+z0)
axis equal
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
任信心
2011-08-06
知道答主
回答量:1
采纳率:0%
帮助的人:1725
展开全部
[x,y,z]=sphere(50);
surf(10*x,10*y,10*z)
shading interp
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式