分段部件之间的平滑连接

ene*_*ene 7 wolfram-mathematica

分段智能函数示例:

f[x_]:=Piecewise[{{x^2, 0<x<1-epsilon},{x,1<x<2-epsilon},{2,x>2}}]
Run Code Online (Sandbox Code Playgroud)

有没有办法在区间epsilon中连接这些部分,所以我得到一个平滑的功能?

编辑:
顺便说一下,我并不是说它需要在连接点上是可推导的,只是在一些数值工作中它看起来像一个"自然"连接.

编辑2:
两个黑圈表示问题所在的点.我希望它看起来像一个可导出的函数(虽然它不需要严格的数学意义,但我不希望这两个峰值).红色圆圈代表它看起来很好的部分.
图片
我能做的是通过非线性拟合[x-epsilon,x + epsilon]来做到这一点,但我希望有一种更简单的分段函数方法.

Art*_*tes 5

首先,给定一个函数,我们应该在整个范围内精确定义它{x,0,2},即.它的范围1-epsilon <= x < 1和值2 - epsilon <= x < 2. 在此输入图像描述

最简单的方法是f1[x]在两个范围上定义分段线性,但是结果函数在胶合点上不会是可微分的,并且它将涉及尖峰.

为了防止出现这种情况,我们应该选择(在这种情况下)至少三阶多项式:

P[x_] := a x^3 + b x^2 + c x + d
Run Code Online (Sandbox Code Playgroud)

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)  
Run Code Online (Sandbox Code Playgroud)

为了使结果可视化,我们可以采取以下方法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}]
Run Code Online (Sandbox Code Playgroud)

取决于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}]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果我们想要f1是一个平滑函数(无限可微),我们应该使用超越函数来定义f1范围[1 - epsilon <= x < 1),例如Exp[1/(x-1)]等等.