Внедрение закона Broken Power в качестве подходящей функции в Origin

Добрый день, я пытаюсь использовать построитель функций по происхождению (OriginLab), чтобы создать новую функцию, соответствующую стилю нарушения прав ( http://en.wikipedia.org/wiki/Power_law#Broken_power_law )

Итак, я думаю, что я потерял фактическую функцию. Для этого я использовал

if(x<xc) y =x^a1; if(x>xc) y = x^(a1-a2)*x^a2; if(x==xc) y = 0; 

Где xc, a1 и a2 – параметры. Тем не менее, я затем добираюсь до точки, где вам нужно выбрать кучу вещей (диапазоны параметров, сценарий, который вы запускаете, чтобы угадать начальные значения и т. Д.), И я не знаю, что добавить туда. У кого-нибудь есть опыт с этим?

One Solution collect form web for “Внедрение закона Broken Power в качестве подходящей функции в Origin”

Несмотря на то, что вопрос требует предложения с использованием OriginLab , этот использует Python, поскольку OP принял его попробовать!

Метод подбора кривой, который существует в Python, из пакета Scipy (curve_fit). Все пакеты python для окон можно скачать в jiffy от ЭТОГО ВЕБ-САЙТА ЗДЕСЬ!

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

Код для подбора примерных данных позволяет называть их x and y . Здесь параметры подгонки – a1 and a2 .

 import numpy as np # This is the Numpy module from scipy.optimize import curve_fit # The module that contains the curve_fit routine import matplotlib.pyplot as plt # This is the matplotlib module which we use for plotting the result """ Below is the function that returns the final y according to the conditions """ def fitfunc(x,a1,a2): y1 = (x**(a1) )[x<xc] y2 = (x**(a1-a2) )[x>xc] y3 = (0)[x==xc] y = np.concatenate((y1,y2,y3)) return y x = Your x data here y = Your y data here """ In the above code, we have imported 3 modules, namely Numpy, Scipy and matplotlib """ popt,pcov = curve_fit(fitfunc,x,y,p0=(10.0,1.0)) #here we provide random initial parameters a1,a2 a1 = popt[0] a2 = popt[1] residuals = y - fitfunc(x,a1,a2) chi-sq = sum( (residuals**2)/fitfunc(x,a1,a2) ) # This is the chi-square for your fitted curve """ Now if you need to plot, perform the code below """ curvey = fitfunc(x,a1,a2) # This is your y axis fit-line plt.plot(x, curvey, 'red', label='The best-fit line') plt.scatter(x,y, c='b',label='The data points') plt.legend(loc='best') plt.show() 

Просто вставьте свои данные здесь, и он должен работать просто отлично! Для получения более подробной информации о том, как работает код, ПРОВЕРЬТЕ ЭТОТ ВЕБ-САЙТ Я не смог найти подходящего примера для вашей функциональности, поэтому x и y остались пустыми. Но как только у вас есть данные, просто подключите их!

Python - лучший язык программирования в мире.