是否可以计算极限点?

时间:2016-10-19 10:12:27

标签: matlab math

假设我有一个函数fun=@(x)(1-exp(-x))./x。我想要计算的是fun([0,1])。可以在x->0fun->1时计算出来。但是,如果我只输入fun([0,1]),则第一个元素是NaN。是否可以使用命令fun(0)给出1

2 个答案:

答案 0 :(得分:1)

就我所知,限制的数值计算在文献和数字包中很少得到解决。它可能更像是一门艺术而非技术。

可能的原因之一是限制的计算确实挑战了数值精度,因为它涉及任意大的值或任意接近给定值的值,导致任何类型的溢出或交叉错误和其他病理。所以直接攻击通常是不可行的。

在某些情况下,可以使用特殊函数来解决不稳定的计算问题。例如,函数e^x-1在Matlab中随expm1一起提供,expm1(x) / x的限制可以比(exp(x) - 1) / x更好地估算。

泰勒近似通常会有所帮助,但好​​的解决方案通常需要一定量的符号计算。在给定的情况下,可以在简化后建立(e^x - 1) / x ~ 1 + x/2 + x²/6 + x³/24...

答案 1 :(得分:0)

好吧,你不能计算fun(0),因为这是一个极限点,所以显然MATLAB会给你一个NaN值。您需要接近 x=0才能无限接近1,但实际上 。那是你的数学。你可以做的是创建一个像

这样的函数
function result = fun(x)

result = (1-exp(-x))./x;
result(x==0)=1; % remove the singularity if present