Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何获得f(x,y,z)=c的曲面图_Matlab_Plot_Matlab Figure_Matlab Guide_Surface - Fatal编程技术网

Matlab 如何获得f(x,y,z)=c的曲面图

Matlab 如何获得f(x,y,z)=c的曲面图,matlab,plot,matlab-figure,matlab-guide,surface,Matlab,Plot,Matlab Figure,Matlab Guide,Surface,我的方程式的形式如下: exp(- (625*(x - 31/20)^2)/72 - (625*(x - 981/250)^2)/72 - (625*(y - 461/100)^2)/72 - (625*(y - 4797/1000)^2)/72 - (625*(z - 13207/1000)^2)/72 - (625*(z - 15177/1000)^2)/72) = 0.0005 它在x、y、z中包含了更多的术语,但它们的形式相同 (625*((X-var)^2)/72)其中X是

我的方程式的形式如下:

exp(- (625*(x - 31/20)^2)/72   -  (625*(x - 981/250)^2)/72 - (625*(y - 461/100)^2)/72 -  (625*(y - 4797/1000)^2)/72 - (625*(z - 13207/1000)^2)/72 - (625*(z - 15177/1000)^2)/72) = 0.0005 
它在
x
y
z
中包含了更多的术语,但它们的形式相同
(625*((X-var)^2)/72)
其中
X
{X,y,z}
且在指数内。 我可以使用此工具获取三维曲面图吗?
编辑::我可以用Matlab生成一个带负号的图,以避免太大的值。

您可以在Matlab中创建隐式函数的曲面图,如下所示:

f = @(x,y,z) exp((625*(x - 31/20)^2)/72 + (625*(x - 981/250)^2)/72 + (625*(y - 461/100)^2)/72 + (625*(y - 4797/1000)^2)/72 + (625*(z - 13207/1000)^2)/72 + (625*(z - 15177/1000)^2)/72) - 0.0005;

fimplicit3(f)
f = @(x,y,z) exp(5/288 .* (2 .* x .* (500 .* x - 2737) + y .* (1000 .* y - 9407) + 8 .* z .* (125 .* z - 3548))) - 0.0005;

interval = [-0.6 0.6 -0.6 0.6 -0.6 0.6];

%interval2 = [-6 6 -6 6 -6 6];

fimplicit3(f,interval)

colorbar
然而,在你的案例中,如果你分析,你会发现它的另一种形式是

Matlab将无法绘制此图,因为它将所有计算值解释为
Inf
。首先需要对函数进行一些缩放

您可以使用
realmax
检查IEEE双精度中的最大有限浮点数。这将为您提供
1.7977e+308

编辑

Matlab能够在不使用
8.12e1759
pre因子的情况下绘制上述函数的某些部分。这将如下所示:

f = @(x,y,z) exp((625*(x - 31/20)^2)/72 + (625*(x - 981/250)^2)/72 + (625*(y - 461/100)^2)/72 + (625*(y - 4797/1000)^2)/72 + (625*(z - 13207/1000)^2)/72 + (625*(z - 15177/1000)^2)/72) - 0.0005;

fimplicit3(f)
f = @(x,y,z) exp(5/288 .* (2 .* x .* (500 .* x - 2737) + y .* (1000 .* y - 9407) + 8 .* z .* (125 .* z - 3548))) - 0.0005;

interval = [-0.6 0.6 -0.6 0.6 -0.6 0.6];

%interval2 = [-6 6 -6 6 -6 6];

fimplicit3(f,interval)

colorbar

但是,正如您所看到的,Matlab无法在每个位置显示曲面,因为您的函数仍然意外地运行

**编辑2**

建议在原点附近查看函数

如果我们这样做:

f = @(x,y,z) exp((625*(x - 31/20)^2)/72 + (625*(x - 981/250)^2)/72 + (625*(y - 461/100)^2)/72 + (625*(y - 4797/1000)^2)/72 + (625*(z - 13207/1000)^2)/72 + (625*(z - 15177/1000)^2)/72) - 0.0005;

fimplicit3(f)
f = @(x,y,z) exp(5/288 .* (2 .* x .* (500 .* x - 2737) + y .* (1000 .* y - 9407) + 8 .* z .* (125 .* z - 3548))) - 0.0005;

interval = [-0.6 0.6 -0.6 0.6 -0.6 0.6];

%interval2 = [-6 6 -6 6 -6 6];

fimplicit3(f,interval)

colorbar
然后从顶部看结果,我们得到一个很好的等高线图,如下所示:

f = @(x,y,z) exp((625*(x - 31/20)^2)/72 + (625*(x - 981/250)^2)/72 + (625*(y - 461/100)^2)/72 + (625*(y - 4797/1000)^2)/72 + (625*(z - 13207/1000)^2)/72 + (625*(z - 15177/1000)^2)/72) - 0.0005;

fimplicit3(f)
f = @(x,y,z) exp(5/288 .* (2 .* x .* (500 .* x - 2737) + y .* (1000 .* y - 9407) + 8 .* z .* (125 .* z - 3548))) - 0.0005;

interval = [-0.6 0.6 -0.6 0.6 -0.6 0.6];

%interval2 = [-6 6 -6 6 -6 6];

fimplicit3(f,interval)

colorbar

请注意,出于性能原因,我还对函数进行了矢量化

我无法解释为什么对于较大的间隔,即使是在较小间隔内看起来很好的零件也无法通过Matlab显示。例如,如果我使用
interval2
,结果如下所示:

f = @(x,y,z) exp((625*(x - 31/20)^2)/72 + (625*(x - 981/250)^2)/72 + (625*(y - 461/100)^2)/72 + (625*(y - 4797/1000)^2)/72 + (625*(z - 13207/1000)^2)/72 + (625*(z - 15177/1000)^2)/72) - 0.0005;

fimplicit3(f)
f = @(x,y,z) exp(5/288 .* (2 .* x .* (500 .* x - 2737) + y .* (1000 .* y - 9407) + 8 .* z .* (125 .* z - 3548))) - 0.0005;

interval = [-0.6 0.6 -0.6 0.6 -0.6 0.6];

%interval2 = [-6 6 -6 6 -6 6];

fimplicit3(f,interval)

colorbar

您可以在Matlab中创建隐式函数的曲面图,如下所示:

f = @(x,y,z) exp((625*(x - 31/20)^2)/72 + (625*(x - 981/250)^2)/72 + (625*(y - 461/100)^2)/72 + (625*(y - 4797/1000)^2)/72 + (625*(z - 13207/1000)^2)/72 + (625*(z - 15177/1000)^2)/72) - 0.0005;

fimplicit3(f)
f = @(x,y,z) exp(5/288 .* (2 .* x .* (500 .* x - 2737) + y .* (1000 .* y - 9407) + 8 .* z .* (125 .* z - 3548))) - 0.0005;

interval = [-0.6 0.6 -0.6 0.6 -0.6 0.6];

%interval2 = [-6 6 -6 6 -6 6];

fimplicit3(f,interval)

colorbar
然而,在你的案例中,如果你分析,你会发现它的另一种形式是

Matlab将无法绘制此图,因为它将所有计算值解释为
Inf
。首先需要对函数进行一些缩放

您可以使用
realmax
检查IEEE双精度中的最大有限浮点数。这将为您提供
1.7977e+308

编辑

Matlab能够在不使用
8.12e1759
pre因子的情况下绘制上述函数的某些部分。这将如下所示:

f = @(x,y,z) exp((625*(x - 31/20)^2)/72 + (625*(x - 981/250)^2)/72 + (625*(y - 461/100)^2)/72 + (625*(y - 4797/1000)^2)/72 + (625*(z - 13207/1000)^2)/72 + (625*(z - 15177/1000)^2)/72) - 0.0005;

fimplicit3(f)
f = @(x,y,z) exp(5/288 .* (2 .* x .* (500 .* x - 2737) + y .* (1000 .* y - 9407) + 8 .* z .* (125 .* z - 3548))) - 0.0005;

interval = [-0.6 0.6 -0.6 0.6 -0.6 0.6];

%interval2 = [-6 6 -6 6 -6 6];

fimplicit3(f,interval)

colorbar

但是,正如您所看到的,Matlab无法在每个位置显示曲面,因为您的函数仍然意外地运行

**编辑2**

建议在原点附近查看函数

如果我们这样做:

f = @(x,y,z) exp((625*(x - 31/20)^2)/72 + (625*(x - 981/250)^2)/72 + (625*(y - 461/100)^2)/72 + (625*(y - 4797/1000)^2)/72 + (625*(z - 13207/1000)^2)/72 + (625*(z - 15177/1000)^2)/72) - 0.0005;

fimplicit3(f)
f = @(x,y,z) exp(5/288 .* (2 .* x .* (500 .* x - 2737) + y .* (1000 .* y - 9407) + 8 .* z .* (125 .* z - 3548))) - 0.0005;

interval = [-0.6 0.6 -0.6 0.6 -0.6 0.6];

%interval2 = [-6 6 -6 6 -6 6];

fimplicit3(f,interval)

colorbar
然后从顶部看结果,我们得到一个很好的等高线图,如下所示:

f = @(x,y,z) exp((625*(x - 31/20)^2)/72 + (625*(x - 981/250)^2)/72 + (625*(y - 461/100)^2)/72 + (625*(y - 4797/1000)^2)/72 + (625*(z - 13207/1000)^2)/72 + (625*(z - 15177/1000)^2)/72) - 0.0005;

fimplicit3(f)
f = @(x,y,z) exp(5/288 .* (2 .* x .* (500 .* x - 2737) + y .* (1000 .* y - 9407) + 8 .* z .* (125 .* z - 3548))) - 0.0005;

interval = [-0.6 0.6 -0.6 0.6 -0.6 0.6];

%interval2 = [-6 6 -6 6 -6 6];

fimplicit3(f,interval)

colorbar

请注意,出于性能原因,我还对函数进行了矢量化

我无法解释为什么对于较大的间隔,即使是在较小间隔内看起来很好的零件也无法通过Matlab显示。例如,如果我使用
interval2
,结果如下所示:

f = @(x,y,z) exp((625*(x - 31/20)^2)/72 + (625*(x - 981/250)^2)/72 + (625*(y - 461/100)^2)/72 + (625*(y - 4797/1000)^2)/72 + (625*(z - 13207/1000)^2)/72 + (625*(z - 15177/1000)^2)/72) - 0.0005;

fimplicit3(f)
f = @(x,y,z) exp(5/288 .* (2 .* x .* (500 .* x - 2737) + y .* (1000 .* y - 9407) + 8 .* z .* (125 .* z - 3548))) - 0.0005;

interval = [-0.6 0.6 -0.6 0.6 -0.6 0.6];

%interval2 = [-6 6 -6 6 -6 6];

fimplicit3(f,interval)

colorbar

双浮点格式的最大可能值,不一定是MATLAB。我对MATLAB不太熟悉,对函数绘图没有很好的了解。有解决办法吗?另一种软件/方法?这实际上是一个数学问题,而不是一个Matlab问题。也许math.stackexchange.com上的人可以帮助你以另一种方式分析函数。@AnderBiguri感谢你的更正。我相应地修改了答案。我想知道其他一些函数近似值是否在[0,0,0]附近数值稳定。双浮点格式的最大可能值,不一定是MATLAB。我对MATLAB不太熟悉,对函数绘图没有很好的了解。有解决办法吗?另一种软件/方法?这实际上是一个数学问题,而不是一个Matlab问题。也许math.stackexchange.com上的人可以帮助你以另一种方式分析函数。@AnderBiguri感谢你的更正。我相应地改变了我的答案。我想知道其他一些函数近似值是否在[0,0,0]附近数值稳定。