python求元函数极小值函数的极小值

上传人:豆浆 文档编号:39516570 上传时间:2018-05-16 格式:DOC 页数:15 大小:97.50KB
返回 下载 相关 举报
python求元函数极小值函数的极小值_第1页
第1页 / 共15页
python求元函数极小值函数的极小值_第2页
第2页 / 共15页
python求元函数极小值函数的极小值_第3页
第3页 / 共15页
python求元函数极小值函数的极小值_第4页
第4页 / 共15页
python求元函数极小值函数的极小值_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《python求元函数极小值函数的极小值》由会员分享,可在线阅读,更多相关《python求元函数极小值函数的极小值(15页珍藏版)》请在金锄头文库上搜索。

1、第第 7 章章 一元函数极小值一元函数极小值7.1 最优化方法简介最优化方法简介一、最优化方法一、最优化方法在给定条件下,尽你尽你力所能及地得出最好的解的方法称为最优化方法。最优化方法解决问题的一般步骤是:1. 构造一个数学模型 Q = f ( x1,x2,x3,. xn)应确保构造的模型有极小值。 2. 找出使 Q 最小的自变量 x1,x2, ., xn .如果 自变量只有一个, 即 Q = f( x ) , 则此时称为一元函数的最优化。下面我们只讨 论一元函数的最优化问题。二、求解一元函数最优化问题的求导数方法二、求解一元函数最优化问题的求导数方法如果 f(x) 可以写出解析式,并且可以求

2、导数, 设 x* 处是极化小值,则有f(x*)=0 f( x* ) 0 遗憾的是现实中, 我们导出的数据模型,很难求导数。三、求解一元函数最优化问题的搜索方法三、求解一元函数最优化问题的搜索方法求解一元函数最优化问题的搜索方法分为全面搜索法和逐步搜索法。 如果要求解 “对于 f(x) 在区间 a,b 上的极小点 x* “, 要求相对精度 =10E-5 则:| x 计算 - x* | ( |x 计算|+|x*| ) 我们此处仅介绍全面搜索法。 全面搜索法(也叫迈步法)全面搜索法(也叫迈步法)全面搜索法的计算方案:(1) 将区间 a,b 分成 n 等份,每份长度 dx=(b-a)/n 在每个分点上

3、计算函 数值,可以知道函数在哪个分点上的值最小,设为 Xmin。 (2) 新的求解区间为 Xm-dx, Xm+dx,记为 a1, b1 (3) 如果 a1 与 b1 很接近,即满足| a1 - b1 | ( |a1|+|b1| )则:我们要找的最小点是( Xm, f(Xm) ),结束搜索。否则:令 a=a1; b = b1 转(1)在海湾战争中,美军曾使用地毯式轰炸,就是一种二维迈步法,又称网格法,亦称拉网 法。 迈步法是搜索法中最基本的方法,它非常有效,缺点是计算量大了一点。在量子化学计算 中,X 计算方法就使用了这种方法( 我是从它的打印计算结果中分析出来的) 。例 1 : 求函数 的极小

4、点。的极小点。10)3()(2 xxf#coding=gbk#coding=gbk # # 迈步法求函数迈步法求函数 f(x)f(x) 在在a,ba,b的极小点的极小点 # #入口入口 : : # # f f 模型函数模型函数 # # a,ba,b 待优化参数的起始区间待优化参数的起始区间 a,ba,bdefdef maibu(maibu( f f , , a a , , b b ):):n n = = 2020whilewhile True:True:dxdx = = (b-a)/n(b-a)/nxminxmin = = a afminfmin = = f(xmin)f(xmin) forf

5、or i i inin range(1,n+1):range(1,n+1):xixi = = a+dx*ia+dx*ififi = = f(xi)f(xi)ifif fifmin:fifmin:fminfmin = = fifixminxmin = = xixia=a= xminxmin - - dxdxb=b= xminxmin + + dxdxifif abs(b-a)=abs(b-a)= 1E-51E-5 *(abs(a)+abs(b)*(abs(a)+abs(b) ):):returnreturn (a+b)/2(a+b)/2 defdef f(f( x x ):):returnret

6、urn (x-3)*2+10(x-3)*2+10xpxp =maibu(f,=maibu(f, -1000,1000)-1000,1000) print(“print(“极小值点极小值点:(“,xp,“,“,f(xp),“)“):(“,xp,“,“,f(xp),“)“)极小值点:( 3.0 , 10.0 )7.2 求一元弱酸的求一元弱酸的 pH 值值在分析化学中,我们已经学习过一元弱酸溶液的 pH 值的近似公式。CkH1在这里,我们试着用求极小值的方法去求解“精确”解,即不作近似。AHkHAOHHkwOH12电荷平衡:OHAH根据分布系数知:11*kHkCAHA所以:) 1 (.11*Hkw

7、kHkCHHA要想直解求解方程(2)有点困难。 我们构造模型函数:)2.(11*), 1,(2 Hkw kHkCHkwkCHfQHAHA将求解方程(2)的问题转化为求使用 Q 最小的H+ ,即问题转化为求一元函数极小值 的问题。说明:(2)式中 CHA, k1, kw 均为常数。例 2 求 0.01M HA( k1=1.8E-5)溶液的 pH.#coding=gbk#求 0.01M HA( k1=1.8E-5)溶液的 pH #-# 迈步法求函数 f(x) 在a,b的极小点 #入口 : # f 模型函数 # a,b 待优化参数的起始区间 a,b def maibu( f , a , b ):n

8、= 20while True:dx = (b-a)/nxmin = afmin = f(xmin) for i in range(1,n+1):xi = a+dx*ifi = f(xi)if fifmin:fmin = fixmin = xia= xmin - dxb= xmin + dxif abs(b-a)= 1E-5 *(abs(a)+abs(b) ):return (a+b)/2KW = 1E-14 C = 0.01 K1 = 1.8E-5 def f( pH ):H = 10*(-pH)OH = KW / HA = C *( K1/(H+K1)return ( H - (OH+A)

9、)*2 XP = maibu( f, 0, 14)print( “0.01M HA 的 pH=“, XP)0.01M HA 的的 pH= 3.381574下面我们研究用近似公式和精确解进行比较,依次计算 0.1 、0.01、0.001、0.0001、0.00001M 的 HA 溶液的 pH 值。#coding=gbk#求 0.1 0.01 0.001 0.0001 0.00001M HA( k1=1.8E-5)溶液的 pH #-# 迈步法求函数 f(x) 在a,b的极小点 #入口 : # f 模型函数 # a,b 待优化参数的起始区间 a,b def maibu( f , a , b ):n

10、= 20while True:dx = (b-a)/nxmin = afmin = f(xmin) for i in range(1,n+1):xi = a+dx*ifi = f(xi)if fifmin:fmin = fixmin = xia= xmin - dxb= xmin + dxif abs(b-a)= 1E-5 *(abs(a)+abs(b) ):return (a+b)/2KW = 1E-14 C = 1.0 K1 = 1.8E-5 def f( pH ):H = 10*(-pH)OH = KW / HA = C *( K1/(H+K1)return ( H - (OH+A) )

11、*2 import math for i in range(1,6):C = C/10XP = maibu( f, 0, 14)XJS = - math.log10(math.sqrt(K1*C)#用近似公式计算的 pHH = 10*(-XP)HJS = 10*(-XJS)re = (HJS-H)/H*100.0 #相对误差print( “%7.5fM HA 的 pH =%10.3f 近似计算 pH =%10.3f“ %(C,XP,XJS)print( “%7.5fM HA 的H=%10.2E 近似计算H=%10.2E 相对误差=%7.2f%“ %(C,H,HJS,re)0.10000M0.1

12、0000M HAHA 的的 pHpH = = 2.8752.875 近似计算近似计算 pHpH = = 2.8722.872 0.10000M0.10000M HAHA 的的H=H= 1.33E-031.33E-03 近似计算近似计算H=H= 1.34E-031.34E-03 相对误差相对误差= = 0.67%0.67% 0.01000M0.01000M HAHA 的的 pHpH = = 3.3823.382 近似计算近似计算 pHpH = = 3.3723.372 0.01000M0.01000M HAHA 的的H=H= 4.15E-044.15E-04 近似计算近似计算H=H= 4.24E

13、-044.24E-04 相对误差相对误差= = 2.14%2.14% 0.00100M0.00100M HAHA 的的 pHpH = = 3.9013.901 近似计算近似计算 pHpH = = 3.8723.872 0.00100M0.00100M HAHA 的的H=H= 1.25E-041.25E-04 近似计算近似计算H=H= 1.34E-041.34E-04 相对误差相对误差= = 6.93%6.93% 0.00010M0.00010M HAHA 的的 pHpH = = 4.4644.464 近似计算近似计算 pHpH = = 4.3724.372 0.00010M0.00010M H

14、AHA 的的H=H= 3.44E-053.44E-05 近似计算近似计算H=H= 4.24E-054.24E-05 相对误差相对误差= = 23.44%23.44% 0.00001M0.00001M HAHA 的的 pHpH = = 5.1455.145 近似计算近似计算 pHpH = = 4.8724.872 0.00001M0.00001M HAHA 的的H=H= 7.16E-067.16E-06 近似计算近似计算H=H= 1.34E-051.34E-05 相对误差相对误差= = 87.47%87.47%这个结果告诉我们,当弱酸的浓度比较大时,近似计算公式还是可以用的。例 3 计算 0.1M NaHA(草酸氢钠) 溶液的 pH 值 草酸氢钠的电荷平衡:*2AHAOHNaH上式中:上式中:2*11*2*1*2*11*1*/1 . 022kkkHHkkCAkkkHHkHCHAHkwOHNa #coding=gbk# 计算 0.1M NaHA(草酸氢钠) 溶液的 pH 值 # 已知 k

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号