\begingroup

我想制定一个凹凸函数(FX FXf(x)具有以下实数属性:

Fx =0 1 0 如果 x1如果 x=0如果 x1FX:={0如果 X11如果 X=00如果 X1

f(x) :=
\begin{cases}
0, & \mbox{if } x \le -1 \\
1, & \mbox{if } x = 0 \\
0, & \mbox{if } x \ge 1
\end{cases}

此外(因为它是一个凹凸函数),它应该是平滑且连续可微的,并且一阶导数在x = 1X=1x = -1x = 1X=1x = 1应为零。

但最后一个条件让我无法接受。我希望

11Fx dx = 111FXdX=1

\int_{-1}^1 f(x) dx = 1

上面链接的维基百科文章中提供的 bump 函数示例非常接近(我添加了111指数取其值为111x = 0X=0x = 0):

Gx =0 经验1 11 X20 如果 x1如果 1<x<1如果 x1GX:={0如果 X1经验111X2如果 1<X<10如果 X1

g(x) :=
\begin{cases}
0, & \mbox{if } x \le -1 \\
\exp^{1-\frac{1}{1-x^2}}, & \mbox{if } -1 < x < 1 \\
0, & \mbox{if } x \ge 1
\end{cases}

功能GGg满足我的所有要求,除了11Fx dx = 111FXdX=1\int_{-1}^1 f(x) dx = 1。在这里我遇到了瓶颈。我假设,原则上,人们可以乘以XXx由于某种因素a > 1A>1a > 1以获得所需的精确结果……但这需要有一个反导数的公式经验1 11−X2dX经验111AX2dX\int \exp^{1-\frac{1}{1-ax^2}} dx,我完全不知道如何找到它。常用的技术似乎不适用。此外,Mathematica 只是耸耸肩 – 这表明我可能会花很长时间尝试而毫无进展。

所以:

  1. GX GXg(x)实际上是可积的(在产生不定积分公式的意义上)?如果是,如何实现的?
  2. 如果没有,那么是否有一个完全不同的公式可以满足FFf? 我真的不知道如何开始构建这样的东西,因为我对各类函数属性的数学知识根本无法完成这项任务。

根据评论中的建议进行更新

我查看了答案(非常感谢@Lorago,我在这里搜索了“bump function”,但没有找到),但无法让它工作。也许我做错了什么?根据那里的答案,设置

F0x = {0 1X2如果 x0如果 x>0F0X:={0如果 X01X2如果 X>0

f_0(x) :=
\begin{cases}
0, & \mbox{if } x \le 0 \\
e^{-\frac{1}{x^2}}, & \mbox{if } x > 0
\end{cases}

我可以看到这个函数F1x =1X2+ 1F1X:=1X2+1f_1(x) := -e^{-\frac{1}{x^2}} + 1会产生积极的影响F10 = 1F10=1f_1(0) = 1;尽管F1x 0F1X0f_1(x) \rightarrow 0仅作为x ± X±x \rightarrow \pm \infty,我不确定它的实用性。分段截断的选择x = 0X=0x = 0为了F1X F1Xf_1 (x)看起来也很奇怪。

不过,我们还是继续吧。答案的下一步是设置

G0x = f x 12 F12x )G0X=FX12F12X

g_0(x)=f\left(x-\frac{1}{2}\right)f\left(\frac{1}{2}-x\right)

所以,

G0x = {0 1 x 122112x2如果 x0如果 x>0G0X:={0如果 X01X122112X2如果 X>0

g_0(x) :=
\begin{cases}
0, & \mbox{if } x \le 0 \\
e^{-\frac{1}{(x – \frac {1}{2})^2}} \cdot e^{-\frac{1}{(\frac {1}{2} – x)^2}}, & \mbox{if } x > 0
\end{cases}

链接的答案指出“这是一个以原点为中心的平滑凹凸函数,但G00 1G001g_0(0)\neq1”但我不敢苟同;情节如下:

显然,我深深误解了所建议的内容。但为了完整起见,现在设定G1x =G0X G00 G1X=G0XG00g_1(x)=\frac{g_0(x)}{g_0(0)}。Mathematica 做了以下简化:

1 x 122112x211221122=1 x 122112x )2+ 81X122112X211221122=1X122112X2+8

\frac {e^{-\frac{1}{(x – \frac {1}{2})^2}} \cdot e^{-\frac{1}{(\frac {1}{2} – x)^2}}}{e^{-\frac{1}{(- \frac {1}{2})^2}} \cdot e^{-\frac{1}{(\frac {1}{2})^2}}} = e^{-\frac{1}{\left(x-\frac{1}{2}\right)^2}-\frac{1}{\left(\frac{1}{2} – x\right)^2}+8}

所以我们现在有

G1x =0 1 x 122112x )2+ 8如果 x0如果 x>0G1X:={0如果 X01X122112X2+8如果 X>0

g_1(x) :=
\begin{cases}
0, & \mbox{if } x \le 0 \\
e^{-\frac{1}{\left(x-\frac{1}{2}\right)^2}-\frac{1}{\left(\frac{1}{2} – x\right)^2}+8}, & \mbox{if } x > 0
\end{cases}

这是提出的解决方案。但它看起来像这样…

即使考虑到人们可能已经对F0F0f_0产生更类似的东西F1F1f_1通过适当的分段截断,很容易看出我做错了什么。

为了完整起见,下面是将相同过程应用于F1F1f_1,并对分段规范的截止点进行适当调整。它稍微接近一点,但仍然没有满足大多数要求:

遗憾的是,尽管之前有这样的回答,但我发现自己仍然需要帮助。

\endgroup

8

  • \begingroup
    这个问题类似于:。如果您认为它有所不同,请编辑问题,说明它有何不同和/或该问题的答案对您的问题无益之处。
    \endgroup


    – 

  • \begingroup
    嗨@Lorago。我读过你链接的答案(它没有出现在我的搜索中,很奇怪)。恐怕它让我比以往更加困惑。很明显,我肯定没有掌握那里答案的一些非常基本的东西;如果它对其他人有用,那么一定是我错过了什么。所以,我的问题现在已更新以解决这个问题。
    \endgroup


    – 

  • 1
    \begingroup
    如果你不要求函数是无限可微的,那么你可以使用比1 /X21/X2e^{-1/x^2},例如余弦2X 余弦2X\cos^2 x.
    \endgroup


    – 


  • \begingroup
    您的书面版本G0G0g_0不正确,而且链接的问题中似乎有拼写错误。我认为该函数应该是G0x = f12+ x ) f12x )G0X=F12+XF12Xg_0(x)=f\left(\frac{1}{2}+x\right)f\left(\frac{1}{2}-x\right).如果我们写Fx =1X2χ0 X FX=1X2χ0Xf(x)=e^{-\frac1{x^2}}\chi_{(0,\infty)}(x), 在哪里χAχA\chi_A是指示函数AAA, 然后

    G0x =42x + 1 242x 1 2χ1212x = {42x + 1 242x 1 20 x (1212否则G0X=42X+1242X12χ1212X={42X+1242X12X12120否则

    g_0(x)=e^{-\frac4{\left(2x+1\right)^2}-\frac{4}{\left(2x-1\right)^2}}\chi_{\left(-\frac1{2},\frac{1}{2}\right)}(x)=\begin{cases}e^{-\frac{4}{\left(2x+1\right)^2}-\frac{4}{\left(2x-1\right)^2}},&x\in\left(-\frac{1}{2},\frac{1}{2}\right),\\ 0,&\text{otherwise}.\end{cases}
    \endgroup


    – 

  • \begingroup
    谢谢。我仍然很困惑,抱歉。首先,让我们接受F0x = {0 1X2如果 x0如果 x>0F0X:={0如果 X01X2如果 X>0 f_0(x) := \begin{cases} 0, & \mbox{if } x \le 0 \\ e^{-\frac{1}{x^2}}, & \mbox{if } x > 0 \end{cases} G0x = f x 12 F12x )G0X=FX12F12Xg_0(x)=f\left(x-\frac{1}{2}\right)f\left(\frac{1}{2}-x\right)。这当然给了我们 F0x =0 112+2112x2如果 x0如果 x>0F0X:={0如果 X0112+X2112X2如果 X>0f_0(x) := \begin{cases} 0, & \mbox{if } x \le 0 \\ e^{-\frac{1}{(\frac{1}{2}+x)^2}-\frac{1}{(\frac{1}{2}-x)^2}} , & \mbox{if } x > 0 \end{cases} 而不是你的结果?你的公式确实产生了一个凸起。但它大约是0.000330.000330.00033振幅很大,我无法积分;虽然积分肯定是< < 1<<1<<1
    \endgroup


    – 



6 个回答
6

\begingroup

如果你只要求一阶导数连续,那么你可以取

Fx = {余弦2πX20 当 1 x 1否则FX={余弦2πX2什么时候 1X10否则

f(x) = \begin{cases}
\cos^2\frac{\pi x}{2}&\text{when $-1\leq x\leq 1$}\\
0,&\text{otherwise}
\end{cases}

它满足
Fx = 0FX=0f(x)=0什么时候| x | >1|X|>1|x|>1F0 = 1 F0=1f(0)=1, FC1RFC1Rf\in C^1(\mathbb R),FX dx = 1。FXdX=1.\int f(x)\,dx=1.

\endgroup

4

  • \begingroup
    你好 @md2perpe,谢谢你,但我非常希望它是连续可微的……
    \endgroup


    – 

  • 1
    \begingroup
    嗯。我想我可能把“连续”和“无限”搞混了……如果是这样的话,你是对的,@md2perpe
    \endgroup


    – 

  • \begingroup
    我非常感谢您的回答,@md2perpe。我必须将另一个标记为正确,因为它很全面。但您的回答也确实很有用,我已点赞。谢谢。
    \endgroup


    – 


  • \begingroup
    @RichardBurke-Ward。没问题。最佳答案应该获得最高荣誉。我的答案对那些寻找简单碰撞功能的人很有用。
    \endgroup


    – 

\begingroup

我有一个比要求更严格的版本。过去我曾遇到过一个非常类似的问题,但一直没弄明白。我感兴趣的是比 OP 要求的更严格。由于这类关于碰撞函数性质的问题相当常见,我在研究我希望解决方案具有的属性列表时,在底部描述了我的一些思考过程。

我有一个平滑的凹凸功能FFf具有以下属性:

  1. FFf甚至,
  2. F0F0f\ge 0对全部XXx
  3. F0F0f \equiv 0在外面−1,1 11(-1,1)
  4. 0 < f10<F10 < f \le 1−1,1 11(-1,1)
  5. F0 = 1F0=1f(0) = 1
  6. FFf正在减少000, 和
  7. 11FX dx = 111FXdX=1\displaystyle \int_{-1}^1 f(x)\,dx = 1

困难的部分,正如 OP 正确指出的那样,是F0 = 1F0=1f(0) = 1与整体存在一起工作111。你可以缩小函数的支持度来获得积分所需的值,但你可能会失去F0 = 1F0=1f(0) = 1在这个过程中。或者如果你缩小支持并保持F0 = 1F0=1f(0) = 1,你可能会失去积分的期望值。你可以添加较小的凹凸函数,以远离000缩小函数的支持度后,如果你小心的话,这种方法是可行的,但是你的解决方案可能不会单调衰减000

F0x =1 11 X2χ−1,1 X F0X=111X2χ11X\displaystyle f_0(x) = e^{1-\frac{1}{1-x^2}}\chi_{(-1,1)}(x)是标准凹凸函数。设J=11F0X dXJ=11F0XdX\displaystyle J = \int_{-1}^1 f_0(x)\,dx。通过J=12112)012 ≈1.2069J=121120121.2069\displaystyle J = e^{\frac{1}{2}}\bigg(K_1\bigg(\frac{1}{2}\bigg) – K_0\bigg(\frac{1}{2}\bigg)\bigg)\approx 1.2069, 在哪里ννK_{\nu}。定义候选凸块函数FFf经过

Fx =11 + αF02x + αF0X FX=11+αF02X+αF0X

f(x) = \frac{1}{1+\alpha}(f_0(2x) + \alpha f_0(x)),

在哪里α =1J121 1Jα=1J1211J\displaystyle \alpha = \frac{\frac{1}{J}-\frac{1}{2}}{1-\frac{1}{J}}

很容易看出FFf是非负的并且相同000在外面−1,1 11(-1,1)。因为它是F0F0f_00 F010F010 \le f_0 \le 1, 我们还有0≤f10F10 \le f \le 1。 同样地,F0 = 1F0=1f(0) = 1FFf正在减少000自从F0F0f_0是。棘手的部分是评估F0F0f_0(可以在链接的 MSE 帖子中找到),但之后只需进行简单的操作即可显示FFf有积分111

以下是我做出这个决定的思考过程。至于我为什么选择FFf我这样做的方式:我想从F0F0f_0因为它是最常见的碰撞函数示例,并且 OP 已经明确指出了它。我缩小了它的支持(F02 x F02Xf_0(2x)) 到12121212\big(-\frac{1}{2},\frac{1}{2}\big)因为它的积分大于111。我首先添加了一些基于平移和重新缩放的凹凸函数F0F0f_0相对于原点对称,峰值接近±12±12\pm \frac{1}{2},但很快就变得难以管理单调递减部分,而不必陷入困境。问题是,我想要添加的较小的凹凸函数有一个峰值,然后在支撑的边缘附近衰减F02 x F02Xf_0(2x)所以我意识到我真正想要的是一个平坦但不为零的函数,通过F02 x F02Xf_0(2x),从而使用重新缩放的版本F0X F0Xf_0(x)剩下的只是做一个特定的凸组合来使积分和F0 = 1F0=1f(0) = 1各条件共同作用。

以下是演示该功能的图表:

\endgroup

0

\begingroup

考虑以下函数:

Fx =0 x 1 0 x≥1 1 x = 1 11 +经验值1 2 | x |X2| x |否则;FX={0X10X11X=111+经验12|X|X2|X|否则;

f(x) = \begin{cases} 0,\quad x\leq -1;\\
0,\quad x\geq 1;\\
1,\quad x=1;\\
\dfrac{1}{1+\exp\left(\frac{1-2|x|}{x^2-|x|}\right)},\quad\text{otherwise;}
\end{cases}

这是非族中的一个,它在每个点都是连续的,其导数也是连续的,满足F−1 = f1 = 0F1=F1=0f(-1)=f(1)=0F0 = 1F0=1f(0)=1, 和11Fx d x = 111FX dX=1\int_{-1}^1 f(x)\ dx = 1至少在中也是如此Fx d x = 1FX dX=1\int_{-\infty}^\infty f(x)\ dx = 1并且顶部是一个 R x RXR(x)第一叶的位移版本,是无处解析的无限可微函数的示例:您可以在中检查它是否满足您的积分要求,但它没有闭式:在此中显示了数值近似,并且它解决了Rx = 2R 2x + 1 −2R 2x 1 RX=2R2X+12R2X1R'(x) = 2R(2x+1)-2R(2x-1)

您可以查看FX FXf(x)中。

\endgroup

\begingroup

当你将函数提升到某个幂次时p > 0>0p > 0,你可以“抬起”图形并以此方式改变积分,同时仍然G0 = 1G0=1g(0) = 1,即考虑

GX= {经验p 1 11 X20 如果 | x | < 1别的GX={经验111X2如果 |X|<10别的

g(x)^p =
\begin{cases}
\exp(p \cdot (1-\frac{1}{1-x^2})) , & \text{if } |x| < 1 \\
0 , & \text{else}
\end{cases}

p选择11GXdx = 111GXdX=1\int_{-1}^1 g(x)^p \,dx = 1。不幸的是,我认为没有一个封闭的公式可以找到p这就成功了。求解p数字上给我p≈1.89956693726165841.8995669372616584p \approx 1.8995669372616584

\endgroup

\begingroup

只需将四条三次曲线拼接在一起即可完成此操作。从曲线的片段开始Fx = 1 4X3FX=14X3f(x)=1-4x^3在间隔上[ 0 12][012][0,\frac12]

绕点旋转此曲线12121212(\frac12,\frac12),通过添加曲线段= 4 ( 1 x3=41X3y=4(1-x)^3在间隔上121 ]121](\frac12,1]

并反思y-轴:

这具有连续的二阶(但不是三阶)导数,并且根据对称性,曲线下的面积为111


感谢 Desmos 提供的图片。

\endgroup

\begingroup

也考虑一下这个。

我希望代码足够清晰以适应其他平台。

\endgroup