Пользовательский линейный подбор кривой

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

В приложении Curve Fitting можно использовать Custom Equation подгонка, чтобы определить ваши собственные линейные или нелинейные уравнения. Пользовательская подгонка уравнения использует нелинейный метод наименьших квадратов подходящая процедура.

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

Совет

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

Выбор линейной подходящей подгонки на заказ в интерактивном режиме

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

    Приложение Curve Fitting создает аппроксимацию полиномом по умолчанию.

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

    Уравнение в качестве примера появляется, когда вы выбираете Linear Fitting из списка.

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

  4. Более низкие выводы информации на экран уравнение в качестве примера. Нажмите Edit, чтобы изменить термины в качестве примера в диалоговом окне Edit Custom Linear Terms и определить ваше собственное уравнение.

Для примера сочтите целесообразным Пользовательские Линейные Полиномы лежандра в Приложении Curve Fitting.

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

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

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

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

  1. Идентифицируйте, что линейная модель называет вас, должен ввести к fittype. Например, модель

    a*log(x) + b*x + c
    линейно в aB, и 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)

Для примера сочтите целесообразным Пользовательские Линейные Полиномы лежандра в Командной строке.

Соответствуйте пользовательским линейным полиномам лежандра

Приспособьте пользовательские линейные полиномы лежандра в приложении Curve Fitting

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

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

Данные собраны путем размещения твердотельных детекторов в значениях Θα в пределах от 10o к 240o в 10o шаг.

Иногда полезно описать переменную, описанную в зависимости от угла в терминах Полиномов лежандра

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

где Pn (x) является Полином лежандра степени n, x - то, потому что (Θα), и an коэффициенты подгонки. Для получения информации о генерации Полиномов лежандра смотрите legendre функция.

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

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

Pn(x)=12nn!(ddx)n(x21)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)(3x21)+a4(18)(35x430x2+3)

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

    load carbon12alpha
    

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

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

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

  2. Откройте приложение Curve Fitting путем ввода:

    cftool

  3. В приложении Curve Fitting выберите angle и counts для X data и Y data, чтобы создать аппроксимацию полиномом по умолчанию к этим двум переменным.

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

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

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

    1. Поменяйте имена Coefficients на a2, a4, и a0.

    2. Измените Terms для a2 к

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

      Обновления приложения Curve Fitting подгонка, когда вы редактируете термины.

    3. Измените Terms для a4 к

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

      Подгонка появляется в приложении Curve Fitting.

  • Переименуйте Fit name в Leg4Even.

  • Отобразите остаточные значения путем выбора View> Residuals Plot.

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

  • Исследуйте числовые результаты подгонки в панели Results. Посмотрите на каждое содействующее значение и его доверительные границы в круглых скобках. 95% доверительных границ указывают, что коэффициенты, сопоставленные с a 0 (x) и a 4 (x), известны справедливо точно, но что a 2 (x) коэффициент имеет относительно большую неопределенность.

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

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

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

    y2(x)=y1(x)+a1x+a3(12)(5x33x)

  • Переименуйте новую подгонку к Leg4EvenOdd.

  • Нажмите Edit, чтобы изменить термины уравнения. Диалоговое окно Edit Custom Linear Terms открывается.

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

    1. Щелкните + кнопка, чтобы добавить термин дважды, добавить нечетные термины Лежандра.

    2. Поменяйте новые содействующие имена на a1 и a3.

    3. Измените Terms для a1 к

      cos(x)

    4. Измените Terms для a3 к

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

  • Наблюдайте новую подгонку, построенную в приложении Curve Fitting, и исследуйте числовые результаты в панели Results.

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

  • Чтобы сравнить подгонки рядом друг с другом, выберите мозаику Left/Right. Можно отобразить только графики путем сокрытия подходящих настроек и панелей результатов с помощью приложения Curve Fitting меню View.

Соответствуйте пользовательским линейным полиномам лежандра в командной строке

Подбирайте ту же модель в командной строке, которую вы создали в приложении Curve Fitting.

  1. Чтобы использовать линейный алгоритм подбора, задайте массив ячеек или массив строк терминов модели как вход к fittype функция. Используйте тот же Terms, который вы ввели в приложение Curve Fitting для 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 функция.