Matlab 拒绝计算极限

Matlab 拒绝计算极限

我有一些函数句柄,它有一个变量输入 x,以及一些参数。我试图计算当 x 从该函数上方变为零时的极限,对于不同的参数值,因此对于给定的 a、b 和 c,我输入:

limit(f(x, a, b, c), x, 0, 'right')).

由于某种原因,Matlab 能够计算 a、b 和 c 的某些值的极限,但无法计算其他值的极限。更糟糕的是,对于那些有问题的参数,Matlab 甚至无法计算 x = 0.1 处的极限,即使函数在那里定义!

编辑:更具体地说:

syms f(x, a, b, c)
f(x,a, b, c) = ((x./(2*(1+a.*tanh(x*b).*tanh(x*c)))).*
(tanh(x*b)+tanh(x*c) + x.^2.*(tanh(x*b)+a.*tanh(x*c)) - ((tanh(x*b)+tanh(x*c) + 
x.^2.*(tanh(x*b)+a.*tanh(x*c))).^2 - 4.*tanh(x*b).*tanh(x*c).*
(1-a).*(1+a.*tanh(x*b).*tanh(x*c)).*(1+x.^2)).^0.5)).^0.5;

我实际上感兴趣的是函数的导数(在 x = 0 处未定义):

g = diff(f,x);

好例子:

double(limit(g(x, 0.3, 5, 5), x, 0, ‘right’)
ans = 1.5038

不好的例子(甚至忘记零处的极限,而是计算 x = 0.1):

g(0.1, 0.3, 5, 10)
ans = 1.4914

double(limit(g(x, 0.3, 5, 10), x, 0.1, ‘right’) 
ans = limit(((tanh(5*x) + tanh(10*x) - …

相关内容