Wolfram mathematica 在Mathematica中绘制复函数
我如何制作一个Mathematica图形来复制圣人的行为?i、 e 。。。取一的复函数 变量,并绘制 在指定的范围内运行,并且 Y范围如下所示。这个 显示输出的大小 通过亮度(零为 黑色和无限是白色)而 这个论点用色调来表示 (红色为正实数,且 通过橙色、黄色。。。 随着争论的增加) 下面是zeta函数的一个示例(摘自年的M.Hampton),具有绝对值的重叠轮廓: 在Mathematica文档页面中,您可以使用Wolfram mathematica 在Mathematica中绘制复函数,wolfram-mathematica,visualization,plot,complex-numbers,Wolfram Mathematica,Visualization,Plot,Complex Numbers,我如何制作一个Mathematica图形来复制圣人的行为?i、 e 。。。取一的复函数 变量,并绘制 在指定的范围内运行,并且 Y范围如下所示。这个 显示输出的大小 通过亮度(零为 黑色和无限是白色)而 这个论点用色调来表示 (红色为正实数,且 通过橙色、黄色。。。 随着争论的增加) 下面是zeta函数的一个示例(摘自年的M.Hampton),具有绝对值的重叠轮廓: 在Mathematica文档页面中,您可以使用ContourPlot和DensityPlot“潜在相位着色”来可视化复杂函数。但
ContourPlot
和DensityPlot
“潜在相位着色”来可视化复杂函数。但问题是在这两种类型的绘图中,ColorFunction
只接受一个等于该点轮廓或密度的变量-因此,在绘制绝对值时,似乎不可能使其为相位/参数着色。请注意,这不是Plot3D
的问题,其中所有3个参数(x,y,z)
都被传递到ColorFunction
我知道还有其他方法可以可视化复杂的函数,比如中的“简洁示例”,但这不是我想要的
另外,我确实有(这实际上已经被用于生成维基百科中使用的一些图形),但它定义了一个相当低级别的函数,我认为它应该可以使用像ContourPlot
或DensityPlot
这样的高级函数。这并不是说这会阻止你给出你最喜欢的使用较低层次结构的方法
编辑:在《Mathematica》杂志上,迈克尔·特罗特(Michael Trott)发表了一些不错的文章:
可视化黎曼曲面,,。
可视化黎曼曲面。
当然,MichaelTrott写了一篇文章,其中包含了许多漂亮的图形,但似乎已经落后于Mathematica的加速发布计划 这是我的尝试。我稍微改变了一下颜色函数
ParametricPlot[
(*just need a vis function that will allow x and y to be in the color function*)
{x, y}, {x, -6, 3}, {y, -3, 3},
(*color and mesh functions don't trigger refinement, so just use a big grid*)
PlotPoints -> 50, MaxRecursion -> 0, Mesh -> 50,
(*turn off scaling so we can do computations with the actual complex values*)
ColorFunctionScaling -> False,
ColorFunction -> (Hue[
(*hue according to argument, with shift so arg(z)==0 is red*)
Rescale[Arg[Zeta[# + I #2]], {-Pi, Pi}, {0, 1} + 0.5], 1,
(*fudge brightness a bit:
0.1 keeps things from getting too dark,
2 forces some actual bright areas*)
Rescale[Log[Abs[Zeta[# + I #2]]], {-Infinity, Infinity}, {0.1, 2}]] &),
(*mesh lines according to magnitude, scaled to avoid the pole at z=1*)
MeshFunctions -> {Log[Abs[Zeta[#1 + I #2]]] &},
(*turn off axes, because I don't like them with frames*)
Axes -> False
]
我还没有想到一个好办法,让网格线的颜色变化。最简单的方法可能是只使用
轮廓图
而不是网格函数
生成它们,这不是一个正确的答案,原因有两个:
- 这不是你要的
- 我在无耻地使用Brett的密码
Plot3D[
Log[Abs[Zeta[x + I y]]], {x, -6, 3}, {y, -3, 3},
(*color and mesh functions don't trigger refinement,so just use a big grid*)
PlotPoints -> 50, MaxRecursion -> 0,
Mesh -> 50,
(*turn off scaling so we can do computations with the actual complex values*)
ColorFunctionScaling -> False,
ColorFunction -> (Hue[
(*hue according to argument,with shift so arg(z)==0 is red*)
Rescale[Arg[Zeta[# + I #2]], {-Pi, Pi}, {0, 1} + 0.5],
1,(*fudge brightness a bit:
0.1 keeps things from getting too dark,
2 forces some actual bright areas*)
Rescale[Log[Abs[Zeta[# + I #2]]], {-Infinity, Infinity}, {0.1, 2}]] &),
(*mesh lines according to magnitude,scaled to avoid the pole at z=1*)
MeshFunctions -> {Log[Abs[Zeta[#1 + I #2]]] &},
(*turn off axes,because I don't like them with frames*)
Axes -> False]
这是我对函数的一个变体,它的灵感来自于who。链接到页面的两个页面都有一些漂亮的图形
ComplexGraph[f_, {xmin_, xmax_}, {ymin_, ymax_}, opts:OptionsPattern[]] :=
RegionPlot[True, {x, xmin, xmax}, {y, ymin, ymax}, opts,
PlotPoints -> 100, ColorFunctionScaling -> False,
ColorFunction -> Function[{x, y}, With[{ff = f[x + I y]},
Hue[(2. Pi)^-1 Mod[Arg[ff], 2 Pi], 1, 1 - (1.2 + 10 Log[Abs[ff] + 1])^-1]]]
]
然后我们可以通过运行来绘制没有等高线的图
ComplexGraph[Zeta, {-7, 3}, {-3, 3}]
我们可以通过复制并在ComplexGraph中显示特定的打印网格来添加等高线:
ComplexGraph[Zeta, {-7, 3}, {-3, 3}, Mesh -> 30,
MeshFunctions -> {Log[Abs[Zeta[#1 + I #2]]] &},
MeshStyle -> {{Thin, Black}, None}, MaxRecursion -> 0]
或者通过结合等高线图,如
ContourPlot[Abs[Zeta[x + I y]], {x, -7, 3}, {y, -3, 3}, PlotPoints -> 100,
Contours -> Exp@Range[-7, 1, .25], ContourShading -> None];
Show[{ComplexGraph[Zeta, {-7, 3}, {-3, 3}],%}]
我还没有读过这个问题,但可爱的情节是+1:)@belisarius:这不是我的情节,但谢谢!您确定不能将(x,y,z)传递到DensityPlot中的ColorFunction中吗?我已经能够按照DensityPlot[…,ColorFunction->Function[{x,y,z},f[x,y,z]]]@MikeBantegui做一些事情:注意,只有函数中的
x
参数可以使用,并且对应于每个点的密度。请参阅文档“更多信息”部分的第一个条目。奇怪的是,它没有发出警告…@Mike,只有x
被提供任何信息,如果你使用ColorFunction->Function[{x,y,z},Hue@(y/maxy)]
你只会得到灰色。但是,使用x/maxx
会给你一些东西。很好!这非常接近于我所看到的解决方案,它使用RegionPlot[True,{x,xmin,xmax},{y,ymin,ymax},opts…]
作为基础图形
对象。@brettchampionnice plot!有没有一种简单的方法可以包含一些色调从-pi到-pi的plotlegend?这不是一个正确的答案,但我同意-它确实使某些方面更加清晰,而且非常漂亮+1.