Форум сайта python.su
“ Рассмотрим следующую область: D = |-5, 10| x |0, 15|. Эта задача, приведенная ниже, должна быть выполнена в этой области и выполнен в Jupyter notebook
Нарисуйте N = 100 случайных точек, равномерно распределенных по D. Для каждой точки выполните локальную минимизацию f через scipy.optimize.minimize следующими методами: CG,BFGS, Newton-CG, L-BFGS-B. Для этой задачи вам нужно будет написать две другие функции, одну, которая возвращает матрицу Якоби f, и другую, которая возвращает матрицу Гессиана f. Храните ответы в массиве формы N x 6, каждая строка которого содержит следующие данные:
(x1, y1,x2, y2, v,c),
где (x1, y1) и (x2, y2) являются соответственно начальной и конечной точками оптимизации, в то время как v - конечное значение f. Последним элементом строки c является код используемого метода, в соответствии с этим соответствием: CG:1, BFGS:2, Ньютон-CG:3, L-BFGS-B:4 ”
Оригинальный вопрос
Consider the following area: D = |-5, 10| x |0, 15|. This task, given below, must be performed in this domain.And executed in Jupyter notebook
Draw N = 100 random points uniformly distributed over D. For each point, run a local minimization of f using scipy.optimize.minimize with the following methods: CG,BFGS,Newton-CG,L-BFGS-B. For this task, you will have to write two other functions, one that returns the Jacobian matrix of f and one that returns the Hessian matrix of f . Store the answers in an array with shape N x 6, each row of which has the following data:
(x1, y1,x2, y2,v,c),
where (x1, y1) and (x2, y2) are respectively the starting and the final point of the optimization, while v is the final value of f . The final element of the row c is code of the used method, according to this correspondence: CG:1, BFGS:2, Newton-CG:3, L-BFGS-B:4
Отредактировано Azamjon (Дек. 6, 2021 12:52:23)
Офлайн
по поводу “Равномерно распределенные данные в d измерениях”
нашел такой код
import numpy as np
X = np.random.uniform(low=-1, high=1, size = (100,10))
Отредактировано Azamjon (Дек. 6, 2021 13:14:37)
Офлайн
import numpy as np
from scipy import optimize
#%from numdifftools import Jacobian, Hessian
#method
#mmm='SLSQP'
#mmm='CG'
#mmm='BFGS'
#mmm='Newton-CG'
#mmm='L-BFGS-B'
a=1
b=5.1/(4*np.pi**2)
c=5/np.pi
r=6
s=10
t=1/(8*np.pi)
a1=-5
b1=10
c1=0
d1=15
def f_ulugbek(xx):
aa=a*(xx-b*xx**2+c*xx-r)**2+s*(1-t)*np.cos(xx)+s
return aa
def fun_der(xx):
aa1=2*a*(xx-b*(xx**2)+c*xx-r)*(-2*b*xx+c)-s*(1-t)*np.sin(xx)
aa2=2*a*(xx-b*(xx**2)+c*xx-r)
return np.array()
def fun_hess(xx):
b11=2*a*(c-2*b*xx)**2-2*b*(xx-b*xx**2+c*xx-r)-s*(1-t)*np.cos(xx)
b12=2*a*(c-2*b*xx)
b21=2*a*(c-2*b*xx)
b22=2*a
return np.array([,])
# importing libraries
x0=np.array()
x_bound = (a1,b1)
y_bound = (c1,d1)
result = optimize.minimize(f_ulugbek, x0=x0, method=mmm,
options = {'maxiter':100}, jac=fun_der(x0), hess=fun_hess(x0),
bounds = (x_bound,y_bound))
print(result)
print(“Method is ”+mmm+“ and the Minimum occurs at: ”, result)
x00=np.float64(result)
print(“Jacobian”, fun_der(x00))
print(“Hessian”, fun_hess(x00))
Отредактировано Azamjon (Дек. 10, 2021 17:36:42)
Офлайн
я написал такой код но у меня выходит ошибка
ValueError Traceback (most recent call last)
<ipython-input-5-7f3645e7f650> in <module>
46 y_bound = (c1,d1)
47
—> 48 result = optimize.minimize(f_ulugbek, x0=x0, method=mmm,
49 options={'maxiter':100}, jac=fun_der(x0), hess=fun_hess(x0),
50 bounds = (x_bound,y_bound))
~\anaconda3\lib\site-packages\scipy\optimize\_minimize.py in minimize(fun, x0, args, method, jac, hess, hessp, bounds, constraints, tol, callback, options)
564 # default jac calculation for this method
565 jac = ‘2-point’
–> 566 elif jac is None or bool(jac) is False:
567 # this will cause e.g. LBFGS to use forward difference, absolute step
568 jac = None
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Отредактировано Azamjon (Дек. 10, 2021 17:37:44)
Офлайн