matlab 计算的误差

来源:百度知道 编辑:UC知道 时间:2024/05/10 04:47:06
A(2)=(A(1)*p(1)*cosh(p(1)*(x(2)-x(1)))+B(1)*p(1)*sinh(p(1)*(x(2)-x(1))))/p(2);
B(2)=A(1)*sinh(p(1)*(x(2)-x(1)))+B(1)*cosh(p(1)*(x(2)-x(1)));
test=A(2)+B(2)

这是我的算式 由于有指数函数 所以matlab算出来的test误差都跟实际的答案有点大

如cosh(50)=2592352764293536022528.
exp(50)/2=2592352764293536022528.
它直接把cosh中的exp(-50)忽略了
如何不被忽略??

不是忽略,是运算精度就这么多,达不到再高要求了。

exp(50)/2 是21次方数,exp(-50)2是负22次方数,加一起,小数点左边要22+位,右边23+位,做不到的。。。

cosh(50)和exp(50)在浮点表示下是一样的,如果你需要算的东西比如test能看出理论和实际的误差很大,说明你的计算格式里面有严重的相消,应该注重调整计算格式