Matlab函数判断一个函数是否连续?
Matlab function to determine if a function is continous or not?
我希望使用 MATLAB 的符号数学工具箱为黎曼斯蒂尔切斯积分编写代码。该定理成立的必要条件是函数的导数必须是连续的。我正在使用 diff
函数来查找符号导数。函数的域是一个包含无限多点的封闭实区间,所以我无法检查每个点。我想知道 MATLAB 中是否有任何内置函数可以确定函数是否连续。
有什么方法可以检查我的输入函数微分得到的函数是否连续?
是的,您可以通过 MuPAD's discont
function, which lists the discontinuities of a function. MuPAD functions can be called from within Matlab 的方式完成此操作。例如:
syms x;
f = 1/(x*(x-1));
feval(symengine,'discont',f,x)
returns[ 1, 0]
,f
的两个极点。如果您想绑定您的搜索域,一种方法是通过 assumptions
。现在:
syms x;
assume(x>=0);
assumeAlso(x<1/2);
f = 1/(x*(x-1));
feval(symengine,'discont',f,x)
只是 returns 0
。或者,您可以使用 MuPAD 的字符串表示法:
syms x;
f = 1/(x*(x-1));
feval(symengine,'discont',f,[char(x) '=0.5..2'])
其中 returns 1
。显然,如果域上的不连续点列表不为空(参见 isempty
),则函数不连续(即不连续)。
我建议阅读 discont
的文档。我不知道它有多可靠,或者它是否会遇到更复杂的功能。
我希望使用 MATLAB 的符号数学工具箱为黎曼斯蒂尔切斯积分编写代码。该定理成立的必要条件是函数的导数必须是连续的。我正在使用 diff
函数来查找符号导数。函数的域是一个包含无限多点的封闭实区间,所以我无法检查每个点。我想知道 MATLAB 中是否有任何内置函数可以确定函数是否连续。
有什么方法可以检查我的输入函数微分得到的函数是否连续?
是的,您可以通过 MuPAD's discont
function, which lists the discontinuities of a function. MuPAD functions can be called from within Matlab 的方式完成此操作。例如:
syms x;
f = 1/(x*(x-1));
feval(symengine,'discont',f,x)
returns[ 1, 0]
,f
的两个极点。如果您想绑定您的搜索域,一种方法是通过 assumptions
。现在:
syms x;
assume(x>=0);
assumeAlso(x<1/2);
f = 1/(x*(x-1));
feval(symengine,'discont',f,x)
只是 returns 0
。或者,您可以使用 MuPAD 的字符串表示法:
syms x;
f = 1/(x*(x-1));
feval(symengine,'discont',f,[char(x) '=0.5..2'])
其中 returns 1
。显然,如果域上的不连续点列表不为空(参见 isempty
),则函数不连续(即不连续)。
我建议阅读 discont
的文档。我不知道它有多可靠,或者它是否会遇到更复杂的功能。