加载中...

【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)
posted @ 2020-03-23 17:28  不会编程的小学鸡  阅读(679)  评论(0编辑  收藏  举报