exponenta event banner

Пользовательский линейный фитинг

Сведения о пользовательских линейных моделях

В приложении «Фитинг кривой» можно использовать Custom Equation для определения собственных линейных или нелинейных уравнений. Пользовательское уравнение подгонки использует нелинейную процедуру подгонки методом наименьших квадратов.

Можно определить пользовательское линейное уравнение в Custom Equation, но нелинейный фитинг менее эффективен и обычно медленнее, чем линейный фитинг с наименьшими квадратами. Если требуется линейный фитинг методом наименьших квадратов для пользовательских уравнений, выберите Linear Fitting вместо этого. Линейные модели - это линейные комбинации (возможно, нелинейных) членов. Они определяются уравнениями, линейными в параметрах.

Совет

Если требуется линейный фитинг методом наименьших квадратов для пользовательских уравнений, выберите Linear Fitting. Если вы не знаете, можно ли выразить уравнение как набор линейных функций, то выберите Custom Equation вместо этого. См. раздел Интерактивный выбор пользовательского вписывания уравнений.

Выбор пользовательского вписывания линейного фитинга в интерактивном режиме

  1. В приложении «Фитинг кривой» выберите некоторые данные кривой в списках данных X и Y. Вы можете видеть только Linear Fitting в списке типов моделей после выбора данных кривой, поскольку Linear Fitting для кривых, а не для поверхностей.

    Приложение «Фитинг кривой» создает аппроксимацию полинома по умолчанию.

  2. Изменение типа модели с Polynomial кому Linear Fitting в списке типов модели.

    Пример уравнения появляется при выборе Linear Fitting из списка.

  3. Вы можете изменить x и y к любым допустимым именам переменных.

  4. В нижнем поле отображается пример уравнения. Щелкните Править (Edit), чтобы изменить примерные термины в диалоговом окне Править пользовательские линейные термины (Edit Custom Linear Terms) и определить собственное уравнение.

Пример см. в разделе Подгонка пользовательских линейных многочленов легенды в приложении «Фитинг кривой».

Выбор линейного фитинга в командной строке

Чтобы использовать алгоритм линейной подгонки, укажите массив ячеек элементов модели в качестве входных данных для fit или fittype функции. Не включайте коэффициенты в выражения для терминов. Если существует постоянный член, используйте «» 1 «» в качестве соответствующего выражения в массиве ячеек.

Задание линейной модели следующей формы:

 coeff1 * term1 + coeff2 * term2 + coeff3 * term3 + ...
где нет коэффициента в любом из term1, term2и т.д. используйте массив ячеек, где каждый член без коэффициентов задается в массиве ячеек строк следующим образом:
LinearModelTerms = {'term1', 'term2', 'term3', ... }

  1. Определение терминов линейной модели, которые необходимо ввести fittype. Например, модель

    a*log(x) + b*x + c
    является линейным в a, b, и c. Имеет три термина log(x), x, и 1 (потому что c=c*1). Чтобы указать эту модель, используйте этот массив элементов ячейки: LinearModelTerms = {'log(x)','x','1'}.

  2. Использование массива ячеек членов линейной модели в качестве входных данных для fittype функция:

    linearfittype = fittype({'log(x)','x','1'})
    linearfittype = 
    
         Linear model:
         linearfittype(a,b,c,x) = a*log(x) + b*x + c

  3. Загрузите некоторые данные и используйте fittype в качестве входных данных для fit функция.

    load census
    f = fit(cdate,pop,linearfittype)
    f = 
    
         Linear model:
         f(x) = a*log(x) + b*x + c
         Coefficients (with 95% confidence bounds):
           a =  -4.663e+04  (-4.973e+04, -4.352e+04)
           b =        25.9  (24.26, 27.55)
           c =   3.029e+05  (2.826e+05, 3.232e+05)
    Можно также задать массив ячеек членов линейной модели в качестве входных данных для fit функция:
    f = fit(x,z,{'log(x)','x','1'})

  4. Постройте график посадки и данных.

    plot(f,cdate,pop)

Пример см. в разделе Вписать пользовательские линейные многочлены легенды в командной строке.

Вписать пользовательские линейные многочлены легенды

Подгонка пользовательских линейных многочленов легенды в приложении «Фитинг кривой»

В этом примере показано, как подгонять данные с помощью нескольких пользовательских линейных уравнений. Данные генерируются и основаны на ядерной реакции 12C (e, e 'α) 8Be. В уравнениях используются суммы многочленов Лежандра.

Рассмотрим эксперимент, в котором 124 МэВ электронов рассеяны от 12C ядер. В последующей реакции происходит выброс альфа-частиц и образование остаточных ядер 8Be. Анализируя количество испускаемых альфа-частиц как функцию угла, можно вывести определённую информацию относительно ядерной динамики 12C. Кинематика реакции показана далее.

Данные собирают, помещая твердотельные детекторы со значениями, составляющими в диапазоне от 10 до 240 °, с приращениями в 10 °.

Иногда полезно описать переменную, выраженную как функцию угла в терминах многочленов Лежандра

y (x) =∑n=0∞anPn (x)

где Pn (x) - многочлен Лежандра степени n, x - cos (Startα), а а - коэффициенты аппроксимации. Сведения о создании многочленов Лежандра см. в разделеlegendre функция.

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

Можно создать многочлены Лежандра с формулой Родригеса:

Pn (x) = 12nn! (ddx) n (x2 − 1) n

Многочлены Легендра до четвёртой степени

n

Pn (x)

0

1

1

x

2

(1/2) (3x2 – 1)

3

(1/2) (5x3 3x)

4

(1/8) (35x4 30x2 + 3)

В этом примере показано, как подгонять данные с помощью полинома Лежандра четвертой степени только с четными членами:

y1 (x) = a0 + a2 (12) (3x2 1) + a4 (18) (35x4 − 30x2 + 3)

  1. Загрузка 12C данных об альфа-выбросах путем ввода

    load carbon12alpha
    

    Рабочая область теперь содержит две новые переменные:

    • angle - вектор углов (в радианах) в диапазоне от 10o до 240o с шагом 10o.

    • counts - вектор количества необработанных альфа-частиц, которые соответствуют углам излучения в angle.

  2. Откройте приложение «Фитинг кривой», введя:

    cftool

  3. В приложении «Фитинг кривой» выберите angle и counts для данных X и Y для создания полинома по умолчанию, соответствующего двум переменным.

  4. Изменение типа посадки с Polynomial кому Linear Fitting для создания пользовательского линейного вписывания по умолчанию.

    Вы используете Linear Fitting вместо Custom Equation тип подгонки, поскольку многочлены Лежандра зависят только от переменной предиктора и констант. Для модели будет задано уравнение y1 (x) (то есть уравнение, данное в начале этой процедуры). Посколькуangle даётся в радианах, аргумент членов Лежандра задаётся cos (Startα).

  5. Нажмите кнопку Изменить (Edit), чтобы изменить условия уравнения в диалоговом окне Редактировать пользовательские линейные термины (Edit Custom Linear Terms).

    1. Измените имена коэффициентов на a2, a4, и a0.

    2. Изменить условия для a2 кому

      (1/2)*(3*cos(x)^2-1)

      Приложение «Фитинг кривой» обновляет аппроксимацию при редактировании терминов.

    3. Изменить условия для a4 кому

      (1/8)*(35*cos(x)^4-30*cos(x)^2+3)

      Посадка появится в приложении «Фитинг кривой».

  • Переименование имени вписывания в Leg4Even.

  • Просмотрите остатки, выбрав меню «Вид» > «Остатки» «Печать».

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

  • Проверьте результаты численного вписывания на панели Результаты (Results). Посмотрите на каждое значение коэффициента и его доверительные границы в скобках. 95% доверительные границы указывают, что коэффициенты, связанные с a0 (x) и a4 (x), известны довольно точно, но что коэффициент a2 (x) имеет относительно большую неопределенность.

  • Выберите Fit > Duplicate Leg4Even, чтобы создать копию предыдущего полинома Legendre для изменения.

    Дублированная посадка появится на новой вкладке.

    Чтобы подтвердить теоретический аргумент о том, что данные альфа-излучения лучше всего описываются полиномом Лежандра четвертой степени только с четными членами, далее подгоняйте данные, используя четные и нечетные члены:

    y2 (x) = y1 (x) + a1x + a3 (12) (5x3 − 3x)

  • Переименование нового вписывания в Leg4EvenOdd.

  • Нажмите кнопку Изменить (Edit), чтобы изменить условия уравнения. Откроется диалоговое окно Править пользовательские линейные термины (Edit Custom Linear Terms).

    Отредактируйте термины следующим образом, чтобы соответствовать модели, заданной y2 (x):

    1. Нажмите кнопку +, чтобы добавить термин дважды, чтобы добавить нечетные термины Legendre.

    2. Изменение новых имен коэффициентов на a1 и a3.

    3. Изменить условия для a1 кому

      cos(x)

    4. Изменить условия для a3 кому

      pro(1/2)*(5*cos(x)^3-3*cos(x))

  • Просмотрите новое вписывание, выведенное на печать в приложении «Фитинг кривой», и проверьте числовые результаты на панели «Результаты».

    Обратите внимание, что нечетные коэффициенты Лежандра (a1 и a3), вероятно, являются кандидатами на удаление для упрощения посадки, потому что их значения малы, а их доверительные границы содержат ноль. Эти результаты указывают на то, что нечётные термины Лежандра не вносят существенного вклада в подгонку, а чётные термины Лежандра по существу не изменились по сравнению с предыдущей подгонкой. Это подтверждает, что первоначальный выбор модели в Leg4Even подгонка - лучшая.

  • Чтобы сравнить посадки бок о бок, выберите плитку «Слева/Справа». Можно отобразить только графики, скрывая настройки подгонки и области результатов с помощью меню «Вид приложения» Фитинг кривой «».

Вписать пользовательские линейные многочлены легенды в командной строке

Поместите ту же модель в командной строке, которая была создана в приложении «Фитинг кривой».

  1. Чтобы использовать алгоритм линейной подгонки, укажите массив ячеек элементов модели в качестве входных данных для fittype функция. Используйте те же термины, которые были введены в приложении «Фитинг кривой» для Leg4Even и не указывайте никаких коэффициентов.

    linearft = fittype({'(1/2)*(3*cos(x)^2-1)', ...
    '(1/8)*(35*cos(x)^4-30*cos(x)^2+3)','1'})
    linearft = 
    
         Linear model:
         linearft(a,b,c,x) = a*((1/2)*(3*cos(x)^2-1))...
           + b*((1/8)*(35*cos(x)^4-30*cos(x)^2+3)) + c

  2. Загрузить angle и counts переменные в рабочей области.

    load carbon12alpha

  3. Используйте fittype в качестве входных данных для fit и укажите angle и counts переменные в рабочей области.

    f = fit(angle, counts, linearft)
    f = 
    
         Linear model:
         f(x) = a*((1/2)*(3*cos(x)^2-1))...
         + b*((1/8)*(35*cos(x)^4-30*cos(x)^2+3)) + c
         Coefficients (with 95% confidence bounds):
           a =       23.86  (4.436, 43.29)
           b =       201.9  (180.2, 223.6)
           c =       102.9  (93.21, 112.5)

  4. Постройте график посадки и данных.

    plot(f, angle, counts)

Дополнительные сведения о терминах линейной модели см. в разделе fittype функция.