文章目录

  • 一阶偏导数
    • 思路
    • 实现
    • 调用
  • 二阶偏导数
    • 思路
    • 实现
    • 测试
    • 调用

一阶偏导数

思路

自变量: x0,…,xi+h,…,xn
带入理查德外推法公式,求对xi的偏导数
计算gradi: grad[grad0,…,gradi,…,null]

实现

import numpy as npdef computeGrad(pointFun, x, h):temp = np.array(x)grad = np.array(x)for i in range(len(x)):temp[i] += 0.5 * hgrad[i] = 4 * pointFun(temp) / (3 * h)temp[i] -= hgrad[i] -= 4 * pointFun(temp) / (3 * h)temp[i] += 3 * h / 2grad[i] -= pointFun(temp) / (6 * h)temp[i] -= 2 * hgrad[i] += pointFun(temp) / (6 * h)temp[i] = x[i]return grad# def fun(x):
#     return 100 * (x[1] - x[0] ** 2) ** 2 + (1 - x[0]) ** 2
#
#
# grad = computeGrad(fun, np.array([-1.2, 1.0]), 1e-3)
#
# print "grad:", grad

调用

def fun(x):return 100 * (x[1] - x[0] ** 2) ** 2 + (1 - x[0]) ** 2# 手动计算偏导数:
def gradient(x):return np.array([-400 * x[0] * (x[1] - x[0] ** 2) - 2 * (1 - x[0]), 200 * (x[1] - x[0] ** 2)])# 理查德外推法计算偏导数
def gradient(x):grad = computeGrad(fun, x, 1e-3)return grad

二阶偏导数

思路

计算主对角线hessian矩阵元素fxixi’’
计算下三角阵hessian矩阵元素fxixj’’

实现

import numpy as npdef computeHes(pointFun, x, epsilon):temp = np.array(x)Hess = np.array(x)for index in range(len(x) - 1):Hess = np.vstack((Hess, x))for i in range(len(x)):for j in range(len(x)):Hess[i, j] = 0# compute fxx''for i in range(len(x)):temp[i] += epsilon / 2Hess[i, i] = 16 * pointFun(temp)temp[i] -= epsilonHess[i, i] += 16 * pointFun(temp)temp[i] += 3 * epsilon / 2Hess[i, i] -= pointFun(temp)temp[i] -= 2 * epsilonHess[i, i] -= pointFun(temp)Hess[i, i] -= 30 * pointFun(x)Hess[i, i] /= 3 * epsilon * epsilontemp[i] = x[i]# compute Zijfor i in range(len(x)):for j in range(len(x)):if j > i:temp[i] += epsilon / 2temp[j] += epsilon / 2Hess[i, j] = 16 * pointFun(temp)temp[i] -= epsilontemp[j] -= epsilonHess[i, j] += 16 * pointFun(temp)temp[i] += 3 * epsilon / 2temp[j] += 3 * epsilon / 2Hess[i, j] -= pointFun(temp)temp[i] -= 2 * epsilontemp[j] -= 2 * epsilonHess[i, j] -= pointFun(temp)Hess[i, j] -= 30 * pointFun(x)Hess[i, j] /= (3 * epsilon * epsilon)Hess[i, j] -= Hess[i, i]Hess[i, j] -= Hess[j, j]Hess[i, j] /= 2temp[i] = x[i]temp[j] = x[j]# compute fij''  use fii'' & Zijfor i in range(len(x)):for j in range(len(x)):if j > i:Hess[j, i] -= Hess[i, j]return Hess

测试

def fun(x):return x[0] * np.exp(x[0] - x[1] * x[1])point = np.array([1.0, 1.0])Hessian = computeHes(fun, point, 1e-3)print "Hessian:", Hessian

调用

def hessianMatrix(x):# Hes = np.array([[-400 * (x[1] - 3 * x[0] ** 2) + 2, -400 * x[0]], [-400 * x[0], 200]])Hes = computeHes(fun, x, 1e-3)return Hes

理查德外推法计算偏导数近似值-python实现相关推荐

  1. 求s的近似值python,理查德外推法计算偏导数近似值-python实现

    一阶偏导数 一阶偏导数 思路 自变量: x0,...,xi+h,...,xn 带入理查德外推法公式,求对xi的偏导数 计算gradi: grad[grad0,...,gradi,...,null] 实 ...

  2. python计算圆周率近似值_Python——计算PI的近似值,python,圆周率

    计算圆周率近似值 方法: 1.拉马努金法计算圆周率近似值: "数学家拉马努金(Srinivasa Ramanujan)找到了一个无限序列,可以用来生成π的数值近似值: 编写一个函数 ,使用这 ...

  3. python——计算圆周率近似值

    计算圆周率近似值 方法: 1.拉马努金法计算圆周率近似值: "数学家拉马努金(Srinivasa Ramanujan)找到了一个无限序列,可以用来生成π的数值近似值: 编写一个函数 ,使用这 ...

  4. python计算sinx近似值的程序_python编程计算sinx-女性时尚流行美容健康娱乐mv-ida网...

    女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页  > 高级搜索 python 字符串,数值 计 ...

  5. Python用蒙特卡罗方法计算圆周率近似值

    实验目的: 1.理解蒙特Ÿ卡罗方法原理. 2.理解for循环本质与工作原理. 3.了解random模块中常用函数. 实验内容: 蒙特Ÿ卡罗方法是一种通过概率来得到问题近似解的方法,在很多领域都有重要的 ...

  6. ML:文本、图像等数值化数据相似度计算之余弦相似度计算三种python代码实现

    ML:文本.图像等数值化数据相似度计算之余弦相似度计算三种python代码实现 目录 相似度计算之余弦相似度计算 输出结果 三种python代码实现

  7. Python---利用蒙特.卡罗方法计算圆周率近似值

    利用蒙特.卡罗方法计算圆周率近似值 什么是蒙特.卡罗方法? 答:蒙特卡罗方法是一种计算方法.原理是通过大量随机样本,去了解一个系统,进而得到所要计算的值. 正方形内部有一个相切的圆,它们的面积之比是π ...

  8. 【机器学习】隐马尔可夫模型及其三个基本问题(二)观测序列概率计算算法及python实现

    [机器学习]隐马尔可夫模型及其三个基本问题(二)观测序列概率计算算法及python实现 一.前向算法 二.后向算法 三.前向-后向算法的python实现 参考资料 隐马尔可夫(HMM)模型的第一个基本 ...

  9. 标准化互信息NMI计算步骤及其Python实现

    Excellence is a continuous process and not an accident. 卓越是一个持续的过程而不是一个偶然事件. 原文地址:https://dreamhomes ...

  10. C语言----- 4/π=1-1/3+1/5-1/7+...,编程计算π的近似值,直到最后一项的值小于10-4次方为止 //输出π的值,并统计累加的项数

    代码如下: //利用 4/π=1-1/3+1/5-1/7+...,编程计算π的近似值,直到最后一项的值小于10-4次方为止 //输出π的值,并统计累加的项数 #include<stdio.h&g ...

最新文章

  1. 美多商城之用户登录(QQ登录)
  2. 高斯--塞德尔迭代法求方程组的解(Python实现)
  3. 前端请求后端数据的三种方式!
  4. 15行代码AC——习题3-3 数数字 (UVa1225,Digit Counting)
  5. Mysql 日期、字符串、时间戳互转
  6. 如何用texstudio下载ctex_公众号素材库视频如何下载,用这种方法就可以哦
  7. mac看图软件哪个好用_细数Mac上那些好用且免费的软件(三)
  8. os和shutil模块
  9. excel利用countif/match/lookup函数对比分析数据
  10. 8086架构/流水线及其优化
  11. Halcon:基本例程
  12. [导入]Reporting Services 3: 报表模型项目
  13. 「三分钟系列06」3分钟看懂http与https的区别
  14. Linux内核入门(六)—— __attribute_ 机制
  15. 用word怎么做c语言框图作业,在Word中绘制简单C语言流程图(精)
  16. 配置ACL隔离交换机的VLAN
  17. 计算机二进制祖宗是西方人?中国道教一张八卦图千年前早已解释!
  18. 【Travis CI使用教程】如何让定制你的travis.yml配置文件
  19. 性能优化 之 节流(throttle)与防抖(debounce) vue 使用
  20. Excel表格之道 学习笔记(四)

热门文章

  1. 虚拟机opnsense作为dhcp服务器,ESXI 与 OPNSense 配合
  2. PHP保存图片并且修改图片分辨率(DPI)
  3. 图像分割论文 “RANet : Region Attention Network for Semantic Segmentation”
  4. 如何加速android模拟器,Android模拟器运行慢怎么办 Android模拟器如何加速【加速方法】...
  5. 计算机光驱启动设置,bios设置光驱启动图文教程
  6. eigen一维向量_Eigen中的矩阵及向量运算
  7. AR图书,看着很美其实有点坑
  8. 【Python】 使用 xlwt 保存 excel 文件无效 解决
  9. 计算机科学对社会发展的作用,科学技术在计算机领域对社会发展的作用及影响...
  10. linux apache 查看mpm 配置方式,Apache Prefork、Worker和Event三种MPM详解