Поис минимума с помощью касательных
Запись от simonovada размещена 07.12.2019 в 18:47
Показов 639
Комментарии 0
|
clear all; x = linspace(0.5,1,10); % х принимает значения от 0.5 до 1, рассматриваем 10 точек A = -1/2; B =10; f = @(x)(A.*(x.^2)+(B.*x).*log(x)); % исходная формула plot(x,f(x)); a = 0.5; %промежуток [a,b] b = 1; %промежуток e = 0.05; %точность dF =@(x)(-x+10*log(x)+10); c=(dF(a)*a-f(a)+f(b)-dF(b)*b)/(dF(a)-dF(b)); while (abs(dF(c))>e & b-a>e) if dF(c)>=0 %Если f′(c1) > 0, то принимаем a2 =a1, b2 =c1. b = c; c=(dF(a)*a-f(a)+f(b)-dF(b)*b)/(dF(a)-dF(b)); end if dF(c)<0 %Если f′(c1) < 0, то принимаем a2 =c1, b2 =b1. a = c; c=(dF(a)*a-f(a)+f(b)-dF(b)*b)/(dF(a)-dF(b)); end end if dF(c)<=e %Повторяем процедуру до тех пор пока не выполнится критерий остановки X=c; end if dF(a)>=0 %Если f ′ (c1 ) = 0 , то задача ре- шена и точка c1 – искомая. X=a; end if dF(b)<=0 %Если f ′ (c1 ) = 0 , то задача ре- шена и точка c1 – искомая. X=b; end disp(['X = ' num2str(X,4)]); disp(['f(X) = ' num2str(f(X),5)]); |
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии


