Сначала, для данной функции мы должны точно определить ее во всем диапазоне {x,0,2}
, т.е.его значения в диапазонах 1-epsilon <= x < 1
и 2 - epsilon <= x < 2
.
Самый простой способ - это определить f1[x]
кусочно-линейный для обоих диапазонов, однако результирующая функция не будет дифференцируемой по точкам склеивания, и она будет включать в себя пики.
Чтобы предотвратить такую ситуацию, мы должны выбрать (в данном случае) как минимум полиномы третьего порядка:
P[x_] := a x^3 + b x^2 + c x + d
и склеить их вместе с f[x]
, предполагая "условия склеивания" (равенство функций в заданных точках).а также их первых производных) т.е.решить получившиеся уравнения:
W[x_, eps_]:= P[x]//. Flatten@Solve[{#^2 == P[#],
1 == P[1],
2# == 3a#^2 +2b# +c,
1 == 3a +2b +c}, {a, b, c, d}]&@(1-eps)
Z[x_, eps_]:= P[x]//. Flatten@Solve[{# == P[#],
2 == P[2],
1 == 3a#^2 +2b# +c,
0 == 12a +4b +c}, {a, b, c, d}]&@(2-eps)
Для визуализации результатов мы можем воспользоваться Manipulate
:
f1[x_, eps_]:= Piecewise[{{x^2, 0 < x < 1 -eps}, {W[x, eps], 1 -eps <= x < 1},
{ x , 1 <= x < 2 -eps}, {Z[x, eps], 2 -eps <= x < 2},
{ 2 , x >=2}}];
Manipulate[ Plot[f1[x, eps], {x, 0, 2.3},
PlotRange -> {0, 2.3}, ImageSize->{650,650}]
//Quiet, {eps, 0, 1}]
В зависимости от epsilon > 0
мы получаем дифференцируемые функции f1
, а дляepsilon = 0
f1
нельзя дифференцировать в двух точках.
Plot[f1[x, eps]/. eps -> .4, {x, 0, 2.3}, PlotRange -> {0, 2.3},
ImageSize -> {500, 500}, PlotStyle -> {Blue, Thick}]

Если мы хотим, чтобы f1 была гладкой функцией (бесконечно дифференцируемой), нам следует поиграть с определением f1
в диапазоне [1 - epsilon <= x < 1)
с трансцендентной функцией, например, Exp[1/(x-1)]
и т. Д.