【实验目的】
掌握一维收搜索中Newton切线法求解一维最优化问题。 【实验学时】 2学时
【算法原理】 设
:R1R1在已获得的搜索区间
[a,b]内具有连续二阶导数,求
atbmin(t).
因为(t)在
[a,b]上可微,故(t)在[a,b]上有最小值,令(t)0.
[a,b]中经过k次迭代已求得方程(t)0的一个近似根tk.过(tk,(tk))下面不妨设在区间
作曲线y(t)的切线,其方程是
y(tk)(tk)(ttk). (1)
然后用这条切线与横轴交点的横坐标在令y0的解出来,即
tk1作为根的新的近似(如图4所示).它可由方程(4.4)
tk1tk(tk)(tk).
这就是Newton切线法迭代公式。
图1
【算法步骤】
已知(t),(t)表达式,终止限。
(1)确定初始搜索区间[a,b],要求'(a)0,'(b)0。 (2)选定
t0。
1
(3)计算(4) 若
tt0'(t0)/\"(t0)。
|tt0|,则t0t,转(3)
;否则转(5)。
(5) 打印t,(t),结束。
Newton切线法的计算流程如图5所示。
图2
【程序代码】
%牛顿切线法
%函数原型X=NewtonSearch(f,a,b,eps)
%返回值为长度为3的向量X,分别表示最小值点、最小值、搜索次数 %f:目标函数,a:搜索区间下限,b:搜索区间上限,eps:终止限 function X=NewtonSearch(f,a,b,eps)
syms x;
2
f = f(x);
f1 = diff(f,x); f2 = diff(f,x,2); t0 = (a+b)/2; z = 1; while 1 x = t0;
t = t0-subs(f1)/subs(f2); if abs(t-t0) if z>1000 disp('搜索次数超过1000次,未找到最小值,结束') x = NaN; y = NaN; return; end t0 = t; z = z+1; end 3 4 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- xiaozhentang.com 版权所有 湘ICP备2023022495号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务