2016-10-20 9 views
2

Я пытаюсь соответствовать моим данным к этой кривой:Как получить лучшее экспоненциальное соответствие с помощью GNUplot?

f(x) = b + n*exp(-x/u) 
fit f(x) "data1" using 2:3 via b,n,u 

Я получаю эту подгонку, которая не близка к теории:

image of bad automatic fit

Затем я использую исходные параметры из теории и без пересчитывая приступ, я получаю гораздо более приятный результат.

Если я перепробовал соответствие, он игнорирует мои начальные параметры после первой итерации и возвращается к первому результату.

Я пробую пару вещей. Я уменьшаю FIT_LIMIT на 20 порядков, но это ничего не меняет. Я также смещаю данные с ошибками, поэтому я добавляю гораздо больше веса в первые несколько точек данных, а затем я получаю несколько лучше, но все равно плохо.

Это выход:

image of output of values

Вопросы:

  1. Это мне не ясно, является ли этот вопрос математической, или GNUPLOT просто делает вещи неправильно, остановив на некоторые местные минимум или нанести какой-то лимит или что-то подобное. Я забыл все о том, как работает хи-квадрат.

  2. Есть ли способ получить лучшую автоматическую подгонку, в идеале, прежде чем разрешать включать ошибки в мои данные?

ответ

3

Две идеи:

  1. Вы, кажется, есть большое количество точек данных вокруг (0,0), которые выглядят как артефакты и, вероятно, влияет на посадку.

  2. Попробуйте фитинга в логарифмической области, т.е .:

    f(x) = b + n*exp(-x/u) 
    fit log(f(x)) "data1" using 2:(log($3)) via b,n,u 
    

    Этот трюк обычно работает, если большие значения доминируют припадок - как их отклонения от аппроксимирующей кривой весят меньше в логарифмической области. Это, похоже, не относится к делу, но может быть, если вы обратитесь к пункту 1.

2

На каком основании вы предполагаете, что посадка плоха? Вам нужно больше, чем ваше визуальное, субъективное впечатление.

Вот ваш предполагается функция:

y = b + n*exp(-x/u) 

Попробуйте фитинг эту функцию:

z = y-b = n*exp(-x/u) 

Taking натуральный логарифм обеих сторон:

ln(z) = ln(n*exp(-x/u)) = ln(n) - x/u 

Это простой линейной регрессии с зависимая переменная x, независимая переменная ln(z), перехват ln(n) и наклон -1/u.

Проблема в том, что ваши данные оказываются асимптотическими при x = 0, что будет предлагать мне функцию формы 1/x. Возможно, плохая подгонка связана с выбором функции.

Вы сказали «теория». Какое явление представляют данные?

+0

Спасибо! Это было просто артефакты, чтобы повернуть счетчик, прежде чем запускать остальные настройки! Я полностью пропустил это. – PeterD

+0

Похоже, вы должны были принять ответ от Wrzlprmft, а не моего. – duffymo