为什么用 deg2rad 转换角度和乘以 pi/180 的结果不同?

Why do the outcomes of converting an angle with deg2rad and by multiplying with pi/180 differ?

我正在使用 Matlab 函数 deg2rad 将角度从度数转换为弧度(很明显)。我将它们用于角度 alphabeta,它们又用于插入一些表格数据 f(alpha, beta),这是关于 alphabeta 的度。出于我的目的,我以弧度为单位使用它们,这样我就必须时不时地来回转换。

现在,我发现 - 与使用 f(pi/180*alpha, pi/180*beta) 相反 - 每当我使用 f(deg2rad(alpha), deg2rad(beta)) 进行插值时,插值都在边界处的插值区域之外。即,插值边界位于 alpha = [-4, 4]beta = [-3, 3],并且在使用 deg2rad 时沿这些边界进行插值会得到 NaN。因此,这看起来像是某种舍入或机器精度误差。

现在,作为 MWE,假设我想检查 deg2rad(-3) == -3*pi/180,这给了我:

>> deg2rad(-3) == -3*pi/180
ans =
  logical
   0

我的问题如下:

  1. 在插值区域边缘附近操作时,使用 deg2rad 对我来说基本上没有用,我该如何防止这种行为?
  2. 除了与 pi/180 相乘之外,deg2rad 函数还有什么作用?

提前致谢。

P.s。它比我想象的还要奇怪,因为不同的角度,它确实有效:

>> deg2rad(2) == 2*pi/180
ans =
  logical
   1

在 MATLAB 中输入 edit deg2rad 即可回答您的问题。它计算:

angleInRadians = (pi/180) * angleInDegrees;

当然,您的版本 ((a*pi)/180) 和 MATLAB (a*(pi/180)) 的操作顺序不同。这种不同的顺序会导致舍入误差不同。

如果舍入错误导致您的函数出现问题,则您的函数不稳定,需要修复。