我希望使用MATLAB的Symbolic Math工具箱为Riemann Stieltjes积分编写代码。定理的一个必要条件是函数的导数必须是连续的。我正在使用diff
函数来查找符号派生词。函数的域是一个包含无限多个点的闭合实际区间,因此我无法检查每个点。我想知道MATLAB中是否有任何内置函数可以确定函数是否连续。
有什么方法可以检查通过区分我的输入函数获得的函数是否是连续的?
答案 0 :(得分:5)
是的,您可以通过MuPAD的discont
函数执行此操作,该函数列出了函数的不连续性。 MuPAD函数可以是called from within Matlab。例如:
syms x;
f = 1/(x*(x-1));
feval(symengine,'discont',f,x)
返回[ 1, 0]
,f
的两极。如果您想绑定搜索域,一种方法是通过assumptions
。现在:
syms x;
assume(x>=0);
assumeAlso(x<1/2);
f = 1/(x*(x-1));
feval(symengine,'discont',f,x)
只返回0
。或者,您可以使用MuPAD的字符串表示法:
syms x;
f = 1/(x*(x-1));
feval(symengine,'discont',f,[char(x) '=0.5..2'])
返回1
。显然,如果域上的不连续列表不为空(参见isempty
),则该函数不是连续的(即,不连续)。
我建议您阅读discont
的文档。我不知道它有多可靠,或者它是否会遇到更复杂的功能。