matlab 计算的误差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误差
来源:学生作业帮助网 编辑:六六作业网 时间:2025/01/12 08:11:04
matlab 计算的误差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误差
matlab 计算的误差
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)忽略了
如何不被忽略?
matlab 计算的误差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误差
不是忽略,是运算精度就这么多,达不到再高要求了.
exp(50)/2 是21次方数,exp(-50)2是负22次方数,加一起,小数点左边要22+位,右边23+位,做不到的.
cosh(50)和exp(50)在浮点表示下是一样的,如果你需要算的东西比如test能看出理论和实际的误差很大,说明你的计算格式里面有严重的相消,应该注重调整计算格式