У меня есть функция, сумма трех показателей:
F = f1*exp1 + f2*exp2 + f3*exp3
точно
F=1-((1-f(2)-f(3)).*(exp(-abs(data)./a(1)))+((1-f(1)-f(3)).*(exp(-abs(data)./a(2))))+((1-f(1)-f(2)).*(exp(-abs(data)./a(3)))));
где f1, f2, f3 - дробь, и у каждого выражения есть один параметр, назовите его a1, a2 и a3.
Итак, подгонка этой функции к экспериментальным данным дает шесть параметров (f1, f2, f3, a1, a2, a3).
Обратите внимание, что
a1 > a2 > a3
и
f1 + f2 + f3 = 1
Подгонка выполняется для нескольких временных интервалов (назовите это t1, t2, t3 ....). Таким образом, для каждого таймлага есть один набор из шести параметров.
Параметры a1, a2 и a3 увеличиваются с временной задержкой линейным образом (a1 (t1)
Что мне нужно, так это наклон a1 (t), a2 (t), a3 (t) и дробей.
Проблема в том, что, когда я подгоняю функцию для каждого временного интервала, у меня часто возникает ситуация, когда a1 и a2 приятно повышаются (идеальное линейное соответствие), но a3 понижается.
Также у меня есть проблема с дробями - я не могу взять среднее значение для каждой дроби, потому что когда я добавляю f1 (t) + f2 (t) + f3 (t), она никогда не равна 1.
Есть ли какой-нибудь (простой) способ уместить все сразу? Как это сделать?
Спасибо!