首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Matlab中的狄拉克概率测度

Matlab中的狄拉克概率测度
EN

Stack Overflow用户
提问于 2017-02-10 00:46:58
回答 1查看 242关注 0票数 0

我想在Matlab中实现概率度量的密度。为此,我将density定义为函数句柄,使得某个函数f(给定为函数句柄)在区间a,b上的积分可以通过下式计算

代码语言:javascript
运行
复制
syms x
int(f(x)*density(x),x,a,b)

当涉及到狄拉克度量时,问题是

代码语言:javascript
运行
复制
int(dirac(x),x,0,b)

为所有b>0提供值1/2而不是1。但是,如果我键入

代码语言:javascript
运行
复制
int(dirac(x),x,a,b)

其中,a<0和b>0的返回值应该是1。由于这个原因,乘以2是不够的,因为我希望我的密度对所有间隔a,b都有效。我也不想在积分之前区分不同的情况,以便代码对大类密度保持有效。

有人知道如何在Matlab语言中实现狄拉克概率度量(定义为here)吗?

EN

回答 1

Stack Overflow用户

发布于 2017-02-10 01:58:02

int(增量,0,b)没有唯一的、公认的定义。这里的问题不是你得到了“错误”的答案,而是你想以某种方式强加一个不同于Matlab所提供的增量函数的约定。(他们的选择是有理由的,但不是独一无二的。)例如,如果你在Wolfram Alpha中计算它,它会给你theta(0) -它没有被定义为任何特定的东西。这里的theta是Heaviside函数。如果您想强加您自己的约定,请实现您自己的增量函数。

编辑

在我写这个答案的时候,我看到你对这个问题写了评论,所以....请记住,狄拉克测度或狄拉克增量函数根本不是函数。您遇到的问题,以及下面描述的问题,都与试图为本质上不是函数的东西提供函数形式有关。您正在做的事情在Matlab中的框架中没有得到很好的定义。

编辑结束

为了把关于约定的观点放在上下文中,增量函数可以由不同的属性定义。一种是int(δ(X) f(x),a,b) = f(0),当a<0< b时,这不会告诉你任何关于你想要的积分的信息。另一种方法是将其定义为一个限制,这可能会导致从Matlab得到一个答案。一个(但不是唯一的选择)是当方差变为0时零均值高斯的限制。

如果您想在<= 0< b时使用约定int(δ(X) f(x),a,b) = f(0),这可能不会给您带来太多麻烦,但请记住,相对于从Matlab中获得的答案,它是您选择的一个约定,而不是“正确”或“错误”答案。

作为相关说明,在x=0的阶跃函数(希维赛德函数)上也有类似的选择。有一些约定是(a)未定义的,(b) -1,(c) +1,和(d) 1/2。没有一个是“错误的”。这可能大致对应于狄拉克函数的选择,因为希维赛德函数(大致)是狄拉克函数的积分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42142324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档