这个Mathematica三维图为啥画不出来

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这个Mathematica三维图为啥画不出来相关的知识,希望对你有一定的参考价值。

w = 1403
L = 150
a = 650
w1 = w/2 // N
r = 32.2
F(g_) = -w1Erf[(π^(1/2)/r) ] - Erf[(π^(1/2)/r)( g - a)]
F(y_) = -w1Erf[(π^(1/2)/r) y] - Erf[(π^(1/2)/r)( y - L)]
F(g, y) = F(g_) F(y_)
Plot3D[%, g, -2000, 2000, y, -2000, 2000 ]

你的函数定义方法完全是错的……同学,基本语法要懂啊。
函数的自变量要使用方括号,圆括号在Mathematica里只表示运算的先后次序,对于你这种简单情形,简单地说,定义函数的时候,只有式子左边才要使用一条下划线(它实际上表示模式的匹配,具体你可以看看帮助);最那啥的是,你怎么定义函数全是用个大F啊?你该不会是觉得自变量不一样就不要紧了吧?形如“g_”的东西,上面说了,代表了一种模式,也就是说,它是什么字母,都是一样的;顺便使用大写字母定义函数是很不明智的。总之,你要这么改:

w = 1403
L = 150
a = 650
w1 = w/2 // N
r = 32.2
f[g_] = -w1 Erf[(\\[Pi]^(1/2)/r)] - Erf[(\\[Pi]^(1/2)/r) (g - a)]
i[y_] = -w1 Erf[(\\[Pi]^(1/2)/r) y] - Erf[(\\[Pi]^(1/2)/r) (y - L)]
h[g_, y_] = f[g] i[y]
Plot3D[%, g, -200, 200, y, -200, 200, PlotRange -> All]
参考技术A Plot3D[f[x,y],x,xmin,xmax,y,ymin,ymax]
在xmin,xmax间画出f[x]的Surface图形
Show[p] 重画图p,用法同二维
Show[Gaphics3D[p]] 将图p(可能是SurfaceGraphics)转
为Graphics3D,并重画
三维作图选项
PlotRange Automatic zmin,zmax或xmin,xmax,y...,z...
Axes轴 Automatic None
AxesLabel None "x轴标","y轴标","z轴标"
Ticks Automatic 刻度
PlotLabel图标 None 图的标记
Boxed盒子 True False
BoxRatios 1,1,0.4 x,y,z
HiddenSurface True False是否隐去曲面被挡部分
Shading True False是否涂阴影(颜色)
Mesh True False是否在曲面上画网格
LightSources 三个光源 设光源x,y,z,RGBColor[r,g,b]
FaceGrids None All或坐标网格
ViewPoint视点 1.3,-2.4,2. x,y,z
0,-2,0正前方; 0,-2,2前上方; 0,-2,-2前下方;
2,-2,0正右角; 0,0,2正上方; ...
PlotPoints 15 作图精度
(PlotPoints为Plot3D,ParametricPlot3D,ContourPlot等
plot函数选项)
In[1]:= Plot3D[Sin[x]y^2,x,-3,4,y,-2,2]
In[2]:= Plot3D[Sin[x]y^2,x,-3,4,y,-2,2,PlotPoints->30]
In[2]:= Show[%, Mesh->False,Boxed->False,Axes->None]

参数绘图
ParametricPlot3D[fx,fy,fz,u,umin,umax,v,vmin,vmax]
等值线图
ContourPlot[f,x,xmin,xmax,y,ymin,ymax]
选项Contours 10 从zmin到zmax等值线条数
密度图
DensityPlot[f,x,xmin,xmax,y,ymin,ymax]
In[1]:= ParametricPlot3D[Cos[5t],Sin[3t],Sin[t],t,0,2Pi]
In[2]:= ParametricPlot3D[u,u+v,v^2,u,0,2,v,-1,1]
In[3]:= ContourPlot[Sin[x]Cos[y],x,-2,2,y,-2,2]
In[4]:= Show[%,Contours->30]
In[5]:= DensityPlot[Sin[x]Cos[y],x,-2,2,y,-2,2]

数据绘图
ListPlot[y1,y2,...] 画(1,y1),(2,y2),...
ListPlot[x1,y1,x2,y2,...]
ListPlot[...,PlotJoined->True] 连线
ListPlot3D[array]
In[1]:= t=Table[i^2,i,10]
In[2]:= ListPlot[t]
In[3]:= ListPlot[t,PlotJoined->True]
In[4]:= tt=Table[Mod[y,x],x,20,y,20]
In[5]:= ListPlot3D[%,ViewPoint->1.5,-0.5,1]

MATLAB如何绘制三维隐函数图形

像Maple、Mathematica中就有类似implicitplot3()的三维隐函数绘图函数

自定义三维隐函数绘制函数
全世界人都知道Matlab那几千个库函数中,可恨的是,却偏偏不提供个三维隐函数的图像绘制的函数,真是郁闷死了

好,下面我们看一个三维隐函数绘制的应用,它灵活的应用了Matlab的isosurface()(等值面函数),绘制出来的图效果还比较好

function implot3(fun,rangxyz,ngrid,varargin)
%三维隐函数绘图
%
%输入参数说明
-fun 函数句柄,可以是匿名、inline和M函数
% -rangexy=[xmin xmax ymin ymax,zmin,zmax] 绘图范围
% -ngrid 绘图时计算的点数
%
%Example
%fun=@(x,y,z)(x+y+z).*(x.*y+x.*z+y.*z)-10*x.*y.*z;
%rangxyz=[1 10 1 10 1 10];ngrid=50;
%implot3(fun,rangxyz,ngrid)
%
%rewrite by dynamic
%all rights reserved by www.matlabsky.cn

x=linspace(rangexy(1),rangexy(2),ngrid);
y=linspace(rangexy(3),rangexy(4),ngrid);
z=linspace(rangexy(5),rangexy(6),ngrid);
[xx,yy,zz]=meshgrid(x,y,z);
fvector=vectorize(fun);% 将目标函数矢量化
f=f(fvector,xx,yy,zz,varargin:);
p=patch(isosurface(xx,yy,zz,f,0),varargin:);
set(p, 'FaceColor', 'red', 'EdgeColor', 'none');
daspect([1 1 1])
view(3)
camlight;
lighting phong
参考技术A 用isosurface绘制
例子:绘制x^2+y^2-z^2=1的图像
[x,y,z]=meshgrid(linspace(-10,10));
val=x.^2+y.^2-z.^2;
isosurface(x,y,z,val,1)
axis equal本回答被提问者采纳

以上是关于这个Mathematica三维图为啥画不出来的主要内容,如果未能解决你的问题,请参考以下文章

mathematica怎么保存

mathematica画三维曲面

Matlab&Mathematica对三维空间上的点进行椭圆拟合

arcmap画不出来图斑

Mathematica 中如何画空间离散点。

在Axure 流程图里面点击了矩形 为啥在主页里面没有显示呢 画不出来