Как подобрать этот многочлен с наименьшим значением q? Цель состоит в том, чтобы получить график, оптимизированный из экспериментальных и аналитических значений:
from scipy.integrate import quad
import pylab as py
import numpy as np
x_data=[329.74403, 329.21733, 328.73927, 328.25111, 327.75969, 327.26852,
326.7746,326.28142, 325.78471,325.28635,324.78976]
y_data=[]
y1_data=[1.55e-06, 1.82e-06, 1.93e-06, 1.17e-06, 1.93e-06, 1.79e-06, 1.31e-
06, 1.75e-06,1.68e-06,1.39e-06, 1.69e-06]Tavg = sum(x_data)/len(x_data)
B=0.33
m0 = 1.0
st = 0.1 * Tavgdef p(Tc):
return 1.0/(np.sqrt(2.0*np.pi)*st)*np.exp(-((Tc-
Tavg)**2.0)/(2.0*st**2.0))def F(Tc, Ti):
if (Tc-Ti) <0:
return 0
else:
return ((Tc-Ti)/Tc)**B*p(Tc)
def M(t):
for Ti in x_data:
k = quad(F, 0.0, 2000.0, args=(Ti,))[0]
y_data.append(k*m0)#graph of temperature vs analytical is done here
def plt():
py.xlabel('Temperature')
py.ylabel('Magnetisation')
py.plot(x_data,y_data)
py.savefig('graf.png')
Мне нужно найти оптимизированный график используя минимум, что минимизирует ошибку между аналитическим и экспериментальным значением. Я посмотрел онлайн для примеров с наименьшим количеством примеров, но мне было трудно понять и применить его к моему коду. Любая помощь и понимание приветствуются.
Вы можете использовать
numpy.polyfit
для подгонки иnumpy.polyval
для получения данных для построения.Пример использования
Создайте и нанесите несколько случайных данных, которые выглядят как данные о ценах на акции:
Вы получите что-то вроде этого:

вы выбираете данные, которые дают (и вы получаете) коэффициенты, которые вы получили):Результат выглядит следующим образом:
Но чтобы увидеть всю мощь
np.polyfit
, нам нужен еще один график: исходные данные (оранжевый) против полинома (синий):Как вы можете видеть, на этом конкретном интервале полином достаточно хорошо аппроксимирует ваши данные, и чем выше степень полинома, тем лучше аппроксимация.
curve_fit
, о чем ты говоришь? Я использовал случайные данные для графика, так что он может идти вверх или вниз для вас, и это совершенно нормально. Степень имеет большое значение: чем выше степень, тем лучше приближение. Вы сказали, что вам нужен график аппроксимации, поэтому для этого вы должны вычислить значение полинома для всех точек вX
, что и делаетnp.polyval
. Кроме того, этот метод уже использует наименьшие квадраты автоматически.