最优化--牛顿法求解多元函数极值例题(python)
目录
- 一.问题
- 二.python代码
- 三.结果
一.问题
给定一个函数f(x)=60-10x1-4x2+x12+x22-x1x2,利用牛顿法求解该函数的最小值,需给出中间结果。
二.python代码
import numpy as np
import matplotlib.pyplot as plt#牛顿法求解f = 60-10*x1-4*x2+x1**2+2*x2**2-x1*x2的极值
#原函数
#建立点的列表并关联起来
X1=np.arange(-50,50,0.1)
X2=np.arange(-50,50,0.1)
[x1,x2]=np.meshgrid(X1,X2)
f = 60-10*x1-4*x2+x1**2+2*x2**2-x1*x2
plt.contour(x1,x2,f,20) # 画出函数的20条轮廓线#求梯度
def jacobian(x):return np.array([-10+2*x[0]-x[1],-4+2*x[1]-x[0]])#求海森矩阵
def hessian(x):return np.array([[2,-1],[-1,2]])#牛顿法程序
def newton(x0):W=np.zeros((2,10**2))i = 1imax = 100W[:,0] = x0 x = x0delta = 1alpha = 1#迭代条件,当迭代次数不少于100次并且精度大于0.1时进行循环while i<imax and delta>0.1:#将海森矩阵的逆与梯度相乘p = -np.dot(np.linalg.inv(hessian(x)),jacobian(x))x0 = xx = x + alpha*pW[:,i] = xdelta = sum((x-x0))print('第',i,'次迭代结果:')print(x,'\n')i=i+1W=W[:,0:i] # 记录迭代点return W#初始点
x0 = np.array([-40,40])
W = newton(x0)plt.plot(W[0,:],W[1,:],'g*',W[0,:],W[1,:]) # 画出迭代点收敛的轨迹
plt.show()
三.结果
最优化--牛顿法求解多元函数极值例题(python)相关推荐
- 修正牛顿法编程python_GitHub - Maples7/newtonMethod: 牛顿法求解复数域上x^4-1=0收敛域的程序 using Python...
newtonMethod 牛顿法求解复数域上x^4-1=0收敛域的程序 using Python [总体分析] 1.牛顿法本质上是关于迭代求解非线性方程解的方法,而迭代是为了不断逼近精确解.牛顿法迭代 ...
- 通过梯度下降和牛顿法求解一个数的平方根
梯度下降 梯度下降法(Gradient descent)是一个一阶最优化算法,就是让参数沿着损失函数负梯度的方向更新.迭代的步长,也就是学习率是事先给定的,如果负梯度的绝对值越大,这次更新的幅度也会越 ...
- 运用遗传算法求解函数极值(fortran)
运用遗传算法求解函数极值(fortran) 写在前面 遗传算法的前世今生 算法步骤简介 遗传算法的主体结构 开始求解: 结果显示: 最后再来说一些需要注意的地方 写在前面 这篇文章适合一些应急学习最优 ...
- 粒子群算法求解多元函数最值问题
粒子群算法求解多元函数最值问题 一.简介 多元函数极值&最值问题通常使用导数/偏导数进行推导,这里尝试使用启发式算法进行求解近似最优解.选用粒子群算法进行求解,粒子群算法模仿鸟群觅食行为,核心 ...
- 数值计算之 牛顿法与函数极值
数值计算之 牛顿法与函数极值 前言 最速下降法 牛顿法 牛顿法分析 代码示例 后记 前言 本篇继续优化理论的算法学习,牛顿法. 最速下降法 首先回顾上次提到的梯度下降法(其实就是最速下降法):通过求取 ...
- 斐波那契(Fibonacci)迭代法求解函数极值(附代码)
目录 Fibonacci数列: 迭代公式: 算法步骤: 例题 C++代码: Fibonacci数列又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例 ...
- Censored Weibull Distribution 最大似然估计 (结合牛顿法求解)
Censored Weibull Distribution 最大似然估计 (结合牛顿法求解) 前言:写这篇博客是因为我前几天偶然读到一篇很有意思的文章, 然后想用自己的实验数据测试一下其分布情况,本以 ...
- matlab 牛顿法 最优化,matlab最优化牛顿法
最优化算法与MATLAB的Global Optimization Toolbox_计算机软件及应用_IT/计算机_专业资料.最优化算法与 MATLAB的Global Optimization Tool ...
- 贪心算法求解TSP问题(python)
这里使用贪心算法求解TSP问题的python版本 # dist 为距离矩阵,start_index 为起始位置 def tsp_quick(dist: list, start_index: int): ...
最新文章
- C++11中std::packaged_task的使用
- WEB测试常见问题汇总
- NFS服务基本配置及使用
- Web 开发最有用的 jQuery 插件集锦
- cmd常见错误及解决方法
- Python json序列化时default/object_hook指定函数处理
- 单核工作法16:循序渐进(下)
- C++数据结构struct
- SAP Spartacus b2b表格的cell配置解析逻辑
- linux之task_struct
- matlab出错及解决办法,Linux下使用Matlab符号函数出错的解决办法
- 【LeetCode】剑指 Offer 24. 反转链表
- struts2的action中获得request response session 对象
- 「Injective衍生品市场创意大赛」角逐“最强王者”,就等你来
- 图片相似度判断-差异值哈希算法JAVA版
- 【历史上的今天】1 月 18 日:微软的“技术布道者”;反盗版法案抗议行动;哈佛 Mark I 灵感起源
- Hazelcast IMDG参考中文版手册-第七章-分布式数据结构
- 如何将文件打包到jar包里面
- Vue之导出xlsx
- 华为鸿蒙糸统其它手机可以用吗,鸿蒙系统vivo能用吗