mathematica中误导性的情节问题

Qia*_* Li 3 wolfram-mathematica

我想通过在mathematica中绘制它们来研究一些"奇怪"的函数.一个例子如下:

mod2[x_] := Which[Mod[x, 2] >= 1, -2 + Mod[x, 2], True, Mod[x, 2]];
f[x_] := Which[-1 <= x <= 1, Abs[x], True, Abs[mod2[x]]];
fn[x_, n_] := Sum[(3/4)^i*f[4^n*x], {i, 0, n}]
Plot[{fn[x, 0], fn[x, 1], fn[x, 2], fn[x, 5]}, {x, -2, 2}]
Run Code Online (Sandbox Code Playgroud)

然而,我从mma得到的情节具有误导性,因为最大值和最小值fn[x, 5]应该在相同的两个级别上.但是由于函数的高振荡,以及显然mma只需要有限数量的点来绘制函数的事实,你会看到该图表现出奇怪的行为.情节有没有选择来弥补这个问题?

fn的情节

非常感谢.

Bre*_*ion 9

您需要相当多地增加PlotPoints的设置才能获得"良好"的结果.

Plot[Evaluate[
  Reverse[{fn[x, 0], fn[x, 1], fn[x, 2], fn[x, 5]}]], {x, -2, 2}, 
 PlotPoints -> 4000]
Run Code Online (Sandbox Code Playgroud)

(我也颠倒了函数的顺序,以便能够看到所有的曲线.) 在此输入图像描述