от __future__ импорта разделения импорта NumPy как нп импорта matplotlib.pyplot как PLT из scipy.optimize импорта line_search из Matplotlib импортного rcParamsrcParams [ 'font.family' ] = 'serif' rcParams [ 'font.size' ] = 16Защиту весело ( х , у ): возвращение 5 * х ** 2 - 6 * х * у + 5 * у ** 2def f ( x ): x1 = x [ 0 ] x2 = x [ 1 ] return fun ( x1 , x2 )def g ( x ): x1 = x [ 0 ] x2 = x [ 1 ] g1 = 10 * x1 - 6 * x2 g2 = - 6 * x1 + 10 * x2 return [ g1 , g2 ]X , Y = np . mgrid [ - 1.5 : 1.5 : 101 j , - 1.5 : 1.5 : 101 j ] Z = fun ( X , Y ) уровни = np . linspace ( 0,5 , 5 , 6 ) пл . рисунок ( figsize = ( 10 , 10 )) CS = plt . контур ( X , Y , Z , уровни = уровни , цвета = 'k' ) plt . clabel ( CS ) xk = np . массив ([ - 0.5 , - 1 ]) pk = np . array ([ 0. , 1. ]) для k в диапазоне ( 10 ): res = line_search( f , g , xk , pk ) alpha = res [ 0 ] xnew = xk + 0,6 * alpha * pk pk = pk [:: - 1 ] plt . стрелка ( xk [ 0 ], xk [ 1 ], xnew [ 0 ] - xk [ 0 ], xnew [ 1 ] - xk)[ 1 ], fc = 'r' , ec = 'r' , length_includes_head = True ) xk = xnewplt . ось ( 'изображение' ) plt . xlabel ( r '$ x $' , size = 18 ) plt . ylabel ( r '$ y $' , size = 18 ) plt . title ( r '$ f (x, y) = 5x ^ 2 - 6xy + 5y ^ 2 $' ) plt . savefig ( 'координата descent.svg' ) plt . показать ()