z=sqrt(100-(x^2+y^2));
当x=5时,100-(5^2+86603^2)为负数,但matlab中sqrt函数自变量为负值不显示错误,而是输出一个复数,但绘图是不认复数的,所以出错。
你的问题是x在正负5的某一段区间内第四行有复数产生,绘图出现错误。
X, Y, Z, and C cannot be complex
意识是X,Y,Z不能为复数。
正确的代码已经贴出来了,我就不重复了。
t=linspace(0,pi,25);
p=linspace(0,2pi,25);
[theta,phi]=meshgrid(t,p);
x=sin(theta)sin(phi);
y=sin(theta)cos(phi);
z=cos(theta);
surf(x,y,z);
axis equal;
alpha(03) % 控制图形的透明度,取值0~1
[x,y,z]=meshgrid(-2:02:2,-2:02:2,-2:02:2);%建立需要的填充实体,其实是一个正方体[t,p,r]=cart2sph(x,y,z);%将笛卡尔坐标系换算成球体坐标系
v=NaNzeros(size(x));%乘上NaN表明实体外我们不考虑
v(r<=15)=1;%半径小于15的球体
v(r<=1)=2;%半径小于1的球体 O(∩_∩)O哈哈~ 其实是同心圆 不过质量(数值)不一样
xslice=[-2:05:2];%X轴切片向量
yslice=[-2:05:2];%Y
zslice=[-2:05:2];%Z
h=slice(x,y,z,v,[],[],zslice);%将球体按需要的方向切
set(h,'LineStyle','none');%填充
view(-60,30);%观看视角
axis equal;%坐标轴等长显示
alpha(05);%设置透明度
直接按照球的体积和表面积的公式代入就行了。
MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室),软件主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中。
为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)