import numpy as np # %% Def of objective function: def fun_f(x, L): A = (L/2 - x)*x f = -A return f # %% Model param: L = 40 # [m^2] # %% Initialization: x_lb = 0 x_ub = L/2 N_x = 100 x_array = np.linspace(x_lb, x_ub, N_x) f_min = np.inf x_opt = 0 # Strictly not necessary to define here # %% Grid method of optimization: for x in x_array: f = fun_f(x, L) if (f < f_min): # Improvement of solution f_min = f # Updating objective function x_opt = x # Updating optimal solution # %% Presenting results: print('x_opt =', f'{x_opt:.6f}') print('f_min =', f'{f_min:.6f}')