Ich habe eine Funktion, die durch f (x_0, x_1) = a (x_1 - x_0^2)^2 + (b - x_0)^2 definiert ist, wobei a und b einige Parameter sind: < /p>
Code: Select all
def f(x):
return a*(x[1]-x[0]**2)**2+(b-x[0])**2
wobei x = np.Array ([x_0, x_1]) ein numpy Array ist. Dann sind der Gradient und die Hessische von F leicht zu finden und werden durch < /p>
gegeben
Code: Select all
def f_der(x):
return np.array([-4*a*x[0]*(x[1]-x[0]**2)-2*(b-x[0]), 2*a*(x[1]-x[0]**2)])
def f_hess(x):
a_11 = 12*a*x[0]**2 - 4*a*x[1] + 2
a_12 = -4*a*x[0]**2
a_21 = -4*a*x[0]**2
a_22 = 2*a
return np.array([[a_11, a_12], [a_21, a_22]])
Jetzt habe ich einen pandas dataframe df , in dem verschiedene Werte von a, b:
aufgezeichnet werden
Und
ich möchte zwei neue Spalten erstellen, die X_0* und x_1* bezeichnen, die durch die Werte von x_0 bzw. x_1 angegeben sind, was F unter den Einschränkungen minimiert: