regdef.m

来自「黄金分割法求极小」· M 代码 · 共 37 行

M
37
字号
function [mi,ma]=regdef(f,t,t0,h)   
%给定函数变量t的搜索区间确定。f为直线搜索时的变换后的函数,t为参变量,t0为起始零点,h为搜索步长
syms mi ma;
m=0;
f0=subs(f,t,t0);
t2=t0+h;
f2=subs(f,t,t2);
if(f2>=f0)
    t1=t2;
    f1=f2;
    h=-h;
else
    t1=t0;
    f1=f0;
    t0=t2;
    f0=f2;
    h=2*h;
end
t2=t0+h;
f2=subs(f,t,t2);
while(f2<=f0)
    t1=t0;
    f1=f0;
    t0=t2;
    f0=f2;
    h=2*h;
    t2=t0+h;
    f2=subs(f,t,t2);
    m=m+1;
    if(m>10000)                 %若迭代次数超过10000次则退出,并报错
        error('asdfsdfgasgdg')
        break
    end
end
mi=min(t1,t2);
ma=max(t1,t2);
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?