📄 parabola.m
字号:
function [mini,point,times]=parabola(str,ini,step,err)
% File name:parabola.m
% Author:Yan Anxin
% ID number:081810
% Date:finished on 2008.11.24
% Description:
% Here defines a function,to solve the one-dimensional searching problems by parabola-method
% In the syntax [mini,point,times]=parabola(str,ini,step,err),
% str----input,means the expression of objective function
% ini----input,sets the starting point to ini
% step----input,sets initial searching step
% err----input,sets admissible error
% mini=golden_section(str,ini,acc) attempts to find min, i.e. the minimum of objective function
% [mini,point]=parabola(str,ini,step,err) returns point, i.e. the independent variable value corresponding to minimum
% [mini,point,times]=parabola(str,ini,step,err) returns times, i.e. the times of iterative
%calls the function plus_step_search(str,ini,step,2) to obtain the initial calculating point
[vec,times,minip]=plus_step_search(str,ini,step,2);
t=[vec(1) minip vec(2)];
f=sym(str);
syms x
k=2;xx(k-1)=minip;times=0; %setting initial value
while 1 %applying parabola method
fv=subs(f,x,t);times=times+1;
xx(k)=0.5*((t(2)^2-t(3)^2)*fv(1)+(t(3)^2-t(1)^2)*fv(2)...
+(t(1)^2-t(2)^2)*fv(3))/((t(2)-t(3))*fv(1)...
+(t(3)-t(1))*fv(2)+(t(1)-t(2))*fv(3));
if abs((xx(k)-xx(k-1)))<err,break,end
B=[t xx(k)];
C=subs(f,x,B);
[D E]=sort(C);
t=[B(E(2)) B(E(1)) B(E(3))];
k=k+1;
end
point=xx(k);
mini=subs(f,x,point);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -