In [`v2.3.4`](https://pypi.org/project/optimtool/2.3.4/), We call a method as follows:
python
import optimtool as oo
x1, x2, x3, x4 = sp.symbols("x1 x2 x3 x4")
f = (x1 - 1)**2 + (x2 - 1)**2 + (x3 - 1)**2 + (x1**2 + x2**2 + x3**2 + x4**2 - 0.25)**2
funcs = sp.Matrix([f])
args = sp.Matrix([x1, x2, x3, x4])
x_0 = (1, 2, 3, 4)
oo.unconstrain.gradient_descent.barzilar_borwein(funcs, args, x_0)
But in [`v2.3.5`](https://pypi.org/project/optimtool/2.3.5/), We now call a method as follows: (It reduces the trouble of constructing data externally.)
python
import optimtool as oo
x1, x2, x3, x4 = sp.symbols("x1 x2 x3 x4") Declare symbolic variables
f = (x1 - 1)**2 + (x2 - 1)**2 + (x3 - 1)**2 + (x1**2 + x2**2 + x3**2 + x4**2 - 0.25)**2
oo.unconstrain.gradient_descent.barzilar_borwein(f, [x1, x2, x3, x4], (1, 2, 3, 4)) funcs, args, x_0
funcs(args) can be list, tuple, sp.Matrix
functional parameters of bulit-in method are similar to `MATLAB Optimization Tool`, and supports more methods than it.