【问题标题】:How to obtain accurate plot curves in Mathematica?如何在 Mathematica 中获得准确的绘图曲线?
【发布时间】:2011-08-17 06:14:30
【问题描述】:

在 Mathematica 中运行以下代码:

r=6197/3122;
p[k_,w_]:=Sqrt[w^2/r^2-k^2];q[k_,w_]:=Sqrt[w^2-k^2];
a[k_,w_,p_,q_]:=(k^2-q^2)^2 Sin[p]Cos[q]+4k^2 p q Cos[p]Sin[q]
a[k_,w_]:=a[k,w,p[k,w],q[k,w]];
ContourPlot[a[k,w]==0,{w,0,6},{k,0,14}]

这给了我非常不准确的曲线:

我尝试将ContourPlotPlotPointsWorkingPrecision 选项分别设置为30 和20,但无济于事。您还会注意到唯一的数字参数r 是一个精确的有理数。我不知道还能尝试什么。谢谢。

编辑:我期望得到的曲线是下图中的三个黑色曲线(标记为 A1、A2 和 A3)

【问题讨论】:

  • 也许你可以在math.stackexchange.com问它
  • @plaes:这不是关于数学的问题。这是一个关于 Mathematica 的问题。
  • 你能附上一张你所期望的大致图片吗?

标签: math wolfram-mathematica plot


【解决方案1】:

您确定a 的图片和/或定义吗?根据a 的定义,a[k,w]==0k==w 上,但该曲线不会出现在您的图片中。

无论如何,假设a 的定义是正确的,绘制等高线的问题是在域w^2/r^2-k^2<0 中,p[k,w]Sin[p[k,w]] 都变成纯虚数,这意味着a[k,w] 变成纯虚数也是虚构的。由于ContourPlot 不喜欢复值函数,因此仅绘制了域w^2/r^2>=k^2 中的轮廓部分。

并不是Sin[p[k,w]]/p[k,w]kw 的所有值都是真实的(并且它在限制p[k,w]->0 中表现得很好)。因此,要解决a 变得复杂的问题,您可以改为绘制轮廓a[k,w]/p[k,w]==0

ContourPlot[a[k, w]/p[k, w] == 0, {w, 0, 6}, {k, 0, 14}]

结果

【讨论】:

  • 你是对的。我对a 的定义有误。我修好了它。谢谢。
  • 除以p 修复了它。我什至不必设置 PlotPoints 或任何东西!谢谢!
【解决方案2】:

通过分别绘制 l.h.s. 的实部和虚部,我得到了与您期望的非常相似的东西。等式的:

ContourPlot[{Re@a[k, w] == 0, Im@a[k, w] == 0}, {w, 0, 6}, {k, 0, 14},
  MaxRecursion -> 7]

【讨论】:

    【解决方案3】:

    您的函数在您显示的等高线区域内给出复数。这是你所期望的吗?你可以在这里看到真实的区域:

    ContourPlot[a[k, w], {w, 0, 6}, {k, 0, 14}]
    

    如果我使用的话,我会在某些方面更接近你的台词:

    ContourPlot[a[w, k] == 0, {w, 0, 6}, {k, 0, 14}]
    

    是否可能存在转录错误?

    (如果这没有帮助,我深表歉意。)

    【讨论】:

    • 存在转录错误(Heike 在上面的答案中指出),现在已修复。但是,它是a[k,w],而不是a[w,k],并且那里没有错误。还是谢谢。
    【解决方案4】:

    pq 只有当 w^2 - k^2w^2/r^2 - k^2 都是非负数时才会被赋值。 w^2 / r^2 - k^2 只会在您的绘图区域的以下区域中为非负数:

    因此,ContourPlot 将切断其他所有内容。也许您需要对方程进行一些更正(您只需要实部?幅度?)我不相信 Mathematica 给您的曲线非常不准确。否则,如果增加 PlotPointsMaxRecursion(例如,增加到 50 和 4),那么提高轮廓准确度的方法。

    【讨论】:

      【解决方案5】:

      尝试对方程进行参数化。例如,定义a=w^2-k^2b=w^2/r^2-k^2,然后求解ab并将它们映射到kw

      【讨论】:

        猜你喜欢
        • 2021-02-28
        • 1970-01-01
        • 1970-01-01
        • 2011-11-05
        • 1970-01-01
        • 2011-03-10
        • 2019-06-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多