Advertisement
sashachca

minfunction

Jun 4th, 2018
350
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Octave 2.18 KB | None | 0 0
  1. function minfunction
  2.  
  3.   % исходные данные:
  4.   a = 0;
  5.   b = 0.4;
  6.   c = c_ = 0;
  7.   d = d_ = 1;
  8.   E = 0.001;
  9.  
  10.  
  11.   %считаем интеграл:
  12.   k = k_integral;
  13.  
  14.   % метод золотого сечения:
  15.   ratio = 1.61803398; % коэффициент
  16.  
  17.   n = 0;
  18.   err = 1;
  19.   delta = d - c;
  20.   while delta/2 >= E && err > E/2
  21.     x1 = d - delta/ratio;
  22.     x2 = c + delta/ratio;
  23.  
  24.     if F(x1) > F(x2)
  25.       c = x1;
  26.     else
  27.       d = x2;
  28.     endif
  29.    
  30.     delta = d - c;
  31.  
  32.     err = delta*(ratio - 1)^n;
  33.     n += 1;
  34.   endwhile
  35.   x_min = (c+d)/2;
  36.   F_min = F(x_min);
  37.  
  38.   printf(' Точка минимума: x* = %i\n\n Минимум функции: F(x*) = %i\n\n', x_min, F_min);
  39.  
  40.   % построение графика данной функции:
  41.   VALUES = [];
  42.   POINTS = c_:E:d_;
  43.   for point = POINTS
  44.     VALUES = [VALUES, F(point)];
  45.   end
  46.  
  47.   v = 1; % шаг по вертикали
  48.   h = 0.1; % шаг по горизонтали
  49.   high = max(VALUES) + v;
  50.   left = floor(c_); right = ceil(d_);
  51.   low = F(x_min) - v;
  52.   xticks = [left:h:right];
  53.   yticks = [low:v:high];
  54.  
  55.   figure('Name','Function');
  56.   plot(POINTS, VALUES, 'b', x_min, F_min, 'r*');
  57.     grid on
  58.   set(gca,'xtick', xticks);
  59.   set(gca,'ytick', yticks);
  60.   xlim([left, right]);
  61.   ylim([low, high]);
  62.  
  63.    
  64.    
  65.  %______________________________________________________________________________
  66.  
  67.   function I = integrand(x)
  68.   I = 0; % вычисления подынтегрального выражения
  69.  
  70.   I = (2-x)*cos(x^2);
  71.  
  72.   endfunction
  73.  
  74.  
  75.   function k = k_integral
  76.   % вычисление интеграла методом средних прямоугольников
  77.  
  78.   m = 0;
  79.   for i = a:0.05:b
  80.     m += 1;
  81.     X(m) = i;
  82.   endfor
  83.  
  84.   k = 0;
  85.   for i = 2:m
  86.     DELTA = abs(X(i)-X(i-1));
  87.     avgX = (X(i)+X(i-1))/2;
  88.    
  89.     k += integrand(avgX)*DELTA;
  90.   endfor
  91.    
  92.   endfunction
  93.  
  94.  
  95.  
  96.   function F = F(x)
  97.   % данная функция по условию
  98.     F = 0;
  99.    
  100.     F = k*(2*x^2 + 3*exp(-x));
  101.    
  102.   endfunction
  103.  
  104.  %______________________________________________________________________________
  105.  
  106. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement