import numpy as np
import matplotlib.pyplot as plt
from sympy import *# 定义符号
x1, x2 = symbols('x1, x2')
# 定义所求函数
f = 0.2*x1**2 + x2**2# 求解梯度值
def get_grad(f, X):# 计算一阶导数f1 = diff(f, x1)f2 = diff(f, x2)X = X.tolist()X1 = X[0][0]X2 = X[1][0]# 代入具体数值计算grad = np.array([ [f1.subs({x1: X1, x2: X2}).evalf()],[f2.subs({x1: X1, x2: X2}).evalf()] ])return grad# 求解Hession矩阵
def get_hess(f, X):# 计算二次偏导f1 = diff(f, x1)f2 = diff(f, x2)f11 = diff(f,x1,2)f22 = diff(f,x2,2)f12 = diff(f1,x2)f21 = diff(f2,x1)# 计算具体数值计算hess = np.array([[f11.subs([(x1,X[0]), (x2,X[1])]),f12.subs([(x1,X[0]), (x2,X[1])])],[f21.subs([(x1,X[0]), (x2,X[1])]),f22.subs([(x1,X[0]), (x2,X[1])])]])# 转换数值类型为了后续求逆矩阵hess = np.array(hess, dtype = 'float')return hess# 牛顿迭代
def newton_iter(X, epsilon, max_iter):print('初始值','x1=',X[0][0],'x2=',X[1][0])count = 0while count< max_iter:grad = get_grad(f, X)grad_1_value = grad[0][0]grad_1_value = grad[1][0]if abs(grad_1_value) + abs(grad_1_value) >= epsilon:hess = get_hess(f, X0)# 得到Hession矩阵的逆hess_inv = np.linalg.inv(hess)# 牛顿迭代公式!!!!X = X - np.dot(hess_inv, grad)count += 1print('第',count,'次迭代:','x1=',X[0][0],'x2=',X[1][0])else:breakprint('迭代次数为:',count)
# 设置初始点
X0 = np.array([[1],[1]])
epsilon = 0.00001
max_iter = 50
newton_iter(X0, epsilon, max_iter)def f(x, y):return 0.2*(x**2)+y**2X = np.array([1, 0])
Y = np.array([1, 0])
x_values = np.linspace(-1, 1, 500)
y_values = np.linspace(-1, 1, 500)xx, yy = np.meshgrid(x_values, y_values)fig = plt.figure(figsize=(8, 8))
contour_line = plt.contour(xx, yy, f(xx, yy), levels=20, cmap=plt.cm.gray)
plt.clabel(contour_line, inline=1, fontsize=10)
plt.plot(X, Y, color='r', linestyle='-', marker='*', linewidth =2.0)
plt.show()

牛顿迭代(二元函数)相关推荐

  1. 【python】牛顿迭代法求解多元函数的最小值--以二元函数为例

    目录 一元函数到多元函数的牛顿迭代法 python代码实现过程 一元函数到多元函数的牛顿迭代法 参考 多元函数的牛顿迭代和高斯牛顿法怎么推导? 一元函数的牛顿迭代公式: 多元函数的牛顿迭代公式: 其中 ...

  2. python二元函数求导_用Excel和python实现二元函数梯度下降的人工智能,之用,excel,一元...

    梯度下降法和牛顿法的总结与比较 机器学习的本质是建立优化模型,通过优化方法,不断迭代参数向量,找到使目标函数最优的参数向量.最终建立模型 通常用到的优化方法:梯度下降方法.牛顿法.拟牛顿法等.这些优化 ...

  3. 说说牛顿迭代 -- 方法篇

    说说牛顿迭代 – 方法篇 写这个笔记主要是最近老在考虑最优化问题.今天刚好发现一个不错的手写公式的工具,加上前几天又发现Win10的Windows Ink比我想象得好用,于是来描几笔.主要是想试试这样 ...

  4. 用numpy autograd 实现牛顿迭代

    文章目录 1. 导入包库 2.定义函数 3.使用`autograd`定义导数 4.实现牛顿迭代 5.用`scipy`对应方法检验结果 6.小结 考虑非线性方程: f(x)=sin⁡(x)−e−x=0f ...

  5. 遗传算法求二元函数极值怎么编码_遗传算法求解一元函数二元函数最值

    ##--------------------------施工中----------------------------## import random import math import numpy ...

  6. 多项式牛顿迭代(应用:求逆,开根,对数exp)

    多项式牛顿迭代 给定多项式g(x)g(x)g(x),求f(x)f(x)f(x),满足g(f(x))≡0(modxn)g(f(x)) \equiv 0 \pmod {x ^ n}g(f(x))≡0(mo ...

  7. python pso_利用python实现PSO算法优化二元函数

    python实现PSO算法优化二元函数,具体代码如下所示: import numpy as np import random import matplotlib.pyplot as plt from ...

  8. 关于牛顿迭代求根的笔记

    关于牛顿迭代求根的笔记 牛顿迭代法(Newton's method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求 ...

  9. 以一元及二元函数为例,通过多项式的函数图像观察其拟合性能;以及对用多项式作目标函数进行机器学习时的一些理解。

    先给出代码: import numpy as np from mpl_toolkits.mplot3d import Axes3D from matplotlib import pyplot as p ...

最新文章

  1. 思科——RIP的运用
  2. 37、Power Query-不使用IF嵌套进行匹配
  3. 判断是否为ie8浏览器
  4. java aio聊天_JAVA aio简单使用
  5. 导入数据库怎么导入_导入必要的库
  6. 如何检查私钥和公钥是否配对_如何检查家具是否有臭虫
  7. 苹果cmsV10仿哈哩哈哩动漫自适应模板
  8. Mac OS X 启动时自动连接网络驱动器
  9. 【BZOJ1999】树网的核,求树的直径+单调队列乱搞
  10. pandas根据某列值为key整合其他列值,拆分某列值增加多行数据
  11. python创建xlsx文件_教程1:创建一个简单的XLSX文件
  12. R语言置信区间计算(confidence interval)、计算比例值对应的置信区间、为比例值构建95%执行区间、使用glue包把最终结果以标准格式输出
  13. cannot be cast to com.baomidou.mybatisplus.core.metadata.IPage
  14. uoj 198: [CTSC2016]时空旅行
  15. 利用word2vec、textCNN、jieba对事故文本多分类及致因修复(三维向量)
  16. 处理R安装后出现You're using a non-UTF8 locale, therefore only ASCII characters will work.的情况
  17. 完美洗牌问题(打乱数组间各元素的顺序)
  18. Bootstrap 选项卡
  19. java根据word模板生成pdf
  20. ICP、ICP备案、ICP证是什么意思?有什么区别和联系?

热门文章

  1. 双二极管钳位电路的原理分析
  2. VulnHub-BLUEMOON: 2021靶机
  3. 云服务案例分析 BB平台 Quiz6
  4. gt爵士变形步骤_代码广播简介:编码时您可以收听的24/7爵士节奏
  5. 研究人员是如何改善微型计算机的,北方高校微机实验室内微环境的研究及改善对策的探讨...
  6. 中国也曾有过贵族:春秋战国是其黄金时期
  7. windows7计算机不显示光驱,Windows7系统下找不到光驱怎么办呢?
  8. echarts实现中国地图记录篇之2D,3D地图
  9. Python 标准库:: re---正则表达式操作
  10. Verilog 的层次化事件队列+阻塞赋值与非阻塞赋值理解