资源描述:
《python 求一元函数极小值-第7章 函数的极小值.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章一元函数极小值7.1最优化方法简介一、最优化方法在给定条件下,尽你尽你力所能及地得出最好的解的方法称为最优化方法。最优化方法解决问题的一般步骤是:1.构造一个数学模型Q=f(x1,x2,x3,.....xn)应确保构造的模型有极小值。2.找出使Q最小的自变量x1,x2,...,xn.如果自变量只有一个,即Q=f(x),则此时称为一元函数的最优化。下面我们只讨论一元函数的最优化问题。二、求解一元函数最优化问题的求导数方法如果f(x)可以写出解析式,并且可以求导数,设x*处是极化小值,则有f'(x*)=0f'
2、'(x*)<0遗憾的是现实中,我们导出的数据模型,很难求导数。三、求解一元函数最优化问题的搜索方法求解一元函数最优化问题的搜索方法分为全面搜索法和逐步搜索法。如果要求解"对于f(x)在区间[a,b]上的极小点x*",要求相对精度ε=10E-5则:
3、x计算-x*
4、<ε(
5、x计算
6、+
7、x*
8、)我们此处仅介绍全面搜索法。全面搜索法(也叫迈步法)全面搜索法的计算方案:(1)将区间[a,b]分成n等份,每份长度dx=(b-a)/n在每个分点上计算函数值,可以知道函数在哪个分点上的值最小,设为Xmin。(2)新的求解区间为
9、[Xm-dx,Xm+dx],记为[a1,b1](3)如果a1与b1很接近,即满足
10、a1-b1
11、<ε(
12、a1
13、+
14、b1
15、)则:我们要找的最小点是(Xm,f(Xm)),结束搜索。否则:令a=a1;b=b1转(1)在海湾战争中,美军曾使用地毯式轰炸,就是一种二维迈步法,又称网格法,亦称拉网法。迈步法是搜索法中最基本的方法,它非常有效,缺点是计算量大了一点。在量子化学计算中,Xα计算方法就使用了这种方法(我是从它的打印计算结果中分析出来的)。例1:求函数的极小点。#coding=gbk#迈步法求函数f(x)在[a,b]
16、的极小点#入口:#f模型函数#a,b待优化参数的起始区间[a,b]defmaibu(f,a,b):n=20whileTrue:dx=(b-a)/nxmin=afmin=f(xmin)foriinrange(1,n+1):xi=a+dx*ifi=f(xi)iffi17、000)print("极小值点:(",xp,",",f(xp),")")极小值点:(3.0,10.0)7.2求一元弱酸的pH值在分析化学中,我们已经学习过一元弱酸溶液的pH值的近似公式。在这里,我们试着用求极小值的方法去求解“精确”解,即不作近似。电荷平衡:根据分布系数知:所以:要想直解求解方程(2)有点困难。我们构造模型函数:将求解方程(2)的问题转化为求使用Q最小的[H+],即问题转化为求一元函数极小值的问题。说明:(2)式中CHA,k1,kw均为常数。例2求0.01MHA(k1=1.8E-5)溶液的pH.
18、#coding=gbk#求0.01MHA(k1=1.8E-5)溶液的pH#----------------------------------#迈步法求函数f(x)在[a,b]的极小点#入口:#f模型函数#a,b待优化参数的起始区间[a,b]defmaibu(f,a,b):n=20whileTrue:dx=(b-a)/nxmin=afmin=f(xmin)foriinrange(1,n+1):xi=a+dx*ifi=f(xi)iffi19、fabs(b-a)<=1E-5*(abs(a)+abs(b)):return(a+b)/2KW=1E-14C=0.01K1=1.8E-5deff(pH):H=10**(-pH)OH=KW/HA=C*(K1/(H+K1))return(H-(OH+A))**2XP=maibu(f,0,14)print("0.01MHA的pH=",XP)0.01MHA的pH=3.下面我们研究用近似公式和精确解进行比较,依次计算0.1、0.01、0.001、0.0001、0.00001M的HA溶液的pH值。#coding=gbk#求
20、0.10.010.0010.00010.00001MHA(k1=1.8E-5)溶液的pH#----------------------------------#迈步法求函数f(x)在[a,b]的极小点#入口:#f模型函数#a,b待优化参数的起始区间[a,b]defmaibu(f,a,b):n=20whileTrue:dx=(b-a)/nxmin=afmin=f(xmin)foriinr