Posted by on 2017年6月27日

[隐藏]

1.分段函数

在数值计算中我们时常会遇到分段函数(Segment function or piecewise function)。
如何比较优雅地表示分段函数呢?这里分享一下用heaviside function来表达的方法。

2.单位阶跃函数

它是个不连续函数,其“微分”是狄拉克δ函数。它是一个几乎必然是零的随机变数的累积分布函数。
事实上, x = 0的值在函数应用上并不重要,可以任意取。
这个函数由奥利弗·赫维赛德提出。

MATLAB中,heaviside function表达为

写成公式即为:
h(x-a) = \begin{cases} 1, & \quad \text{if } x-a \geq 0 \\ 0 , & \quad \text{if } x-a \lt 0 \end{cases}

那么假设我们有下面这个分段函数:
f(x) = \begin{cases} a, & \quad \text{if } x \lt \alpha \\ x^2 - b, & \quad \text{if } \alpha \leq x \lt \beta \\ c, & \quad \text{if } \beta \leq x \end{cases}
那么可以将公式写作:
f(x) = a h(x \lt \alpha) + (x^2-b) h(\alpha \leq x \lt \beta) + c h(\beta \leq x)
对上述第一部分做非运算,第二部分做且运算
h(x \lt \alpha) = \neg h(x \geq \alpha) = 1 - h(x - \alpha)
h(\alpha \leq x \lt \beta) = h(\alpha \leq x) \land h(x \lt \beta) = h(\alpha \leq x) h(x \lt \beta) = h(x \geq \alpha) \neg h(x \geq \beta) = h(x \geq \alpha) (1 - h[x \geq \beta]) = h(x - \alpha) (1 - h[x - \beta])
那么我们可以将f(x)写作:
f(x) = a (1 - h(x-\alpha)) + (x^2-b) h(x-\alpha) (1 - h(x-\beta) + c h(x-\beta) \\= a+(x^2-a-b)h(x-\alpha)-(x^2-b)h(x-\alpha)h(x-\beta)+ch(x-\beta)

3.MATLAB验证

假设a=1,b=24,c=12,\alpha=-5,\beta=6,那么我们可以尝试作图验证:
代码为:

得到结果为:

没毛病!heaviside function在控制论以及信号处理中经常会用到,所以用它来表达分段函数还是很有用哒。丢掉你的if...else...吧!

4.参考资料

StackExchange:How to rewrite a piecewise function in terms of the Heaviside function
Cmd Markdown 公式指导手册
CMD Markdowns可在线编辑。
List of LaTeX mathematical symbols
Katex渲染问题,公式换行\ 不管用 #224

Posted in: Academic 無涯齋
13 views
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Comments

Be the first to comment.

Leave a Reply

返回顶部