Я измерил точки данных, я хочу сопоставить формулу для определения двух объектов. Однако я получаю сообщение об ошибке:
TypeError: ufunc 'bitwise_xor' не поддерживается для входных типов, и входные данные не могут быть безопасно приведены к каким-либо поддерживаемым типам в соответствии с правилом приведения ''safe''
создается следующим кодом Python (я использую версию 3):
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
def func(T, fun, Tc):
return fun*np.sqrt(np.cos(np.pi/2*(T/Tc)^2))
xdata=(4.61, 4.89, 4.92, 4.95, 5.06, 5.10, 5.21, 5.38, 5.41, 5.57, 5.80, 6.14, 6.61, 7.27, 7.66, 7.90, 8.91, 8.29, 8.23, 7.30, 7.86,
8.30, 8.89, 8.99, 9.24, 9.35, 9.50, 8.77, 8.27, 8.37, 7.72, 7.57, 7.99, 8.13) # these are temperature values <-> T
ydata=(2.85, 2.84, 2.83, 2.825, 2.82, 2.81, 2.80, 2.765, 2.76, 2.74, 2.695, 2.62, 2.50, 2.265, 2.105, 1.975, 1.23, 1.75, 1.81, 2.26,
2.005, 1.75, 1.31, 1.14, 1.015, 1.045, 1.06, 1.40, 1.75, 1.69, 2.075, 2.15, 1.93, 1.855) # these are energy values <-> func
popt, pcov = curve_fit(func, xdata, ydata)
popt #display these optimized values
Вот вышеприведенная ошибка!!!
Я видел способ сделать это, если у вас есть фиксированная формула и вы добавляете немного шума, но я измерил точки данных (они должны быть дискретными).
Благодарю вас! Карстен
**
не^
...^
означает побитовое исключающее или - person DavidG   schedule 25.04.2018curve_fit
с использованием аргументаp0=
) - person DavidG   schedule 25.04.2018