小编Bil*_*ine的帖子

Matlab代码近似指数函数

在处理大和负实数时,有没有人知道如何使下面的Matlab代码更准确地逼近指数函数?

例如,当x = 1时,代码效果很好,当x = -100时,它应该更接近3.7201e-44时返回8.7364e + 31的答案.

代码如下:

s=1
a=1;
y=1;
for k=1:40
    a=a/k;
    y=y*x;
    s=s+a*y;
end
s
Run Code Online (Sandbox Code Playgroud)

欢迎任何帮助,欢呼.

编辑:

好的,问题如下:

这段代码接近哪个数学函数?(我说指数函数.)当x = 1时它是否有效?(是的.)不幸的是,当x = -100时使用它会产生答案s = 8.7364e + 31.您的同事认为该程序中存在一个愚蠢的错误,并请求您的帮助.仔细解释行为并给出一个简单的修复,产生更好的结果.[您必须建议对上述代码进行修改,或者使用它.您还必须检查您的简单修复工作.]

所以我有点明白,当术语之间存在16个(或更多)数量级时,问题会围绕大数字,精度会丢失,但解决方案不能解决.

谢谢

编辑:

所以最后我接受了这个:

s = 1;
x = -100;
a = 1;
y = 1;
x1 = 1;

for k=1:40
    x1 = x/10;
    a = a/k;
    y = y*x1;
    s = s + a*y;
end

s = s^10;
s
Run Code Online (Sandbox Code Playgroud)

不确定它是否完全正确但它会返回一些好的近似值.

exp(-100)= 3.720075976020836e-044 …

math matlab approximation exp

4
推荐指数
2
解决办法
8066
查看次数

标签 统计

approximation ×1

exp ×1

math ×1

matlab ×1