用 Maple 编程进行数值分析:相对误差

Programming with Maple for Numerical Analysis : Relative error

作为我课程的一部分,我正在使用 Maple 进行一些数值分析,但我不确定我使用的代码的错误在哪里。如果有人能指出我的缺陷,将不胜感激因为我好像答错了。

f(x)=sqrt((cosh(x))^2 + 1) - sinh(x)。 使用 6 位算术找到 f(4.86) 的良好近似值。 然后,用20位算术计算相对误差。 最后四舍五入到6位(有效)数字


f := sqrt(cosh(x)^2+1)-sinh(x);

f1 := evalf[6](f(4.86));
                          f1 := 0.0155

f2 := evalf(f(4.86));
                        f2 := 0.01550004

Digits := 20;
                          Digits := 20
Q4 := abs((f2-f1)/f2);
               Q4 := 0.0000025806385015780604437

Digits := 6;
                          Digits := 6
evalf[6](Q4);
                         0.00000258064

谢谢大家

你犯了一个语法转录错误,还有一个 Maple 编程错误。

你的第一行是

f := sqrt(cosh(x)^2+1)-sinh(x);

但您随后将其称为运算符(过程),例如。 f(4.86) 并获取一个数值。因此,您最初一定使用过类似此过程的方法。

f := x -> sqrt(cosh(x)^2+1)-sinh(x);

所以这可能只是在此处发帖时的转录错误。

你在计算中犯了一个编程错误

f2 := evalf(f(4.86));

之前将 working-precision 环境变量 Digits 设置为 20。因此,您仅以默认的 Digits=10 工作精度计算了 f2。但是从问题的措辞看来,您似乎也被要求以 20 位工作精度计算 f2

您的代码可能修改如下:

restart;
f := x -> sqrt(cosh(x)^2+1)-sinh(x):

f1 := evalf[6](f(4.86));
                  f1 := 0.0155

Digits := 20:

f2 := evalf(f(4.86));
           f2 := 0.015500036806894590

Q4 := abs((f2-f1)/f2);
       Q4 := 0.0000023746327217512077767

evalf[6](Q4);
                 0.00000237463

您使用了两种不同的机制来指定工作精度。你也可以这样做(在方法上稍微更一致)如下:

restart;
f := x -> sqrt(cosh(x)^2+1)-sinh(x):

f1 := evalf[6]( f(4.86) );
                  f1 := 0.0155

f2 := evalf[20](f(4.86));
           f2 := 0.015500036806894590

rel := evalf[20]( abs((f2-f1)/f2) );
       rel := 0.0000023746327217512077767

evalf[6]( rel );
                 0.00000237463

我总是有可能误解了这个问题。想要的答案是什么?