gpt4 book ai didi

plot - Mathematica 分段函数错误的绘图渲染

转载 作者:行者123 更新时间:2023-12-04 17:46:28 29 4
gpt4 key购买 nike

我想在 Mathematica 10.2 中绘制用户定义的分段函数(宝塔函数)。不幸的是,这对我来说似乎很简单,但简单的命令会导致糟糕的结果。

我的第一个方法是:

f[x_] := Piecewise[{{0, x <= -1}, {-Abs[x] + 1, -1 < x < 1}, {0, 
x >= 1}}]

Plot3D[ 5*f[x]*f[y], {x, -1.5, 1.5}, {y, -1.5, 1.5}]

我还尝试设置 MaxRecursion,这在某些情况下会导致更糟糕的结果(例如 2,3)。

谁能告诉我如何以流畅漂亮的方式绘制此函数?

谢谢,

菲利克斯

Example image from Mathematica 10.2

最佳答案

据我所知,制作可见间隙是作为一项功能引入的。在此之前,分段或不连续的函数是这样绘制的:

Plot[Piecewise[{{x, x <= 1}, {3, x > 1}}], {x, 0, 3}, Exclusions -> None]

Mathematica graphics

这种行为给人以错误的印象。我将不得不检查这是何时默认的,或者我是否完全不在此处。无论如何,正如评论中已经指出的那样,您可以使用 Exclusions 选项来获取连接图。

您不需要增加 PlotPoints,因为 Mathematica 会(希望总是)将片段的边界识别为需要递归增加点的地方。因此,MaxRecursion 选项对于提供平滑的绘图更为重要。此示例仅使用 10 个点进行渲染,但递归值为 5:

Mathematica graphics

因此,当递归足够高时,即使有 10 个绘图点,您的函数也能呈现得非常好。看看你在裂缝上得到了多少分割

Plot3D[5*f[x]*f[y], {x, -1.5, 1.5}, {y, -1.5, 1.5}, PlotRange -> All, 
Exclusions -> None, PlotPoints -> 10, MaxRecursion -> 6, Mesh -> All]

Mathematica graphics Mathematica graphics

最后,请注意间隙不限于 Piecewise 函数。您可以自己验证,UnitStep 也会显示间隙。您可以通过使用未记录的函数将所有内容转换为 UnitStep 来尝试您的示例:

Simplify`PWToUnitStep[5*f[x]*f[y]]
(*
5 (1 - Abs[x]) (1 - Abs[y]) (1 - UnitStep[-1 - x]) (1 -
UnitStep[-1 + x]) (1 - UnitStep[-1 - y]) (1 - UnitStep[-1 + y])
*)

关于plot - Mathematica 分段函数错误的绘图渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48302837/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com