绘制具有3个符号变量的曲面

时间:2012-09-30 21:48:58

标签: matlab plot

首先,我需要声明我不是一个数学爱好者或狂热的Matlab用户。这是大学作业,我一直试图解决过去3个小时没有运气。我疯狂地搜索,甚至通过Facebook寻求帮助(我得到了回复,但没有解决我的问题)。

这是我第一次使用这个软件,我需要快速绘制一些东西。但无论我阅读多少,我都会遇到语法错误等问题。

基本上,我有这个等式:

4*x^2 + y^2 + z^2 - 8*x + 2*y + 3 = 0

我正在尝试绘制/绘制它。我认为这将非常简单,但我遇到了问题。

谷歌搜索向我展示了函数ezplot()和ezsurf(),但是:

当我做ezplot('4 * x ^ 2 + y ^ 2 + z ^ 2 - 8 * x + 2 * y + 3')时,我收到以下错误:

??? Error using ==> char
Cell elements must be character arrays.
Error in ==> ezplot at 158
      fmsg = char(f);

当我做ezsurf('4 * x ^ 2 + y ^ 2 + z ^ 2 - 8 * x + 2 * y + 3')

The expression 4*x^2 + y^2 + z^2 - 8*x + 2*y + 3 must only have 2 symbolic variables
Error in ==> ezgraph3>surfplot at 526
[F,var] = ezfixfun(F,fargs,flabel);
Error in ==> ezgraph3 at 49
   [dummy,h] = surfplot(f,domain,surfstyle,cax,Npts,fixdomain,flabel,fargs);
Error in ==> ezsurf at 65
    h = ezgraph3('surf',args{:});

同样,这是我第一次使用这个软件。老师没有给我们任何解释,所以我不知道这些错误应该是什么意思,更不用说解决它们了。我不知道我在做什么或者我应该做什么。

我尝试先使用solve()解析'z'然后绘制我得到的两个结果。

s = solve('4*x^2 + y^2 + z^2 - 8*x + 2*y + 3', 'z')
s =
   -(- 4*x^2 + 8*x - y^2 - 2*y - 3)^(1/2)
    (- 4*x^2 + 8*x - y^2 - 2*y - 3)^(1/2)

但那也没有用。当我使用ezplot()时它告诉我使用ezsurf,当我使用ezsurf()时它会告诉我一个我从未声明过的变量“h”:

>> ezsurf('-(- 4*x^2 + 8*x - y^2 - 2*y - 3)^(1/2)', '(- 4*x^2 + 8*x - y^2 - 2*y - 3)^(1/2)')
??? Undefined function or variable "h".
Error in ==> ezgraph3 at 66
    hh = h;
Error in ==> ezsurf at 65
    h = ezgraph3('surf',args{:});

任何帮助策划都会非常感激。我的脑袋会爆炸,因为人们一直在告诉我这应该是非常简单的。

谢谢!

1 个答案:

答案 0 :(得分:1)

以下适用于我:

ezsurf('(8*x - 4*x^2 - y^2 - 2*y -3)^(1/2)');

请注意ezsurf接受2维的功能(映射到第3维)。因此,您必须以f(x,y)= blah的形式表达函数,其中blah是您想要的ezsurf输入。我所做的就是将你的函数重新排列成z = blah形式,然后输入blah到ezsurf

哦,还有其他两件事,1)结果图只能说明故事的一半,因为z ^ 2的平方根可以是z或负z(默认情况下,matlab取正方根)。 2)对于非常受限制的xy域,只能分析上述函数而不需要复数(例如我在这里完成的)。