一阶偏导数

一阶偏导数

思路

自变量: x0,...,xi+h,...,xn

带入理查德外推法公式,求对xi的偏导数

计算gradi: grad[grad0,...,gradi,...,null]

实现

import numpy as np

def computeGrad(pointFun, x, h):

temp = np.array(x)

grad = np.array(x)

for i in range(len(x)):

temp[i] += 0.5 * h

grad[i] = 4 * pointFun(temp) / (3 * h)

temp[i] -= h

grad[i] -= 4 * pointFun(temp) / (3 * h)

temp[i] += 3 * h / 2

grad[i] -= pointFun(temp) / (6 * h)

temp[i] -= 2 * h

grad[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 np

def 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 / 2

Hess[i, i] = 16 * pointFun(temp)

temp[i] -= epsilon

Hess[i, i] += 16 * pointFun(temp)

temp[i] += 3 * epsilon / 2

Hess[i, i] -= pointFun(temp)

temp[i] -= 2 * epsilon

Hess[i, i] -= pointFun(temp)

Hess[i, i] -= 30 * pointFun(x)

Hess[i, i] /= 3 * epsilon * epsilon

temp[i] = x[i]

# compute Zij

for i in range(len(x)):

for j in range(len(x)):

if j > i:

temp[i] += epsilon / 2

temp[j] += epsilon / 2

Hess[i, j] = 16 * pointFun(temp)

temp[i] -= epsilon

temp[j] -= epsilon

Hess[i, j] += 16 * pointFun(temp)

temp[i] += 3 * epsilon / 2

temp[j] += 3 * epsilon / 2

Hess[i, j] -= pointFun(temp)

temp[i] -= 2 * epsilon

temp[j] -= 2 * epsilon

Hess[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] /= 2

temp[i] = x[i]

temp[j] = x[j]

# compute fij'' use fii'' & Zij

for 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

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

  1. c语言表达式近似值,根据以下表达式计算π的近似值.要求误差不大于0.00001.

    C语言 计算圆周率的近似值 填空 第一空pi=0第二空pi=pi+t第三空pi=pi*4这是利用了一个求pi的公式:pi/4=1-1/3+1/5-1/7. 9.以下不能正确计算代数式值的C语言表达式是 ...

  2. python最大公约数计算_使用Python求解最大公约数的实现方法

    1. 欧几里德算法 欧几里德算法又称辗转相除法, 用于计算两个整数a, b的最大公约数.其计算原理依赖于下面的定理: 定理: gcd(a, b) = gcd(b, a mod b) 证明: a可以表示 ...

  3. python数学方程计算_用Python解方程

    一元一次方程 例题1: 这是北师大版小学六年级上册课本95页的一道解方程练习题: 大家可以先口算一下,这道题里面的x的值为200 接下来我们用python来实现,代码如下,每一句代码后面都写有解释语: ...

  4. python编写程序 计算1_《Python程序设计》——第1章 计算与问题求解简介 1.1 计算与Python简介-阿里云开发者社区...

    本节书摘来自华章计算机<Python程序设计>一书中的第1章,第1.1节,作者:[美]戴维 I.施奈德(David I. Schneider)著,更多章节内容可以访问云栖社区"华 ...

  5. python做电磁场计算_加速Python中的计算(模拟磁场中的粒子)

    用Python编写的程序速度有问题.该程序是"模拟磁场中的铁磁颗粒",更具体地说是磁惰性液体.该程序可以工作,但与用C ++编写的相同程序相比非常缓慢,但是我用Python编写了一 ...

  6. python实现excel计算_用python实现简单EXCEL数据统计的实例

    任务: 用python时间简单的统计任务-统计男性和女性分别有多少人. 用到的物料:xlrd 它的作用-读取excel表数据 代码:import xlrd workbook = xlrd.open_w ...

  7. python编写程序计算复利-使用Python函数计算复利

    写一个函数,在给定的年数后,用给定的初始余额和利率计算银行帐户的余额.假设利息每年复利.在 出现错误"ValueError:索引28处不支持格式字符"I"(0x49)&q ...

  8. python输入个人所得税计算_用python实现个税计算器

    介绍 我们开发了一个个税计算器,输入工资后,打印应缴纳的个税. 个税计算公式: 应纳税所得额 = 工资金额 - 各项社会保险费 - 起征点(3500元) 应纳税额 = 应纳税所得额 × 税率 - 速算 ...

  9. python输入个人所得税计算_用python写一个北京市的个税计算器

    #应纳税的钱:税前收入-5000元(起征点)-专项扣除(五险一金等) #工资个税的计算公式为: #个人所得税=应纳税的钱×适用税率-速算扣除数 ''' 1.全月应纳税所得额不超过3000元: 税率:3 ...

最新文章

  1. Laravel5.2之Filesystem源码解析(下)
  2. 机器学习(MACHINE LEARNING)MATLAB中微分方程的求解
  3. lesson1-python3运算符
  4. R软件的下载及安装(截图步骤详细)
  5. java lock 信号_java各种锁(ReentrantLock,Semaphore,CountDownLatch)的实现原理
  6. linux编译ios动态库,[Linux] linux下生成静态库和动态库
  7. 作为Java开发工程师,如何高效优雅地编写接口文档
  8. 2021年新高考八省联考成绩查询福建,八省联考福建什么时候出成绩 2021八省联考福建成绩查询...
  9. 使用alias简化命令输入
  10. vbs 读unicode 编码格式的文件
  11. spark通过合理设置spark.default.parallelism参数提高执行效率
  12. python字符串与数字转换,python 字符串和整数的转换方法
  13. Linux内核私闯进程地址空间并修改进程内存
  14. 独立站运营到底要做什么!
  15. python-函数参数和文档
  16. android 触摸屏部分失灵,触摸屏失灵修复小技巧
  17. java编程找出吸血鬼数字,找出四位數的所有吸血鬼數字(JAVA)
  18. 微信小程序源码案例大全
  19. Rust交叉编译开发环境的搭建
  20. Windows10 LTSC 2021 开机 wsappx进程 CPU占用高

热门文章

  1. math_证明常用等价无穷小泰勒展开案例代换
  2. C语言没加取缔符能否运行,老生常谈 之runtime!
  3. Java中的包装类缓存
  4. seetaface6 android build(一)
  5. 用pandas进行数据分析:结合JData ”用户购买时间预测“数据分析实例(三)
  6. deleted entity passed to persist: [dcms.ebridge.market.entity.Reward#null]
  7. 想打通 Web 与小程序的账号系统?来试试知晓云吧
  8. 改变声音的方法有很多,推荐这三种
  9. spring学习感悟
  10. C语言各种类型之间转换详解