Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import matplotlib as mp
- h = 0.31 #шаг итераций
- x1 = 0 #начальные точки
- x2 = 0
- e = 0.0001
- crit = 1.0 #критерий остановки
- stariy_cal = 2.0
- noviy_cal = 1.0
- k = 0
- def new_func(x,y):
- new_func = 2*x**2+x*y+y**2+x+y #тут записываем вашу функцию
- return new_func
- def grad_f(x1,x2,crit,stariy_cal,noviy_cal,k):
- while (crit > e) and (stariy_cal > noviy_cal):
- print(f'итерация: {k}')
- f1 = 4*x1+x2+1 #тут записываем частную производную от функции по x1
- f2 = x1+2*x2+1 #тут по x2
- print(f'градиент функции с на данной итерации: ({f1} ; {f2})')
- crit = (f1**2 +f2**2)**0.5
- print(f'критерий остановки {crit} < {e})')
- new_x1 = x1 - h*f1
- new_x2 = x2 - h*f2
- stariy_cal = new_func(x1,x2)
- noviy_cal = new_func(new_x1,new_x2)
- print(f'делаем шаг по направлению градиента: ({new_x1} ; {new_x2})')
- print(f'новая функция: ({noviy_cal}')
- print('----------------------------------------')
- x1 = new_x1
- x2 = new_x2
- k += 1
- return x1, x2
- grad_f(x1,x2,crit,stariy_cal,noviy_cal,k)
- print(x1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement