首先如果z=f(x,y)是对的,那你的Z=1./sqrt(1-X.^2)+Y.^2+1./sqrt(1+X.^2)+Y.^2;
就少加了两个括号,应该是
Z=1./sqrt((1-X.^2)+Y.^2)+1./(sqrt(1+X.^2)+Y.^2);
但这不是关键,关键是根号下的内容有可能是负的,随便举个例子,x=-2, y=1, 这样z 的结果就是一个复数,mesh处理不了复数。
所以要么你就把x 和y 的范围缩小一下,缩小到[-1,1]区间里,如果这个区间不能缩小,那你就只能手动处理Z,当Z的计算结果是复数时,将它赋值为某个实数。