【MATLAB与机械设计】一维优化之牛顿法
牛顿法在一维探索中的应用是利用二次函数来逐点近似原目标函数,以二次函数的极小点来近似原目标函数的极小点并逐渐逼近该点,是用切线代替弧线逐渐逼近函数根值的方法。
1.迭代步骤
2,程序框图:
3,MATLAB可执行程序
clear; clc;
%% 程序说明
%{
本函数为牛顿法求解一维函数的极小值
其中f为所求的目标函数
x0为初值
exp为精度
对于牛顿法有以下特点:
1)、收敛速度快
2)、对初值要求较高,即初值点应该距离极小值点较近
%}
%% 变量输入
syms f x
%目标函数
f=(1/4)*(x^4)+(-2/3)*(x^3)+(-2)*(x^2)+(-7*x)+8;
%初值
x0=-12918;
%精度
exp=0.00005;
%% 程序主体
f_d1=diff(f,1);
f_d2=diff(f,2);
while 1
fz_d1=subs(f_d1,x,x0);
fz_d2=subs(f_d2,x,x0);
if abs(fz_d1) < exp
x_min=x0;
break;
else
x0=x0-(fz_d1)/(fz_d2);
end
end
x_min
f_min=subs(f,x,x_min)