求s的近似值python,理查德外推法计算偏导数近似值-python实现
一阶偏导数
一阶偏导数
思路
自变量: 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实现相关推荐
- c语言表达式近似值,根据以下表达式计算π的近似值.要求误差不大于0.00001.
C语言 计算圆周率的近似值 填空 第一空pi=0第二空pi=pi+t第三空pi=pi*4这是利用了一个求pi的公式:pi/4=1-1/3+1/5-1/7. 9.以下不能正确计算代数式值的C语言表达式是 ...
- python最大公约数计算_使用Python求解最大公约数的实现方法
1. 欧几里德算法 欧几里德算法又称辗转相除法, 用于计算两个整数a, b的最大公约数.其计算原理依赖于下面的定理: 定理: gcd(a, b) = gcd(b, a mod b) 证明: a可以表示 ...
- python数学方程计算_用Python解方程
一元一次方程 例题1: 这是北师大版小学六年级上册课本95页的一道解方程练习题: 大家可以先口算一下,这道题里面的x的值为200 接下来我们用python来实现,代码如下,每一句代码后面都写有解释语: ...
- python编写程序 计算1_《Python程序设计》——第1章 计算与问题求解简介 1.1 计算与Python简介-阿里云开发者社区...
本节书摘来自华章计算机<Python程序设计>一书中的第1章,第1.1节,作者:[美]戴维 I.施奈德(David I. Schneider)著,更多章节内容可以访问云栖社区"华 ...
- python做电磁场计算_加速Python中的计算(模拟磁场中的粒子)
用Python编写的程序速度有问题.该程序是"模拟磁场中的铁磁颗粒",更具体地说是磁惰性液体.该程序可以工作,但与用C ++编写的相同程序相比非常缓慢,但是我用Python编写了一 ...
- python实现excel计算_用python实现简单EXCEL数据统计的实例
任务: 用python时间简单的统计任务-统计男性和女性分别有多少人. 用到的物料:xlrd 它的作用-读取excel表数据 代码:import xlrd workbook = xlrd.open_w ...
- python编写程序计算复利-使用Python函数计算复利
写一个函数,在给定的年数后,用给定的初始余额和利率计算银行帐户的余额.假设利息每年复利.在 出现错误"ValueError:索引28处不支持格式字符"I"(0x49)&q ...
- python输入个人所得税计算_用python实现个税计算器
介绍 我们开发了一个个税计算器,输入工资后,打印应缴纳的个税. 个税计算公式: 应纳税所得额 = 工资金额 - 各项社会保险费 - 起征点(3500元) 应纳税额 = 应纳税所得额 × 税率 - 速算 ...
- python输入个人所得税计算_用python写一个北京市的个税计算器
#应纳税的钱:税前收入-5000元(起征点)-专项扣除(五险一金等) #工资个税的计算公式为: #个人所得税=应纳税的钱×适用税率-速算扣除数 ''' 1.全月应纳税所得额不超过3000元: 税率:3 ...
最新文章
- Laravel5.2之Filesystem源码解析(下)
- 机器学习(MACHINE LEARNING)MATLAB中微分方程的求解
- lesson1-python3运算符
- R软件的下载及安装(截图步骤详细)
- java lock 信号_java各种锁(ReentrantLock,Semaphore,CountDownLatch)的实现原理
- linux编译ios动态库,[Linux] linux下生成静态库和动态库
- 作为Java开发工程师,如何高效优雅地编写接口文档
- 2021年新高考八省联考成绩查询福建,八省联考福建什么时候出成绩 2021八省联考福建成绩查询...
- 使用alias简化命令输入
- vbs 读unicode 编码格式的文件
- spark通过合理设置spark.default.parallelism参数提高执行效率
- python字符串与数字转换,python 字符串和整数的转换方法
- Linux内核私闯进程地址空间并修改进程内存
- 独立站运营到底要做什么!
- python-函数参数和文档
- android 触摸屏部分失灵,触摸屏失灵修复小技巧
- java编程找出吸血鬼数字,找出四位數的所有吸血鬼數字(JAVA)
- 微信小程序源码案例大全
- Rust交叉编译开发环境的搭建
- Windows10 LTSC 2021 开机 wsappx进程 CPU占用高
热门文章
- math_证明常用等价无穷小泰勒展开案例代换
- C语言没加取缔符能否运行,老生常谈 之runtime!
- Java中的包装类缓存
- seetaface6 android build(一)
- 用pandas进行数据分析:结合JData ”用户购买时间预测“数据分析实例(三)
- deleted entity passed to persist: [dcms.ebridge.market.entity.Reward#null]
- 想打通 Web 与小程序的账号系统?来试试知晓云吧
- 改变声音的方法有很多,推荐这三种
- spring学习感悟
- C语言各种类型之间转换详解