无约束最优化方法-牛顿法
无约束最优化算法-Newton法原理及c++编程实现
版权声明:本文为博主原创文章,未经博主允许不得转载。
无约束最优化方法-牛顿法
牛顿法(Newton'smethod)又称为牛顿-拉弗森方法(Newton-Raphson method),它是一种在实数域和复数域上近似求解方程的方法,迭代的示意图如下:
总结@郑海波 blog.csdn.net/nuptboyzhb/
参考:斯坦福大学machine learning
本博客中所有源代码:http://download.csdn.net/detail/nuptboyzhb/4886786
求解问题:
1.无约束函数f的0点。
2.无约束函数f的最小值,最大值。
函数的曲线(matlab画出)
#include <iostream>
#include <math.h>
using namespace std;
#define f(x) (pow(x,3)-4.0*pow(x,2)+3.0*x)
#define df(x) (3.0*pow(x,2)-8.0*x+3)
int main()
{
doublex=9;//设置迭代的初始值
doubleerr=1.0e-10;//设置精度
intcount=0;
while(true)
{
x=x-f(x)/df(x);
if(abs(f(x))<err)
{
break;
}
cout<<"第"<<count++<<"迭代x="<<x<<" f(x)="<<f(x)<<endl;
}
cout<<"函数f的0点为:"<<x<<endl;
return0;
}
结果讨论:
迭代结果与初始值有关,迭代的结果总是初始值x附近的0点。如:
1.初始值x=9时,运行结果如下:
第0迭代 x=6.51724 f(x)=126.47
第1迭代 x=4.90174 f(x)=36.3714
第2迭代 x=3.88768 f(x)=9.96551
第3迭代 x=3.30967 f(x)=2.36715
函数f的0点为:3.05742
Press any key tocontinue
2.初始值x=1.3时,运行结果如下:
函数f的0点为:1.01545
Press any key tocontinue
3.初始值为-10时,运行结果如下:
第0迭代 x=-6.26632 f(x)=-421.924
第1迭代 x=-3.79793 f(x)=-123.873
第2迭代 x=-2.18197 f(x)=-35.9783
第3迭代 x=-1.14629 f(x)=-10.201
第4迭代 x=-0.51317 f(x)=-2.72803
函数f的0点为:-0.167649
Press any key tocontinue
- #include <iostream>
- #include <math.h>
- using namespace std;
- #define f(x) (pow(x,3)-4.0*pow(x,2)+3.0*x)
- #define df(x) (3.0*pow(x,2)-8.0*x+3)
- #define ddf(x) (6.0*x-8)
- int main()
- {
- double x=1.2;//初始值
- double err=1.0e-10;
- int count=0;
- while (true)
- {
- x=x-df(x)/ddf(x);
- if (abs(df(x))<err)
- {
- break;
- }
- cout<<"第"<<count++<<"迭代x="<<x<<" df(x)="<<df(x)<<endl;
- }
- cout<<"函数f极点为:("<<x<<","<<f(x)<<")"<<endl;
- return 0;
- }
#include <iostream>
#include <math.h>
using namespace std;
#define f(x) (pow(x,3)-4.0*pow(x,2)+3.0*x)
#define df(x) (3.0*pow(x,2)-8.0*x+3)
#define ddf(x) (6.0*x-8)
int main()
{double x=1.2;//初始值double err=1.0e-10;int count=0;while (true){x=x-df(x)/ddf(x);if (abs(df(x))<err){break;}cout<<"第"<<count++<<"迭代x="<<x<<" df(x)="<<df(x)<<endl;}cout<<"函数f极点为:("<<x<<","<<f(x)<<")"<<endl;return 0;
}
结果讨论:
迭代结果与初始值有关,迭代的结果总是初始值x附近的极值。如:
1.初始值x=9时,运行结果如下:
第0迭代x=5.21739df(x)=42.9244
第1迭代x=3.37549df(x)=10.1778
第2迭代x=2.54484df(x)=2.06992
函数f极点为:(2.26008,-2.1072)
Press any key tocontinue
2.初始值x=1.2时,运行结果如下:
第0迭代x=-1.65df(x)=24.3675
第1迭代x=-0.288687df(x)=5.55952
函数f极点为:(0.282567,0.550886)
Press any key tocontinue
3.初始值为-10时,运行结果如下:
第0迭代x=-4.36765df(x)=95.1702
第1迭代x=-1.58537df(x)=23.2232
第2迭代x=-0.259259df(x)=5.27572
函数f极点为:(0.292851,0.560622)
Press any key tocontinue
注意:对于只有1个0点的函数求解或只有一个极值的函数求解时,迭代结果一般与初始值的关系不大,但迭代次数会受影响。
转载请声明,未经允许,不得用以商业目的
无约束最优化方法-牛顿法相关推荐
- 非线性规划(凸规划,无约束最优化方法,约束最优化方法)
非线性规划 非线性规划的最优解可能在可行域的任何地方取得. 一元函数:二阶导数>=0,曲线凹,即下凸. 二元函数:图解法 凸集:集合中任意取两个点x1和x2,若x1和x2之间的任意一个点都在该集 ...
- 机器人中的数值优化(三)—— 无约束最优化方法基础、线搜索准则
本系列文章主要是我在学习<数值优化>过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程<机器人中的数值优化>和高立编著的<数值最优化方法>等,本系列文 ...
- 最优化方法:五、无约束最优化方法
主要参考书目: 最优化方法及其应用/郭科,陈聆,魏友华.-北京:高等教育出版社,2007.7(2013.7重印) 在第四章中,我们解决了确定搜索步长的问题,现在解决确定搜索方向的问题. 1.最速下降法 ...
- 《最优化方法》——无约束具体算法以及KK
4 无约束具体算法 [机器学习之数学]02 梯度下降法.最速下降法.牛顿法.共轭方向法.拟牛顿法 - wuliytTaotao - 博客园 (cnblogs.com) 4.1最速下降法 梯度方向 某点 ...
- MATLAB 无约束一维极值问题
无约束一维极值问题 极值问题表达式:min f(x) x,x[ x1 x2]; 一维极值的搜索方式包括线性搜索和非线性搜索,线性搜索包含黄金分割法.斐波那契法和牛顿法,非线性方法包含抛物线法 ...
- 运筹优化(十一)--无约束非线性规划
这个系列将非线性规划是以"不是什么"定义的,也就是说,之前的线性规划模型使用连续决策变量,线性约束和线性目标函数,而非线性规划涵盖了所有其他单目标,连续决策变量的规划模型.意味着, ...
- 机器学习之求解无约束最优化问题方法(手推公式版)
文章目录 前言 1. 基础知识 1.1 方向导数 1.2 梯度 1.3 方向导数与梯度的关系 1.4 泰勒展开公式 1.5 Jacobian矩阵与Hessian矩阵 1.6 正定矩阵 2. 梯度下降法 ...
- 数学基础(五)最优化理论(最优化,无约束,有约束,拉格朗日乘子的意义,KKT条件)
目录 一.无约束优化 1.梯度下降法 2.牛顿法 二.有约束优化 1.约束为等式 2.约束为不等式 一.无约束优化 无约束优化问题十分普遍,如梯度下降法.牛顿法就是无约束的优化算法. 像最小二乘法.极 ...
- 优化工具包—无约束非线性优化求解器(fminsearch)
优化工具包-无约束非线性优化求解器(fminsearch) 原创不易,路过的各位大佬请点个赞 室内定位/导航/优化技术探讨:WX: ZB823618313 目录 优化工具包-无约束非线性优化求解器(f ...
最新文章
- 归并排序的 Go 语言实现和优化
- Ubuntu下浏览Json文件
- springboot1.5.10兼容高版本6.1.1elasticsearch
- python字典新的定义方式
- Intellij IDEA 的使用
- 黑苹果hp有声音hdmi无声音_黑科技!不戴耳机也能独享声音!以色列公司推出无耳机传输音乐...
- 按钮随复选框选中与取消变换样式
- 面试官 | count(1)、count(*) 、count(列名) 有什么区别?
- php-7.2.13的安装,Centos7.2编译安装php-7.0.13
- html非封闭标签,自封闭的html标签
- eclipse导出war包放入服务器中
- 第一章 了解BaseApplication框架以及使用Ogre Application Wizzard
- matlab 深度学习环境配置
- DoIP(三)—— 通信流程
- 【数模之数据分析-1】
- 多御浏览器安卓版有哪些地方值得下载使用?
- 纷享销客标讯通,大客招标经营的杀手锏
- pyautogui实现微信自动回复和其他功能
- FIR窗函数和IIR模拟、数字滤波器的MATLAB实现
- android 自动替换资源文件,简单高效的实现Android App全局字体替换
热门文章
- win10怎么用Linux命令,教你Windows10系统使用Linux命令的技巧
- mysql custom_MySQL安装教程
- C++类继承时的作用域嵌套,破解C++继承的一切秘密
- 【1024程序员节】都有什么?现场亲历者告诉你...
- 听说你想去大厂看学妹,带你看看京东软件产品经理面经
- Python Generators(生成器)——yield关键字
- Eclipse开发环境设置
- hadoop学习-海量日志分析(提取KPI指标)
- vector can通信源码_汽车电子CAN网络dbc文件
- Python入门100题 | 第074题