#python #pandas #optimization
Вопрос:
Почему алгоритм не сходится? Я перепробовал все, но я не могу заставить что-то сходиться или найти, где ошибка, проблема в том, чтобы оптимизировать функцию, начиная с 5.12 и -5.12
import numpy as np
import pandas as pd
x1 = sym.Symbol('x1')
x2 = sym.Symbol('x2')
z=[x1,x2]
fun = 2*a x1**2 x2**2 - a*(sym.cos(2*sym.pi*x1) sym.cos(2*sym.pi*x2))
a = 10
grad_simb = gradiente_simbolico(fun,z)
hess_simb = hessiana_simbolico(grad_simb,z)
x =[5.12,-5.12]
x = np.array(x)
g = eval_gradiente(grad_simb,z,x)
print('Gradiente: ',g)
H = eval_hessiana(hess_simb,z,x)
print('Hessiana:', H)
g1 = np.array(g)
#Dataframe
cols = ['i','x(i)','x(i 1)','G','Solução','Erro']
df = pd.DataFrame([], columns=cols)
i=1
e=0.1
tolerancia = 1e-3
max_it = 100
alpha = 0.01
#d = -1*g1
#while (e > 1e-3):
for i in range(max_it):
sol=np.abs(np.linalg.norm(g1))
row=pd.DataFrame([[i,x,x-sol,g,sol,e]],columns=cols)
df = df.append(row, ignore_index=True)
x = x - alpha * sol
g = eval_gradiente(grad_simb,z,x)
H = eval_hessiana(hess_simb,z,x)
#Computação do erro
e=g1[0]*g1[0] g1[1]*g1[1]
i =1
df