Advertisement
SenyaSych

Метод дихотомии

Mar 23rd, 2018
1,720
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.52 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2.  
  3. #Подключение библиотек
  4. import math
  5. import pylab
  6. import matplotlib.pyplot as plt
  7. from matplotlib import mlab
  8.  
  9. #Определение переменных
  10. A = 1.5; B = 1; C = 3; D = 1.5; xmin = 2.2; xmax = 4.4
  11.  
  12. #Определение функции
  13. f=lambda x: D * math.sin(A * x**B + C)
  14.  
  15. #Метод поперечного сечения
  16. def Half_Division_Method (xmin, xmax):
  17.     while (abs((xmin - xmax)) > 0.02):
  18.         middle_point = (xmin + xmax) / 2
  19.         if (f(middle_point+0.01)>f(middle_point-0.01)):
  20.             print("{0:.4f} || {1:.4f} || Правый".format(middle_point, f(middle_point)))
  21.             xmin = middle_point
  22.            
  23.         else:
  24.             print("{0:.4f} || {1:.4f} || Левый".format(middle_point, f(middle_point)))
  25.             xmax = middle_point
  26.     print("Интервал нахождения максимума функции: [{0:.4f} ; {1:.4f}]".format(xmin, xmax))
  27.    
  28. Half_Division_Method (xmin, xmax)
  29.  
  30. # Шаг между точками
  31. dx = 0.1
  32.  
  33. # Создадим список координат по оси X на отрезке [-xmin; xmax], включая концы
  34. xlist = mlab.frange (xmin, xmax, dx)
  35.  
  36. # Вычислим значение функции в заданных точках
  37. ylist = [f(x) for x in xlist]
  38.  
  39. # Нарисуем одномерный график
  40. pylab.plot (xlist, ylist)
  41. plt.grid(True)
  42.  
  43. # Покажем окно с нарисованным графиком
  44. pylab.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement