查找给定范围内的缺失值

时间:2020-06-04 13:53:56

标签: c arrays linear-algebra algebra

如何计算特定数字范围内的所有缺失值 其中缺少的数字等于 next previous 平均值 给定输入范围的值

示例

缺失值数= 2

数组: [5,?,?,20]

结果: 5,10,15,20

简单地做(5 + 25)/ 4 + 1,即缺少值+1会给您5,我们将其加到我们的第一个值中会得到5 10 15 20,但不适用于其他示例,例如

[6,?,?,?,20] (缺少3个值)

2 个答案:

答案 0 :(得分:3)

也许您可以尝试计算已知的第一个和最后一个数字之间的差,在示例中为20-5 = 15,现在将其除以要获取最后一个的“步数”即可一个(缺失数字的数量+ 1),在示例中为15/3 = 5,现在您只需将该数量添加到每个元素中即可得到下一个。

类似这样的东西:

[5,(5 + 5),((5 + 5)+5),20]

您可以验证它是否也适用于第二个示例,并且缺少3个值。

答案 1 :(得分:3)

您的条件是每个数字等于下一个和上一个数字的平均值,您可以这样写:

x i =( x i +1 < / sub> + x i -1 )/ 2

可以很容易地重新排列为:

x i - x i -1 = x i +1 - x i

换句话说,相邻数字之间的差异都相同。

所以这只是一个简单的线性插值。正如您用C标记的一样,下面是一个简单的C函数来评估您的示例:

#include <stdio.h>

void calc_values(float start, float end, int n) {
  int i;
  for(i = 1; i <= n; i++)
    printf("%f\n",
       start + (end - start) * i / (n + 1));
}

int main()
{
   calc_values(6, 20, 3);
   return 0;
}

给出:

9.500000
13.000000
16.500000