Ich habe einige Daten aus dem Labor zu analysieren. Bisher war es ein Problem, das von einer Variablen abhängig war. Deshalb fand ich eine Lösung (http://kitchingroup.cheme.cmu.edu/blog/category/interpolation/):2D-Interpolation und maximal mit interp2d und fmin/minimieren von scipy
# use splines to fit and interpolate data
from scipy.interpolate import interp1d
from scipy.optimize import fmin
import numpy as np
x = np.array([ 0, 1, 2, 3, 4 ])
y = np.array([ 0., 0.308, 0.55, 0.546, 0.44 ])
# create the interpolating function
f = interp1d(x, y, kind='cubic', bounds_error=False)
# to find the maximum, we minimize the negative of the function. We
# cannot just multiply f by -1, so we create a new function here.
f2 = interp1d(x, -y, kind='cubic')
xmax = fmin(f2, 2.5)
[...]
es herausgefunden, dass mein Problem auf mindestens zwei Parameter abhängig ist. Also habe ich versucht, "interp2d" für ein multidimensionales Problem anzuwenden. Aber ich habe nicht verstanden, wie genau das geht.
Ich habe eine Matrix von Daten für die Prüfung, die wie ist:
| 2.00 | 2.50 | 3.00 | 3.50 | ...
--------------------------------------
5.00 | 0.0 | 60.0 | 10.0 | 0.00
10.0 | 0.0 | 100.0| 70.0 | 30.0
25.0 | 10.0 | 40.0 | 50.0 | 10.0
50.0 | 15.0 | 30.0 | 10.0 | 0.0
...
Ich las diesen Beitrag „Scipy interpolation on a numpy array“, die für mich sehr interessant war. Es ist jetzt möglich, Daten wie im Beispiel zu interpolieren. Aber ich weiß nicht, wie man eine Funktion wie "minimieren" von scipy anwendet. Es gibt ein Beispiel (http://docs.scipy.org/doc/scipy-0.16.0/reference/generated/scipy.optimize.minimize.html#scipy.optimize.minimize), aber die Verwendung einer analytischen Funktion anstelle eines interpolierten Datasets wie im obigen 1D-Beispiel.
res = minimize(func, x0, method='Nelder-Mead')
Als ich versuchte es die gleiche Weise, die ich wegen der Form des Arrays in Schwierigkeiten geraten zu verwenden interp2d zu tun. Vielleicht ist es der Schlüssel, um das Problem zu lösen, es zu benutzen?
Vielleicht kann mir jemand erklären, wie man eine solche 2D-Interpolation benutzt und wie man das Maximum findet.
Grüße, Alex