Тебе здесь не очень ясно (ИМХО). Я не знаю, что значит «взвешивать» значения в A с помощью B. Предполагаем ли мы, что мы должны рассматривать B как функцию от A? Поэтому мы ищем частоту (A) такую, что B достигает своего максимального значения, КАК ФУНКЦИЯ A?
Если это так, то это просто проблема интерполяции, а затем максимизации интерполяции. В зависимости от того, какие инструменты у вас есть, вы можете выполнить сплайн-интерполяцию, как показано на этом рисунке. Тогда было бы просто проблемой найти максимальное значение этого сплайна.
Эта сплайн-модель предполагает, что максимальное значение Bmax = 4.4132, что происходит при A = 16.341.
В качестве альтернативы можно просто вставить интерполяционный полином через точки. Ваша кривая не настолько шумная, что полином 4-й степени будет некорректным. (Если бы у вас было больше очков, полином высокого порядка был бы ужасной идеей. Тогда вы могли бы использовать кусочный интерполятор Лагранжа.) Готово в MATLAB,
>> P = polyfit(A,B,4)
P =
6.6992e-05 -0.0044803 0.084249 -0.34529 2.3384
Я построю сам полином.
>> ezplot(@(x) polyval(P,x),[5,30])
Мы можем найти максимальное значение, ища корень (нулевое значение) производной функции. Поскольку производная является кубическим полиномом, существует три корня. Только один из них представляет интерес.
>> roots(polyder(P))
ans =
31.489
16.133
2.5365
Корень интереса находится в 16.133, что согласуется с прогнозом от интерполяционного сплайна.