matlab中如何画z=1-sqrt(1-8/(y*x.^2))函数的三维图,x取值在0.55到2,y取值在4到24

参照网上例子稍微做了一点简化,将x,y取值都限制在0.4到2.4,y直接乘以10.源代码如下t=0.4:0.05:2.4;[x,y]=meshgrid(t);z=1-sq... 参照网上例子稍微做了一点简化,将x,y取值都限制在0.4到2.4,y直接乘以10.

源代码如下

t=0.4:0.05:2.4;
[x,y]=meshgrid(t);
z=1-sqrt(1-8/(10*x.^2.*y));
mesh(x,y,z);
figure;
surf(x,y,z);

提示Error using ==>mrdivide
Matrix dimensions must agree.

开始以为是扩大了x取值导致开根号产生了复数的问题(开根号里还有常数系数我在这里略去了),但z=8/(10*x.^2.*y)也是同样的报错。我将变量x,y从分母拿出来画z=10*x.^2.*y就一切正常,为何x,y一在分母就会报错。这个函数要怎么写才正确,求高手指点
已解决,将x和y都按相应区间取值了,函数应写成z=1-sqrt(1-8./(10*x.^2.*y))。现在问题是x与y也是相关的,导致根据x取值不同,y取值区间也会变,不然会提示存在复数结果。这个就太复杂了,不考虑了。
展开
 我来答
lhmhz
高粉答主

2016-07-25 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7264 获赞数:17014

向TA提问 私信TA
展开全部

经调整运行,当x≥0.9,y≥10时不存在复数值。

x=linspace(0.9,2.5,10);   %x=[0.9,2.5]   等分10

y=linspace(10,25,10);  %y=[10,25]   等分10

[xx,yy]=meshgrid(x,y);

zz=1-sqrt(1-8./(yy.*xx.^2))

mesh(xx,yy,zz);

figure;

surf(xx,yy,zz);

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式