【问题标题】:Debugging a working program on Mathematica 5 with Mathematica 7使用 Mathematica 7 在 Mathematica 5 上调试工作程序
【发布时间】:2011-02-10 03:55:00
【问题描述】:

我目前正在阅读 Mathematica Guidebooks for Programming,并且正在尝试编写本书的第一个程序之一。基本上,当我运行以下程序时:

Plot3D[{Re[Exp[1/(x + I y)]]}, {x, -0.02, 0.022}, {y, -0.04, 0.042}, 
 PlotRange -> {-1, 8}, PlotPoints -> 120, Mesh -> False, 
 ColorFunction -> Function[{x1, x2, x3}, Hue[Arg[Exp[1/(x1 + I x2)]]]]]

要么我得到一个 1/0 错误和 e^\infinity 错误,要么,如果我将 PlotPoints 选项降低到,比如说,60,一个溢出错误。虽然我有一个工作输出,但这不是它应该是的。色调似乎从左角扩散,而它应该从原点扩散(如原始 output 所示)

这是显然在 Mathematica 5 上运行的原始程序(Trott,Mathematica Guidebook for Programming):

Off[Plot3D::gval];

Plot3D[{Re[Exp[1/(x + I y)]], Hue[Arg[Exp[1/(x + I y)]]]},
       {x, -0.02, 0.022}, {y, -0.04, 0.042},
       PlotRange -> {-1, 8}, PlotPoints -> 120, Mesh -> False]

Off[Plot3D::gval];

但是,ColorFunction 以这种方式使用(第一个 Plot3D 参数)不起作用,所以我尝试简单地适应它的新使用方式。

嗯,谢谢!

【问题讨论】:

    标签: debugging wolfram-mathematica 3d


    【解决方案1】:

    如果您对 Mathematica 的默认设置感到满意,您可以使用旧版本的代码,只需将 , Hue[Arg[Exp[1/(x + I y)]]] 删掉即可,函数就可以正常工作了。

    您在新版本代码中遇到的问题似乎源于表达式Exp[1/(x1 + I x2)]——有时这需要评估1/0。至少,如果我删掉1/,程序会毫无怨言地执行(在 Mathematica 7 上),尽管显然颜色错误。所以你可能需要重写你的颜色函数。

    【讨论】:

    • 是的,我已经想通了,但我真的想找出两个版本之间发生了如此大的变化,导致旧代码无法使用。我也试图弄乱 Plot3D 的 WorkingPrecision 选项,但它也没有帮助。无论如何,谢谢你的回答!
    【解决方案2】:

    我终于找到了两种替代方法来解决我的问题。第一个是简单地使用<< Version5`Graphics` 命令来使用Plot3Dfunction,就像它在 Mathematica V5 中的工作方式一样。从书中提取的代码就像以前一样工作。

    但是,如果希望正确显示最新版本的色调(即不扩散左角),则必须使用Rescale 函数,如下所示:

    Plot3D[Evaluate[Re[f[x, y]]], {x, -.02, .022}, {y, -0.04, 0.042},
    PlotRange -> {-1, 2}, PlotPoints -> 120, Mesh -> False,
    ColorFunction -> Function[{x, y, z}, Hue@Rescale[Arg[f[x, y]], {-π, π}]],
    ColorFunctionScaling -> False,
    ClippingStyle -> None]
    

    我想 Mathematica 中的参数函数不会自动映射到 [-Pi,Pi) 范围,因此必须重新调整到该域。结果还是蛮好看的,虽然和原图有一些细微的差别。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-08
      • 1970-01-01
      • 2012-02-24
      • 1970-01-01
      • 2023-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多