⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parabola.m

📁 无约束优化问题一维搜索的常用方法:黄金分割法(golden_section.m)、加步搜索法(plus_step_search.m)、牛顿法(newton.m)、抛物线法(parabola.m)
💻 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 + -