数学期望 极小值的几种求法
前言:
其中一维搜索方法这种思想,在图像二值化里面有应用。像二维码算法里面的条形码二值化,就是这种算法的进阶版。
缺点是只能按照一个方向进行搜索,且步伐需要调整。
目录:
- 数学期望例子
- 一维搜索方法求极值
- 黄金分隔法求极值
一 数学期望例子
普查某种疾病,为此要抽验N个人血,有两种方法:
方案1: 每个人分别去检验,这需要检验N次
方案2: k个人混合在一起检验,如果检验出来呈阳性,就全部检测一次,需要K+1一次,否则只检验一次。
假设每个人呈阳性概率为p,阴性概率为q(q=1-p).
求: 如果按照第二种方案,可以减少检验次数,且k取什么值最合适
解:
X | ||
- |
X的数学期望为
N个人平均化验次数为
则,只要选择合适的k,使得
, 二阶导数小于0,有极小值
"""
Created on Fri Oct 16 14:41:02 2020@author: chengxf2
"""
import numpy as np
import matplotlib.pyplot as pltdef Draw():q = 0.9k = np.arange(2,20,1)L =1-np.power(q,k)+1/kplt.plot(k,L)plt.show()Draw()
要取合适的k,使得L最小.
除了牛顿迭代法, 这里介绍两种方法,一维搜索区间法,黄金分割法,求解极小值
二 一维搜索的搜索区间
迭代公式:
其中:
: 当前点
: 下一个点
: 步长因子
: 当前搜索的步伐大小,以及方向
如上图,极小值点具有如下特征:
思想:
从一点出发,找到大,小 ,大特征的三个点,如果一个方向不成功,就反过来寻找
算法流程:
初始化:
,其中h 为步伐
if
前进计算Forward
else(两点换位)
后退计算Backward
Forward( 前进计算)
if :
return [a, b] =[]
else
h = 2h
return Forward
Backward( 反向计算)
;
if
return
else
return Backward
# -*- coding: utf-8 -*-
"""
Created on Wed Oct 21 15:32:43 2020@author: chengxf2
"""import numpy as npclass Find():"""计算f值argskreturnf"""def Calc(self,k):#f= np.power(a,2)-7*a+10q = 0.9#k = np.arange(2,20,1)f =1-np.power(q,k)+1/kreturn fdef __init__(self):self.h = 1.0 #搜索步伐self.alpha = 1.0 #alphaself.iterNum = 0self.x0 = 2.0"""前进运算argsx1: 左边点x2: 中间点a3: 右边点"""def Forward(self,x1,x2,f1,f2,h):#print("\n Forward :",a1,a2,a3,f1,f2,f3,h)self.iterNum = self.iterNum+1x3 = x2+h*self.alphaf3 = self.Calc(x3) #调到step1if f2<=f3: #大 小 大 找到了 a = x1 #左边点b = x2 #中间点c = x3 #右边点return a,b,celse: #f2>f3 大 小 小 h = 2*hx1 = x2 #这个点是大的f1 = f2 x2 = x3f2 =f3return self.Forward(x1,x2,f1,f2,h) #再做前进运算"""反向运算argsa1: 左边点a2: 中间点a3: 右边点"""def Backward(self,x1,x2,f1,f2,h):#移动x1,x2 指针,保持x2为最小点位置x3 = x2+h*self.alphaf3 = self.Calc(x3)if f3>=f2: #大 小 大 找到了 a = x1 #左边点b = x2 #右边点c = x3 #极小点return a,b,celse: #f3<f2 大 小 小 h = 2*hx1 = x2 #这个点是大的f1 = f2 x2 = x3f2 =f3return self.Forward(x1,x2,f1,f2,h) #再做前进运算def Run(self):print("\n =======一维搜索===")a= 0b =0c = 0x1 = self.x0f1 = self.Calc(x1)x2 = x1+self.h*self.alphaf2 = self.Calc(x2)if f2<f1: # 前进运算h = self.ha,b,c=self.Forward(x1,x2,f1,f2,h)print("\n 左区间 : ",a,"\t 极小点 : ",b,"\t 右区间 ",c,"\t 迭代次数 ",self.iterNum)else: #后退算法h = -self.hm = x1 #a3 只是中间值,保存f1n = f1 x1= x2f1= f2x2 = mf2 = na,b,c = self.Backward(x1,x2,f1,f2,h)print("\n 反向 a: ",a,"\t b: ",b,"\c ",c)fd = Find()fd.Run()
运算结果
=======一维搜索===
左区间 : 3.0 极小点 : 4.0 右区间 6.0 迭代次数 2
三 黄金分隔法
缺点: 当区间有全局极小值,但是多个极小值的时候,无法找到全局极小值
算法流程
始终落在极小值区间[a,b]的黄金分割点上
算法流程:
迭代 (step1)
终止
if
跳转到step1
else
跳转到step1
# -*- coding: utf-8 -*-
"""
Created on Mon Oct 26 10:51:21 2020@author: chengxf2
"""import numpy as npclass Golden():"""一维函数Argsf: 概率值"""def Calc(self,x):q = 0.9f =1-np.power(q,x)+1/xreturn fdef __init__(self):self.tol = 0.5 #精度要去self.T = 0.618 #黄金分割系数self.k = 1 #迭代次数self.N = 100 #总人数self.a = 0self.b = 10"""迭代argsa: 区间左b: 区间右"""def Loop(self):a = 2b = self.Nfor k in range(self.N):x1 = a +(1.0-self.T)*(b-a) #x1x2 = a +self.T*(b-a) #x2点if (b-a)<self.tol :c = int((a+b)/2.0+0.5) #四舍五入取整数print("\n 极小值点 ",c)return cf1 = self.Calc(x1)f2 = self.Calc(x2)if f1>f2: #截取左边的 # 重新切换黄金分割点a = x1x1 = x2 x2 = x1+ self.T*(b-a)else:# print("\n 右边 截取 ")b = x2 #截取右边的x2 = x1 x1 = a + (1-self.T)*(b-a)gd = Golden()
gd.Loop()
数学期望 极小值的几种求法相关推荐
- 区分两种题目类型中的数学期望
在概率论和统计学中,数学期望(mean)(或均值,亦简称期望)是试验中每次可能结果的概率乘以其结果的总和(百度百科) 一种类型的题目:小明抽中彩票的概率为 p,小明重复进行抽奖,则其能抽中彩票所需的抽 ...
- 7种常见分布的数学期望及其证明
1.数学期望 (1)数学期望定义 离散型随机变量数学期望 定义1 设离散型随机变量 X X X的分布律为 P ( X = x i ) = p i , i = 1 , 2... P(X=x_i)=p_i ...
- 解题报告(一)F、(2018 ACM - ICPC shenyang I)Distance Between Sweethearts(数学期望 + 乘法原理 + FWT)(4.5)
繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...
- python 数学期望_python机器学习笔记:EM算法
完整代码及其数据,请移步小编的GitHub 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/MachineLearningNote EM算法也称期望最大化 ...
- CSU 1596 Dick.Z 的炉石赛 数学期望
1596: Dick.Z 的炉石赛 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 53 Solved: 39 [Submit][Status][We ...
- 数学期望,方差,标准差,样本方差,协方差,相关系数概念扫盲
数学期望 在概率论和统计学中,数学期望(mean)(或均值,亦简称期望)是试验中每次可能结果的概率乘以其结果的总和,是最基本的数学特征之一.它反映随机变量平均取值的大小. 再举个例子理解一下数学期望: ...
- c语言编程求数学期望,数学期望的计算方法与技巧.pdf
第22卷第3期 湖 南 工 业 大 学 学 报 VO1.22 NO.3 2008年5月 Journal of Hunan University of Technology Mav 2008 数学期望的 ...
- 数学期望、方差、标准差、协方差、残差、均方差、均方误差、均方根误差、均方根值对比分析及python实现
内容较多,如有错误之处请评论区留言以便更正,内容仅供参考. 文章目录 期望(Expected value) 意义 定义 离散型 连续型 期望与平均值的区别 方差(Variance) 案例 概率论方差 ...
- HDU - 4586 数学期望
题意 有一个骰子有n个面,掷到每一个面的概率是相等的,每一个面上都有相应的钱数.其中当你掷到某些面 一共m个面之一时,你有多掷一次的机会.问最后所得钱数的期望. 分析 数学期望是什么 数学期望就是一种 ...
最新文章
- Jupyter notebook与Spyder,以及Jupyter notebook与Spyder集成插件
- centos启动流程
- ios 系统状态栏样式修改_iOS设置状态栏样式,statusBarStyle
- c语言 如何连接两个程序,C语言连接两个链表程序
- Service rootservice does not have a SELinux domain defined
- python将excel数据批量导入sqlserver数据库
- 解决360Wifi无法在校园网和企业网下使用的方法
- [C]结构体数组初始化
- 使用JS实现对页面的繁体简体翻译转换
- 【第一组】第六次冲刺例会
- pytorch中实现Balanced Cross-Entropy
- 浏览器页签icon图标的设置和获取
- 点线面平面设计的概念是什么,分享点线结合构成设计图
- C# 读取CSV文件
- Python图片处理模块PIL操作方法(pillow)(转载)
- HEIC文件怎么打开,如何将HEIC格式转换为JPG格式
- 正向动力学与反向动力学
- SAP CO01(创建生产订单)/MIGO(发货投料)前台操作
- 必须收藏!企业邮箱申请的详细流程
- AdobeAcrobat DC pro 2019版JH教程