by Guest » 06 Jan 2025, 22:29
Ich habe eine Funktion func(x), bei der das Argument ein Vektor der Länge n ist. Ich möchte es in Bezug auf die i-te Komponente von x minimieren, während die anderen Komponenten unverändert bleiben. Um es also als Funktion einer einzelnen Komponente auszudrücken, würde ich so etwas tun:
Code: Select all
import numpy as np
from scipy.optimize import minimize_scalar
def func(x):
#do some calculations
return function_value
def func_i(x_i, x0, i):
x = np.copy(x0)
x[i] = x_i
return func(x)
res = minimize_scalar(func_i, args=(x0, i))
Gibt es eine effizientere Möglichkeit, dies zu tun? Diese Art von Berechnungen wird wiederholt durchgeführt, wobei Variablen durchlaufen werden, und ich befürchte, dass x = np.copy(x0), x
= x_i die Berechnung verlangsamt. (Das Problem tritt im Zusammenhang mit der Gibbs-Stichprobe auf, daher ist die Minimierung in Bezug auf alle Variablen gleichzeitig nicht das, was ich möchte.)
Ich habe eine Funktion func(x), bei der das Argument ein Vektor der Länge n ist. Ich möchte es in Bezug auf die i-te Komponente von x minimieren, während die anderen Komponenten unverändert bleiben. Um es also als Funktion einer einzelnen Komponente auszudrücken, würde ich so etwas tun:
[code]import numpy as np
from scipy.optimize import minimize_scalar
def func(x):
#do some calculations
return function_value
def func_i(x_i, x0, i):
x = np.copy(x0)
x[i] = x_i
return func(x)
res = minimize_scalar(func_i, args=(x0, i))
[/code]
Gibt es eine effizientere Möglichkeit, dies zu tun? Diese Art von Berechnungen wird wiederholt durchgeführt, wobei Variablen durchlaufen werden, und ich befürchte, dass x = np.copy(x0), x[i] = x_i die Berechnung verlangsamt. (Das Problem tritt im Zusammenhang mit der Gibbs-Stichprobe auf, daher ist die Minimierung in Bezug auf alle Variablen gleichzeitig nicht das, was ich möchte.)