2013-12-13 4 views
0

В одном из наших экспериментов мы построили график времени выполнения программы для разных значений переменной, например x cnad называть его plot1. Мы считаем, что время выполнения программы прямо пропорционально переменной, например a и обратно пропорционально b. Поэтому мы также построили графики для a и b против x и назовем их plot2 и plot3.Проверка итогов двух графиков

Чтобы убедиться, что другой фактор не задействован, мы хотим каким-то образом объединить графики2 и графики3, так что то, что мы получаем, близко к plot1. Я думал о заговоре a/b и пытался найти бинарный поиск, чтобы найти константу k.

Есть ли лучший способ сделать это?

Спасибо,

ответ

0

Не уверен, что, если мое понимание вашей проблемы правильно, но:

У нас есть программа, которая принимает один входной х и дает нам ряд (это среда) Т (х). Кроме того, мы имеем две другие функции: a (x)> = 0 и b (x)> 0. Тогда существуют константы f, g, так что T (x) ~ f * a (x), T (x) ~ g/b (x). Имеются функции a (x) и b (x), которые легко вычислимы. Кроме того, мы можем вычислить T (x) для некоторых значений x, но этот расчет довольно дорог. Мы хотим построить оценку F: T (x) = F (a (x), b (x)). Важно, чтобы обе зависимости T (x) ~ f * a (x) и T (x) ~ g/b (x) не были точными (иначе мы могли бы просто измерить T (1000), взять f = T (1000)/a (1000) и имеют формулу для T (x)).

Как правило, при поиске параметров рекомендуется преобразовать выражение так, чтобы оно стало линейным по отношению к параметрам (таким образом мы можем использовать метод наименьших квадратов). Я бы искал F в форме F (a, b) = exp (C) * a^(k + 1) * b^(k). Это предполагает соотношению

ln(T(x)) ~ C+(k+1)*ln(a(x))+k*ln(b(x)) 

Или, после группировки,

ln(T(x))-ln(a(x)) ~ k*[ln(a(x))+ln(b(x))]+C 

Теперь мы измеряем Т (х) для некоторых значений х, построить точки (и, v) и = п (Т (x)) - ln (a (x)), v = ln (a (x)) + ln (b (x)) и попытаемся найти переменные k, C, так что прямая u = k * v + C лежит ближе всего к построенным точкам (линейными квадратами или любым другим методом). Если k очень близко к 0 или -1, это будет означать, что либо приближение f * a, либо g/b является более точным, а другое должно быть отброшено.

P.S. Может быть хорошей идеей выбрать значения x для измерения T (x), так что ln (a (x)) + ln (b (x)) изменяется как можно больше.

Смежные вопросы