Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function minfunction
- % исходные данные:
- a = 0;
- b = 0.4;
- c = c_ = 0;
- d = d_ = 1;
- E = 0.001;
- %считаем интеграл:
- k = k_integral;
- % метод золотого сечения:
- ratio = 1.61803398; % коэффициент
- n = 0;
- err = 1;
- delta = d - c;
- while delta/2 >= E && err > E/2
- x1 = d - delta/ratio;
- x2 = c + delta/ratio;
- if F(x1) > F(x2)
- c = x1;
- else
- d = x2;
- endif
- delta = d - c;
- err = delta*(ratio - 1)^n;
- n += 1;
- endwhile
- x_min = (c+d)/2;
- F_min = F(x_min);
- printf(' Точка минимума: x* = %i\n\n Минимум функции: F(x*) = %i\n\n', x_min, F_min);
- % построение графика данной функции:
- VALUES = [];
- POINTS = c_:E:d_;
- for point = POINTS
- VALUES = [VALUES, F(point)];
- end
- v = 1; % шаг по вертикали
- h = 0.1; % шаг по горизонтали
- high = max(VALUES) + v;
- left = floor(c_); right = ceil(d_);
- low = F(x_min) - v;
- xticks = [left:h:right];
- yticks = [low:v:high];
- figure('Name','Function');
- plot(POINTS, VALUES, 'b', x_min, F_min, 'r*');
- grid on
- set(gca,'xtick', xticks);
- set(gca,'ytick', yticks);
- xlim([left, right]);
- ylim([low, high]);
- %______________________________________________________________________________
- function I = integrand(x)
- I = 0; % вычисления подынтегрального выражения
- I = (2-x)*cos(x^2);
- endfunction
- function k = k_integral
- % вычисление интеграла методом средних прямоугольников
- m = 0;
- for i = a:0.05:b
- m += 1;
- X(m) = i;
- endfor
- k = 0;
- for i = 2:m
- DELTA = abs(X(i)-X(i-1));
- avgX = (X(i)+X(i-1))/2;
- k += integrand(avgX)*DELTA;
- endfor
- endfunction
- function F = F(x)
- % данная функция по условию
- F = 0;
- F = k*(2*x^2 + 3*exp(-x));
- endfunction
- %______________________________________________________________________________
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement