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]附近数值稳定。