【MATLAB】二维搜索之阻尼牛顿法
来源:互联网 发布:淘宝保证金怎么解冻 编辑:程序博客网 时间:2024/06/07 13:15
clc;clear;
syms x1x2 v
f =x1^2+x2^2+x1*x2-3*x1;
% f =x1^2+2*x2^2-4*x1-2*x1*x2; %测试函数1
% f =x1^3+x2^3-3*x1*x2; %测试函数2
x =[2,2]; %设置初始点
afx =[diff(f,x1),diff(f,x2)]; %求出一阶偏导
a2fx=[diff(afx(1),x1),diff(afx(1),x2);diff(afx(2),x1),diff(afx(2),x2)]; %求出二阶偏导
while(1)
afxx = subs(afx,[x1,x2],x); %计算一阶偏导在x处的值
if sum(afxx.^2)<1e-3 %迭代终止条件
disp('阻尼牛顿法求函数极小点为:')
x = double(x); %将sym型转化为double型
fprintf('(%f,%f)\n',x(1),x(2)) %打印计算结果
break;
end
a2fxx = subs(a2fx,[x1,x2],x); %计算具体数值
if det(a2fxx)==0 %无最优解的判别条件
disp('无最优解');break;
end
s = -inv(a2fxx)*afxx';
y = subs(f,[x1,x2],x+v*s');
dyv = diff(y,v);
vv = solve(dyv==0);
fff = subs(y,v,vv);
vv0 = find(vv>0);
vv = vv(find(fff == min(fff(vv0)))); %求出使得fff最小的非负vv值
x = x+vv*s'; %求出新的x的值
end
程序输出结果:
阻尼牛顿法求函数极小点为:
(2.000000,-1.000000)
- 【MATLAB】二维搜索之阻尼牛顿法
- 【MATLAB】一维搜索之牛顿法
- 牛顿法,阻尼牛顿法
- 阻尼牛顿法
- 【MATLAB】二维搜索之共轭梯度法
- 阻尼牛顿法的二次终止性
- 【工程优化】最优化算法--牛顿法、阻尼牛顿法及单纯形法
- 寻优方法总结:最速下降法,牛顿下降法,阻尼牛顿法,拟牛顿法DFP/BFGS
- 寻找最优参数解:最速下降法,牛顿下降法,阻尼牛顿法,拟牛顿法DFP/BFGS
- 寻找最优参数解:最速下降法,牛顿下降法,阻尼牛顿法,拟牛顿法
- 寻找最优参数解:最速下降法,牛顿下降法,阻尼牛顿法,拟牛顿法DFP/BFGS
- Matlab之用牛顿均差求插值多项式
- 优化之牛顿法
- 高斯牛顿法 matlab代码实现
- 【MATLAB】一维搜索之0.618法
- 【MATLAB】一维搜索之抛物线法
- 【MATLAB】一维搜索之平分法
- Matlab编程之二维绘图
- 【MATLAB】一维搜索之平分法
- ssh的用法,关于公钥和私钥
- 【MATLAB】一维搜索之成功失败法
- 解决UITableView中Cell重用机制导致内容出错的方法总结
- TCP中send和recv函数针对的是字符(无边界), 而不是字符串(以'\0'作为边界)
- 【MATLAB】二维搜索之阻尼牛顿法
- android_Http的Get与Post
- visibility和display的区别
- 【MATLAB】二维搜索之共轭梯度法
- windows下cocos2dx 3.x编译安卓工程
- 正则表达式学习
- 网络基本功(一):细说网络传输
- android总结整理----(1)自定义按钮实现
- iOS"Request failed: unacceptable content-type: text/html"