如何在MATLAB中摆脱这个数值问题?

How to get rid of this numerical issue in MATLAB?

提问人:Paddy 提问时间:6/4/2021 最后编辑:Sardar UsamaPaddy 更新时间:6/8/2021 访问量:38

问:

我有一个数组来表示时间:

t = linspace(-30,30,N);

然后我执行以下操作:

plot(sech(t) + 1e-4 - sech(t))

它给出了以下图:

plot

通常,这不会是一个大问题,但有时我会处理幅度为量级的信号,这开始干扰那里。1e-4

MATLAB 精密 浮动精度

评论

0赞 Paddy 6/4/2021
sech(t) 在 [0,1] 范围内。sech(t) 的值最多是 1e+4 乘以 1e-4。不幸的是,这是基于我试图建模的一个现实问题。
0赞 Eric Postpischil 6/4/2021
你不是真的在密谋,是吗?如果你想绘制它,你可以绘制。显示您正在绘制的实际表达式。sech(t) + 1e-4 - sech(t)1e-4
0赞 Paddy 6/4/2021
哦,这不是我所策划的。我正在处理一个问题,我收到一个直流扰动信号(sech(t) + 1e-4),并且我事先知道实际信号(sech(t))。所以在这里我需要减去两者以获得扰动。我遇到了一些问题,因为当我执行上述操作时,我会得到一个非常不正确的问题解决方案,但是当我手动提供 1e-4 时,我会得到正确的解决方案。这时我以为我会策划这个,我看到了这个......
0赞 Paddy 6/4/2021
..理想情况下,对于我将要执行的其他操作,我需要输入为 1e-4。我不应该事先知道两个信号之间的直流差异。精度误差似乎搞砸了东西。
0赞 Eric Postpischil 6/5/2021
您知道这里的误差很小,并且视大小是图形比例的失真吗?绘制一个垂直比例尺的图形是不合理的,该比例尺相对于该值在 10^-12 左右。将 y 轴设置为从 0 到 2e-4,这样 1e-4 信号就会在中间,并且不会有任何可见的变化。

答: 暂无答案