infa_函数

合集下载

211232484_基于改进FA_算法与不完全Beta_函数的图像增强技术

211232484_基于改进FA_算法与不完全Beta_函数的图像增强技术

第40卷第2期Vol.40㊀No.2重庆工商大学学报(自然科学版)J Chongqing Technol &Business Univ(Nat Sci Ed)2023年4月Apr.2023基于改进FA 算法与不完全Beta 函数的图像增强技术沈汝涵,周孟然,凌㊀胜安徽理工大学力学与光电物理学院,安徽淮南232001摘㊀要:针对传统计算机在复杂图像信息分析以及后期处理不达预期的问题,提出了利用改进原始的萤火虫算法(FA )在不完全Beta 函数上动态寻优调整灰度曲线的光电图像增强新策略㊂新策略主要从算法角度出发改进传统FA 算法,针对原有的吸引度容易造成局部最优等问题引入新吸引度公式㊁针对算法陷入局部震荡添加自扰动和克服陷入局部最优的迭代检测环节,改进完成的新算法(Firefly Algorithm Growth ,FAG )结合非完全Beta 函数动态寻找最优值下的图像灰度曲线㊂将改进的FAG 与FA 新老算法在四种常见基准函数上进行对比实验测试他们的性能,结果显示改良FAG 算法在性能上更优;在改良FAG 结合非完全Beta 与FA 结合非完全Beta 增强同一图像的实验中加入直方图算法增强图像作为对照组,综合结果显示改进后的新策略更胜一筹㊂综合结果显示群智能算法在结合图像处理手段来达到图像增强的目的上具有很好的应用价值,新策略在低对比度条件下的光电图像实现了有效的增强㊂关键词:萤火虫算法;不完全Beta 函数;图像增强;融合算法中图分类号:TP301.6㊀㊀文献标识码:A ㊀㊀doi:10.16055/j.issn.1672-058X.2023.0002.009㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀㊀收稿日期:2022-01-10㊀修回日期:2022-02-25㊀文章编号:1672-058X(2023)02-0057-07作者简介:沈汝涵(1997 ),男,安徽淮南人,硕士研究生,从事智能控制与图像处理研究.引用格式:沈汝涵,周孟然,凌胜.基于改进FA 算法与不完全Beta 函数的图像增强技术[J].重庆工商大学学报(自然科学版),2023,40(2):57 63.SHEN Ruhan,ZHOU Mengran,LING Sheng.Image enhancement technology based on improved FA algorithm and incompleteBeta function[J].Journal of Chongqing Technology and Business University (Natural Science Edition),2023,40(2):57 63.Image Enhancement Technology Based on Improved FA Algorithm and Incomplete Beta Function SHEN Ruhan,ZHOU Mengran,LING ShengSchool of Mechanics and Optoelectronic Physics,Anhui University of Science and Technology,Anhui Huainan 232001,ChinaAbstract :Aiming at the problem that the traditional computer cannot meet the expectation in the information analysis and post -processing of complex images,a new photoelectric image enhancement strategy was proposed,which used the improved original firefly algorithm (FA)to dynamically optimize and adjust the gray curve on the incomplete Beta function.The new strategy mainly improved the traditional FA algorithm from the perspective of the algorithm,introduced a new attraction formula for the original attraction degree that was prone to local optimality,added self -perturbation to solve the problem that the algorithm fell into local oscillation,and avoided the iterative detection link that fell into local optimality.The improved new Firefly Algorithm Growth (FAG)was combined with an incomplete Beta function to dynamically search for image gray curve under optimal value.The improved FAG was compared with the old and new FA algorithms on four common benchmark functions to test their performance,and the results showed that the improved FAG algorithm was superior in terms of performance.In experiments where the same image was enhanced by the improved FAG combined with incomplete Beta and FA combined with incomplete Beta,the histogram algorithm was added to enhance the image as the control group,and the comprehensive results showed that the improved new strategy was superior.The results show that the swarm intelligence algorithm has a good application value in the combination of image processing means to achieve the purpose of image enhancement.The new strategy can effectively enhance photoelectric images under the condition of low contrast.Keywords :firefly algorithm;incomplete Beta function;image enhancement;fusion algorithm重庆工商大学学报(自然科学版)第40卷1㊀引㊀言人们的日常生活中缺少不了光电图像增强,不仅实用且应用广泛㊂针对不同的场合,增强后的图像不仅能够提升感兴趣部分,压抑不感兴趣的部分来提升整体对比度以获取更多的信息㊂常见的处理方法包括两种,一是直接对图像灰度级进行处理的算法,通常认为这是在空域操作,另外一种则是基于频域改变图像的变换系数值㊂不同非线性函数应用在不同灰度特性图像上,快速寻找出适合的非线性函数是待解决的主要问题㊂古良玲[1]对非完全beta函数进行改进,很好地解决了因确定Beta函数参数具有主观性㊁盲目性从而导致的图像增强效果不显著的问题,利用模拟退火算法提升了寻找参数的速度㊂王小芳[2]提出一种模糊蚁群算法,将图像经过灰度线性变换后将边缘点进行聚类,再利用蚁群搜索之后的多张边界图进行叠加得到增强的图片㊂两者的研究都是利用了群算法在快速搜索区域内最优解的基础上改良图像处理方法,前者关注点为图像的灰度曲线的自适应获取,后者则是图片的混合增强来增强图像边缘,为改进策略开拓了两种不同的思路㊂但古良玲采用的模拟退火算法在性能上仍然欠优,采用新的群算法会有更好的提升空间;王小芳混合图片只是对于前者的变化后的图片进行多次叠加来获取最优,容易引入人为误差㊂FATEENSEK[3]提出了IFA(Intelligent Firefly Algori thm)㊂IFA能高效解决全局优化的问题㊂这种改进从算法的底层逻辑加以完善,将原有的萤火虫位置公式从有规律可循变成随机形式,增加了算法的随机性㊂张慧宁[4]针对早熟收敛现象在萤火虫算法后期影响寻优而改进局部扰动,防止陷入局部最优,提高了局部寻优的效率,很好地提升了田舍的边界的区分度㊂俞文静[5]针对萤火虫算法改进位置更新策略克服了陷入极值的问题,采用自适应变步长策略同时改进了荧光素α的挥发与增益效率β,算法收敛性与图片清晰度都有一定的提升㊂张慧宁㊁俞文静的贡献是针对萤火虫陷入局部震荡的缺陷进行改良,效果显著㊂郭红山[6]对红外热区进行快速确定标示,用萤火虫优化算法进行半径动态数据更新在其决策域内,结果表明FA算法在增强红外图像领域效果显著㊂另外还有很多学者在群算法以及创新改进图像处理手段方面做出自己的贡献㊂本文研究内容主要从改进算法角度出发,改进原始FA函数,下文简称新函数FAG,改进的算法包括了从算法的初始化阶段的更新,以及核心的吸引力公式的改良㊂此外参考古良玲所采用的非完全Beta函数,利用改进的新群智能算法拟合非完全beta函数寻找图像的灰度曲线的最优值来增强图像㊂2㊀算㊀法2.1㊀萤火虫算法萤火虫算法(Firefly Algorithm,FA):一种新型群智能优化算法㊂标准萤火虫提出基于三个理论:其一是萤火虫不分性别,这样所有的萤火虫都可不分性别吸引周围的萤火虫,这种观念区分于其他群居算法例如狮群算法的性别分工以及蚁群算法的蚁后;第二点是萤火虫之间的吸引力随着荧光的亮度增加而增加与随距离的增加而减少;第三点萤火虫亮度应由待优化的目标函数决定[7]㊂总结来说就是萤火虫自身因目标函数而存在光亮,带较暗荧光的萤火虫会被亮度较亮的萤火虫所吸引,也就是带有更好的目标函数的萤火虫,并且向之移动且更新自身的定位,而相同亮度的萤火虫不会互相吸引,而是随机运动㊂萤火虫的荧光相对亮度计算为l=l0ˑe-γr ij(1)笛卡尔距离r ij计算公式如下:r ij= x i-x j =ðd k=1x i,k-x j,k()2(2) l0为初始亮度㊂吸引力的定义为如下:β=β0ˑe-γr2ij(3)式(3)中的β0为最大吸引强度,萤火虫移动的距离与吸引度的值成正比,从多篇文献的实验结果来看β0通常可以取值为1[8]㊂γ的值代表了空气吸收光率,取值范围通常在(0.1,10)之间,不同的问题在取值的时候差异会较大㊂位置更新函数:x^i=x i+βˑx j-x i()+αεj(4) x i与x j是萤火虫的各自位置,x^i为更新后空间位置,步长α范围在(0,1)之间,εj是随机数向量㊂2.2㊀图像的非线性增强图像的线性增强主要通过线性函数,主要的思想是通过将图像的灰度范围压缩或者拓展变成一个新的灰度范围即增强原图里的两个灰度值间的动态范围来拉伸感兴趣的区间从而达到增强图像的目的㊂而非线性图像增强则是通过非线性映射算法,通常我们常用的方法是通过几种运算,指数㊁对数运算以及幂运算㊂非线性变换往往通过灰度压缩,来增强其他范围的图像信息来改善整张图片的信息㊂更常见的就是直方图85第2期沈汝涵,等:基于改进FA 算法与不完全Beta 函数的图像增强技术增强,直方图通过积分概率密度函数转化为概率密度为1的图像,从而达到增强图像的作用,直方图均衡化的实质也是一种特定区域的展宽,但是会导致图像曝光严重,造成一定失真㊂当原始图像给定时,对应的直方图增强的效果也是固定的,所以应用的场景较为简单,不能处理复杂的图像㊂丁生荣[9]提出一种基于非完全Beta 函数的图像增强算法,此文解决了遗传算法等自适应确定Beta 函数参数㊂其实也就是选择优化非线性函数的取值,最优参数的获得意味着最优的灰度变化曲线,即可以自适应并且增强图像㊂首先将不完全Beta 函数归一化:F (α,β,x )=B -1(α,β)x ʏx 0t α-1(1-t )β-1dt(0<α,β<10)(5)其中B(α,β)=Γ(α)Γ(β)/Γ(α+β),通过调整α,β参数可以得到四种非线性曲线㊂当α>β时对亮区进行拉升,α<β则是增大暗区的灰度差别,α=β=1时为直线㊂处理步骤如下:先判断图像的色彩如果是彩色则处理如下:f ᶄ(x ,y )=f (x ,y )-G minG max -G min(6)f ᶄ(x ,y )表示归一化后的灰度值,G max 和G min 是灰度的最大与最小值,f (x ,y )ɪ[G max ,G min ],所以f ᶄ(x ,y )ɪ[0,1]㊂F (u )为归一化后的非完全Beta 函数(0<0<1),公式如下:gᶄ(x ,y )=F f ᶄ(x ,y )()0ɤgᶄ(x ,y )ɤ1()(7)其中,G max =255,G min =0㊂将图像的优化函数作为图像的方差,对于M ˑN 大小的图像计算方法如下㊂f (I )=1MN ðM i =1ðN j =1I 2(x ,y )-∣1MN ðM i =1ðNj =1I (x ,y )2(8)2.3㊀经典萤火虫算法及改进算法介绍针对原始萤火虫的步长通常设置为固定值,不能在算法的前期后期很好地适应萤火虫的搜索需求的问题以及萤火虫步长周围并没有更优的荧光吸引导致保持原位置不更新等问题,众多学者采取了一些可行且有效的策略加以改进㊂FARAHANI 等[10]提出一种混合算法将GA 与FA融合将两个子群交换后再进行下一轮迭代,提高了萤火虫算法的前期搜索的效果的同时采用Gauss 函数随机设置步长㊂另外在前期的超级个体会大量地吸引其他大型个体导致了种群数数的大量下降,导致的收敛能力的下降甚至停滞㊂符强[11]在他的改进算法中提出将萤火虫分成若干个子群,利用不同的寻优方式进行迭代,其中他设置了三次迭代对比最优值的检测环节来判断算法是否陷入最优发生早熟,此外决策层萤火虫的设置为子群向有着更优值的子群学习提供了很好的例子,能够很好地跳出震荡㊂李肇基[12]在萤火虫算法中加入了进化模型改进了萤火虫的随机分布的混沌优化策略,他关注到萤火虫的初始化分布通常会导致有规律可循等问题,导致种群分布不均,混沌优化很好地解决了这种初始就聚集的情况㊂另外也提到了改进萤火虫步长,他提出的是一种权重设置,步长的权重随着萤火虫取得的最优解来自适应确定,体现出了萤火虫的差异性,增加了算法的适应性㊂左仲亮[13]在文章中提出改进轮盘赌问题中的个别萤火虫在初始化中距离最优萤火虫较远而不移动,此外还吸引了周围更劣萤火虫聚集的问题,所以他提出让这些萤火虫在初始阶段先进行20次的无序随机移动,并且比较结果,选取中间最优的位置作为更新位置㊂这种思路可以很好地解决初始位置问题㊂王航星[14]则针对这种范围内没有目标而不更新的萤火虫提出了一种自适应吸引距离,根据萤火虫自身的荧光限制周围萤火虫的被吸引数量,减少了算法跟踪更新位置而造成的过量计算,能够很好地提升算法的速度,降低运行时间㊂左仲亮做出的改进是提出优化策略使算法的初始化更加随机增加算法的算力,避免振荡陷优;李肇基建立的是萤火虫的个体差异,每一个萤火虫都是独一无二的,增加算法随机性;王航星的自适应吸引范围能够限制萤火虫的劣性聚集;符强设置决策层为萤火虫更新提供模板,众学者的改进想法为进一步改进提供了思路㊂2.4㊀改进萤火虫算法(FAG )在本文中加入随机因素来进行扰动㊂根据已有公式构建了一个新的吸引度公式如下β=β0e-γr 2iyR i(9)其中,R i 取指数分布,并且在迭代的过程中会进行位置的判定,如果在某个最优点停留的次数超过某个阈值时,会让全体点中最好的百分之二十替换最差的百分之二十,其余的点进行高斯变异㊂此外参考了GAUSS 函数随机步长设计了一种新的递减步长,有利于迭代的前几轮能够大范围有效搜索,步长衰减有利于迭代后期的精细搜索[15]㊂95重庆工商大学学报(自然科学版)第40卷α=α0δt S(10)其中,衰减系数δ取值(0,1),t 为迭代时间,目标域S 为目标函数的待优化区域㊂于是新的位置更新移动公式为x ^i =x i +β0e-γr xy 2R i (x j -x i )+α0δt S(11)2.5㊀算法FAG -N -B 增强图像算法流程(1)读入图片并判断是否为灰度图片,彩色图则进行灰度化处理和归一化处理㊂(2)初始化算法环境并定义目标函数以及设置算法参数和迭代的回数㊂(3)利用改进算法,将原步长替换为改进的衰减步长,进行位置更新并迭代,标记停留最优解超过迭代次数阈值的嫌疑个体,选取全体百分之二十的优秀个体替代最差的百分之二十个体㊂找出最优解,并赋值给拟合函数[16]㊂(4)输出反归一化的图像增强后的图片㊂3㊀实验仿真部分设计基准函数的对比实验测试并检验新算法的性能,比较新型萤火虫算法在光电图像上的增强效果㊂基准函数对比实验的主要目的是体现出新老算法在性能上的优劣,有助于下一步改进方案,图像增强对比实验是从感官和数据两方面直观体现出算法的性能的优劣㊂此次实验环境为Window 10系统,处理器为Intercore -I5-5200u -2.20HZ,运行内存8GB 的计算机,开发软件使用的是MatlabR2020b㊂3.1㊀基准函数对比试验本文采用4组实验对照新老算法在基准函数上的收敛以及寻优情况(表1)㊂种群规模设置为30,迭代500次㊂变量的上边界以及下边界设置为10和0.5,初始步长设置为0.2,递减系数δ取0.95[17]㊂表1㊀基准函数Table 1㊀Reference function基准函数表达式F 1=1+14000ðDi =1x 2i-ᵑD i =1cosx ii()F 2=max x i x i ,1ɤi ɤn {}F 3=ðn i =1x2i -10cos 2πx i ()+10[]F 4=-20exp -151nðn i =1x2i()-exp1nðn i =1cos (2πx )i()(+20+e在基准函数F 2下可以看到改进FAG 收敛速度与趋势明显较传统FA 加快,且传统FA 算法在迭代50次附近,以及到100次附近跳出局部最优的效果并不好,在120次迭代附近彻底收敛㊂从F 1基准函数迭代曲线看出FAG 收敛速度前期20次迭代次数内不如原始FA,但是在解决陷入最优解的问题方面以及过早收敛的方面表现更优,F 3,F 4并且基本在迭代30次左右就能彻底超过FA,并且在基准函数F 3测试中FAG 在50次㊁100次左右以及250次以后的克服陷入局部最优的自动调节得到较好地体现(图1)㊂I t e r a t i o n 100200300400500O p t i m u m f i t n e s s1010-10B e s t s c o r e o b t a i n e d s o f a rF AF A G(a )F 1迭代寻优曲线I t e r a t i o n 100200300400500O p t i m u m f i t n e s s10010-10B e s t s c o r e o b t a i n e d s o f a rF AF A G(b )F 2迭代寻优曲线I t e r a t i o nO p t i m u m f i t n e s s10010-20B e s t s c o r e o b t a i n e d s o f a rF AF A G(c )F 3迭代寻优曲线6第2期沈汝涵,等:基于改进FA 算法与不完全Beta 函数的图像增强技术I t e r a t i o n100200300400500O p t i m u m f i t n e s s1010-10B e s t s c o r e o b t a i n e d s o f a rF AF A G(d )F 4迭代寻优曲线图1㊀4种基准函数对照图Fig.1㊀Comparison diagram of four benchmark functions3.2㊀图像增强实验为了验证FAG 与不完全Beta 函数自适应图像增强算法的可行性,选取一幅低对比度图像进行增强实验并展示效果:种群规模MP =30,迭代500次Max Cycle =500,个体的范围大小为(0~255)㊂除了应该首先通过视觉上的主观感受来判断改良的算法在光电图像增强上的效果,还应该通过客观精确的评价标准来进行衡量,所以引入均方差(MSE )以及信息熵和交叉熵作为对比优劣的依据[18]㊂MSE 公式如下:MSE =ðM i =1ðNj =1(f (i ,j )-g (i ,j ))2MN(12)信息熵公式:E 2=ðL -1i =0P e (i )lb P e (i )[](13)以及交叉熵的计算公式:CE (T ,V ,F )=CE (T ,F )+CE (V ,F )2(14)CE (T ,F )=ð255i =0h T (i )log 2h T (i )h F (i )(15)CE (V ,F )=ð255i =0h V (i )log 2h V (i )h F(i )MSE 表示大小M ∗N 的原图f 和增强后图像g 的均方误差,对比度信息转变为数字的大小㊂方差较小则表示图像在此区域内较为平缓,变化的幅度有限,信息表现较少,方差大则刚好相反㊂信息熵则是最直接反映图像细节内容量的评价标准,信息熵数值与呈现的信息量成正比㊂图片通过增强之后,理论上在明暗变化上会更加强烈,信息熵相比会增加,信息熵越高也可以认为是图片的质量越高,交叉熵计算得到的值越小代表和原来两幅图像一致,保留的细节也就越多㊂扭曲程度反映了图像的光谱失真程度㊂通过对每幅图像独立运行20次求出原始图像与另外增强方法得到的图像的亮度㊁对比度和信息熵,将其看作客观定量评价指标,得到以下结果,请见下表2㊂表2㊀增强图像数据对比Table 2㊀Data comparison of enhanced images算㊀法FAG -N -betaFA -N -beta 直方图增强MSE 6.1938e +035.9654e +093.3421e +10信息熵(bit )7.887.237.50交叉熵7.42 5.067.65扭曲程度78.9555.00132.85标准差74.4342.5969.85图2(a)为原始图片,图2(b)表示的是FAG 算法结合非完全BETA 函数,图2(c)表示原始FA 算法,最后一张为直方图增强的结果㊂多次独立运行得出数据排除错误数据进行平均处理可以克服因智能算法的随机性带来的影响㊂图2(b)㊁图2(c)可以看出FAG 结合非完全Beta 在亮度,对比度方面相较于原图以及其他两种算法的提升颇为明显,说明了本文的增强算法性能取得较大改善,在图像清晰度的方面能够保证与原图的基本持平㊂而对比原始FA -N -B 增强算法以及FAG -N -B 增强算法,可以发现在细节处的明暗表现更加保真而不至于过曝光,最显而易见的就是4张图左上方的住宅楼的外窗轮廓,原图几乎不可见,增强后的图片都将这一部分信息体现了出来,而直方图增强算法的增强效果虽然突出了感兴趣的部分,但是地面阴影区域信息丢失严重,图像的深色区域出现过曝光的问题,增加了噪声,影响了图片的整体清晰度,且直方图增强后的图片的光谱色彩失真较为严重,在非线性的增强策略中FAG -N -B 取得了较好的效果㊂(a )原图像16重庆工商大学学报(自然科学版)第40卷(b )FAG -N -B增强图像(c )FA -N -B增强图像(d )直方图增强图像图2㊀4种算法图像增强效果图Fig.2㊀Image enhancement effect of four algorithmsMSE 对比中FAG -N -beta 的数据最大,数字大小体现出来FAG -N -beta 增强的图片明暗对比最大,区域变化较大,增强效果更好;信息熵的对比中同样也是FAG -N -beta 策略增强效果更好㊂在交叉熵中FAG -N -beta 与直方图数据近似但是都要优于FA -N -beta 的增强效果;扭曲程度的对比直方图的失真程度较大,FA -N -beta 增强效果虽然较FAG -N -beta 更好,这是我们需要继续改进的地方但是结合前几项对比,综合考量还是FAG -N -beta 的整体图片增强效果更优㊂4㊀结㊀论从图1的对照实验可以发现在四个基准函数下改进FAG 收敛速度与趋势明显较传统FA 加快,且传统FA 算法在迭代50次附近,以及到100次附近跳出局部最优的效果并不好,而改进FAG 在100次不到的迭代的次数内已经彻底超过FA㊂通过观察改进算法FAG 与原FA 算法的寻优迭代实验结果,可以得出FAG 算法在收敛速度以及精度上都有很好的提升,算法跳出局部最优的能力和鲁棒性相较于原有FA 算法效果更好㊂从表2的对比原始图像的数据上看,FAG -N -B 与FA -N -B 对比MSE 以及信息熵均是改进算法FAG 结合非完全beta 取得更好的效果,图片的信息表现得更充分㊂所以从两方面的数据显示,以及最后图片呈现的效果来说改进FAG 算法比原FA 算法表现更好,FAG -N -B 算法在增强图片的性能方面较原始的算法来说有不小的提升㊂FA 作为一种新型群智能算法,相比粒子群和蚁群等具有良好的全局收敛性能和稳定性,但仍然存在一系列问题㊂利用萤火虫算法的快速搜索的特性,应用在图像处理领域,针对其发现率低㊁求解精度不高㊁求解速度慢等因素改进原算法,为了提高算法的性能,引入了随机因素来产生扰动破坏局部最优解,以及加入了疑似陷入最优解后的自检步骤,另外补充了改进版本的递减步长,在4种不同类型的基准函数上也取得了不错的结果,稳定收敛㊂非完全Beta 拟合灰度图像变换函数后,FAG 算法寻优动态α,β利用最佳的灰度曲线增强图像㊂多种改进机制的融合,算法的初期全局的探测的水平得以提升,并且在后期的局部搜索的能力也并没有降低,达到了两者很好地结合,体现了新策略的有效性㊂参考文献 References1 ㊀古良玲 王玉菡.基于模拟退火遗传算法的图像增强 J .激光杂志 2015 36 2 19 22.GU Liang-ling WANG Yu-han.Image enhancement based onsimulated annealing genetic algorithm J .Laser Magazine2015 36 2 19 22.2 ㊀王小芳 邹倩颖 彭林子 等.融合模糊聚类的蚁群图像增强算法 J .数据采集与处理 2020 35 3 506 515.WANG Xiao-fang ZOU Qian-ying PENG Lin-zi et al .Ant colony imageenhancementalgorithmbasedonfuzzyclustering J .Journal of Data Acquisition &Processing2020 35 3 506 515.3 ㊀FATEEN S E K BONILLA-PETRICIOLET A.Intelligent fireflyalgorithm for global optimization M .Cuckoo Search and FireflyAlgorithm.Springer vol 516 2014 .4 ㊀张慧宁 郭红山.基于改进萤火虫算法的模糊农业遥感图26第2期沈汝涵,等:基于改进FA算法与不完全Beta函数的图像增强技术像增强效应J .江苏农业科学2017 45 1 205 208. ZHANG Hui-ning GUO Hong-shan.Enhancement effect of fuzzy agricultural remote sensing image based on improved firefly algorithm J .Jiangsu Agricultural Sciences 2017 451 205 208.5 ㊀俞文静刘航李梓瑞等.基于改进萤火虫优化算法的视频监控图像增强J .计算机技术与发展2020 304 195 199.YU Wen-jing LIU Hang LI Zi-rui et al.Video surveillance image enhancement based on improved firefly optimization algorithm J .Computer Technology and Development 2020 30 4 195 199.6 ㊀郭红山张慧宁.基于萤火虫算法的农业遥感图像增强研究J .浙江农业学报2016 28 6 1076 1081. GUO Hong-shan ZHANG Hui-ning.Research on agricultural remote sensing image enhancement based on firefly algorithm J .Acta Agriculturae Zhejiangensis 2016 28 6 1076 1081.7 ㊀王沈娟高晓智.萤火虫算法研究综述J .微型机与应用2015 34 8 8 11.WANG shen-juan GAO Xiao-zhi.A survey of firefly algorithms J .Microcomputer&Its Applications 2015 348 8 11.8 ㊀ZHOU L DING L MA M et al.An accurate partially attracted firefly algorithm J .CrossRef 2018 1015 477 493.9 ㊀丁生荣马苗郭敏.人工鱼群算法在自适应图像增强中的应用J .计算机工程与应用2012 48 2 185 187. DING Sheng-rong MA Miao GUO Min.Application of artificial fish swarm algorithm in adaptive image enhancement J .Computer Engineering and Applications 2012 482 185 187.10 FARAHANI S M ABSHOURI A A NASIRI B et al.An improved firefly algorithm with directed movement C // Proceedings of20114th IEEE International Conference on Computer Science and Information Technology ICCSIT2011 VOL04.Institute of Electrical and Electronics Engineers 2011 4.11 符强童楠赵一鸣.一种基于多种群学习机制的萤火虫优化算法J .计算机应用研究2013 30123600-3602 3617.FU Qiang TONG Nan ZHAO Yi-ming.A firefly optimization algorithm based on multi population learning mechanism J .Computer Application Research 2013 30123600-3602 3617.12 李肇基程科王万耀等.一种改进的进化模型和混沌优化的萤火虫算法J .计算机与数字工程2019 4771605 1612.LI Zhao-ji CHENG Ke WANG Wan-yao et al.An improved evolutionary model and chaotic optimized firefly algorithm J .Computer and Digital Engineering 2019 4771605 1612.13 左仲亮郭星李炜.一种改进的萤火虫算法J .微电子学与计算机2018 35 2 61 66.ZUO Zhong-liang GUO Xing LI Wei.An improved firefly algorithm J Microelectronics and Computer 2018 35261 66.14 王航星潘巍.基于自适应吸引半径的萤火虫算法的粒子滤波J .计算机应用研究2019 36 12 3632 3636.WANG Hang-xing PAN Wei.Particle filter of firefly algorithm based on adaptive attraction radius J .Computer Application Research 2019 3612 3632 3636.15 王奎黄福珍.基于光照补偿的HSV空间多尺度Retinex图像增强J .激光与光电子学进展1 20.WANG Kui HUANG Fu-zhen.HSV spatial multi-scale Retinex image enhancement based on illumination compensation J .Laser&Optoelectronics Progress 1 20.16 PENG Qiong.A self-adaptive step glowworm swarm optimizationapproach J .International Journal of Computational Intelligence and Applications 2019 18 1 2022 59 10 102 113.17 宋娟全惠云.图像增强技术中的智能算法J .华东师范大学学报自然科学版2007 3 93 99.SONG Juan QUAN Hui-yun.Intelligent algorithm in image enhancement technology J .Journal of East China Normal University Natural Science 2007 3 93 99.18 刘畅刘利强张丽娜等.改进萤火虫算法及其在全局优化问题中的应用J .哈尔滨工程大学学报2017 38 4569 577.LIU Chang LIU Li-qiang ZHANG Li-na et al.Improved firefly algorithm and its application in global optimization problems J .Journal of Harbin Engineering University 2017 38 4 569 577.责任编辑:陈㊀芳36。

updateGatewayNode

updateGatewayNode

-XX:GCTimeRatio=9
-XX:MaxPermSize=128m
-DFrameworksLogFilePath=services/AdministratorConsole/_AdminConsole_jsf.log
-Djava.rmi.server.hostname=xkzenon
-classpath
/infa/Informatica/9.5.0/services/shared/jars/platform/infatomcatbootstrap.jar:/infa/Informatica/9.5. 0/tomcat/bin/bootstrap.jar:/infa/Informatica/9.5.0/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/infa/Informatica/9.5.0/tomcat/temp/_AdminConsole -Dcatalina.home=/infa/Informatica/9.5.0/tomcat -Djava.io.tmpdir=/infa/Informatica/9.5.0/tomcat/temp/_AdminConsole/temp -Djava.util.logging.config.file=/infa/Informatica/9.5.0/tomcat/temp/_AdminConsole/conf/logging. properties -DINFA_PLUGINS_HOME=/infa/Informatica/9.5.0/plugins
rmatica.isp.tools.tomcatstarter.InfaTomcatBootstrap start infa 30640 30491 2 15:26 pts/6 00:00:01 UENfUkVQ

INFO教学

INFO教学

INFA教学1、岗位介绍(基于数据流动方向进行岗位介绍)2、ETL介绍(处理流程,转换例子)3、info介绍(功能介绍,组建介绍)3、数据仓库介绍(上游数据源、层次、下游应用系统)4、数据仓库项目介绍(结合农信银和哈尔滨银行项目进行介绍)5、java项目介绍(项目流程)1、Informatica中,Update组件叫什么?更新机制?2、Informatica中,LookUp组件有哪几类?区别是什么?3、Informatica中,如何调用存储过程?4、Informatica中,工作流控制有哪些组件?5、Informatica优化方案?ETL是什么?ETL是数据抽取(Extract)、清洗(Cleaning)、转换(Transform)、装载(Load)的过程。

是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。

INFA发展史:Informatica,1993年创立于美国加利福尼亚州,并于1999年4月在纳斯达克上市。

作为全球领先的独立企业数据集成软件提供商,Informatica 帮助世界各地的组织为其首要业务提供及时、相关和可信的数据,从而在当今全球信息经济中获得竞争优势。

借助Informatica全面、统一、开放且经济的数据集成平台,组织可以在改进数据质量的同时,访问、发现、清洗、集成并交付数据,以提高运营效率并降低运营成本。

Informatica平台是一套完善的技术,可支持多项复杂的企业级数据集成计划,包括:企业数据集成、大数据、数据质量控制、主数据管理、B2B Data Exchange、应用程序信息生命周期管理、复杂事件处理、超级消息和云数据集成。

PowerCenter的优势:(1). 可视化界面,方便管理R。

(2). 可视化界面,开发简单D。

(3). 可视化界面,维护方便D、W。

(4). 可视化界面,错误排查M。

41 导数中不等式的证明问题(学生版)

41 导数中不等式的证明问题(学生版)

专题41导数中不等式的证明问题【高考真题】1. (2022•北京)已知函数/(x) = e*ln(l+x).(1)求曲线y = fa)在点(。

,/(0))处的切线方程;(2)设g*)=rα),讨论函数g*)在。

+8)上的单调性;(3)证明:对任意的S, £€(0, +∞),有"s+E)>f(s)+f(f).2. (2022•浙江)设函数/(X) = ± + lnx(x>0). Ix(1)求/O)的单调区间;(2)已知α"eR,曲线y =7。

)上不同的三点(国,/(8)),(巧Ja2)),(孙/(巧))处的切线都经过点3 3.证明:(i )⅛α> e ,则O<b-f(α) <g(∕-1);・・-4⅛.z% mf2 e -4 112 e —。

(11)若OVaVe, X] <A⅛<Λ⅞ ,贝∣]一 + -^-V — + 一< -- T -e oe Xy Xy ci oe(注:e = Z71828…是自然对数的底数)3. (2022・新高考∏)已知函数/(x) = XeS-e,(1)当。

=1时,讨论/*)的单调性;(2)当“>。

时,/(x)v-1,求α的取值范围;(3)设〃eN*,证明:-/= + -/^=+,,+T^=>ln(72 + 1)- √12+ 1 √22+2 y∣n2+n【方法总结】构造法证明不等式是指在证明与函数有关的不等式时,根据所要证明的不等式,构造与之相关的函数,利用函数单调性、极值、最值加以证明.常见的构造方法有:(1)直接构造法:证明不等式力r)>g(x)(∕(x) Vga))转化为证明y(x)—g(x)>o(/u)—g(X)V0),进而构造辅助函数〃(X)= 火防一g(x);(2)适当放缩构造法:X一是根据已知条件适当放缩,二是利用常见的放缩结论,如lnx≤r-l, e v≥r+l, InκVχVeYQO),币≤ln(x + l)≤x(x>-1); (3)构造“形似”函数:稍作变形再构造,对原不等式同解变形,如移项、通分、取对数,把不等式转化为左、右两边是相同结构的式子的形式,根据“相同结构”构造辅助函数;(4)构造双函数:若直接构造函数求导难以判断符号,导函数零点也不易求得,因此函数单调性与极值点都不易获得,则可构造函数Kr)和g(x),利用其最值求解.【题型突破】1 .己知函数y(x)="—αdnχ-l(a£R, tz≠O).(I)讨论函数AX)的单调性;(2)当x>l 时,求证:—^>⅛-1. x—1 e A2 .已知函数外)=1—3」,g(x)=χ-Inx.(1)证明:g(x)≥l;(2)证明:(x-inx)成x)>l-±∙3 . (2021 •全国乙)设函数/(x)=ln(α-x),已知X=O是函数y=M(x)的极值点.⑴求〃;(2)设函数g。

清华大学微积分B1课程讲义及习题答案

清华大学微积分B1课程讲义及习题答案

(2) Z+. (思路: 当" ! 1, G¯" = {a1, a2, . . . , an, . . . }, 即当"足够大时, A的"邻域可包
含{a1, a2, . . . , an, . . . }, 此时G" = Z+. 注意等号的位置.)
证明: 令M=max{|a1 A|, |a2 A|, . . . , |an A|, . . . }, 8"M > M, G¯"M = {x|x 2
<
pp 2, 故 2是S的上界. p
8c < 2, 9x 2 (c, 2), x > c(满足定理1.2.3的第二个条件), 故supS= 2.
4. 若A,B为R中的非空有界集,则A[B与A\B也是有界集,并且 inf(A[B)=min{infA,infB}, sup(A[B)=max{supA,supB},
1.3.3 习题1.3解答
8
8
1.
设f (x)
=
<x + :0,
1,
1.2.2 定理1.2.3的证明
定理1.2.3 设E为非空集合, a, b为实数. 则有
(1) b=supE的充分必要条件是下列两个条件同时满足:
1 b是E的一个上界; 2 对于任意满足c < b的实数c, 9x 2 E, 使得x > c.
(2) b=infE的充分必要条件是下列两个条件同时满足:
1 a是E的一个下界; 2 对于任意满足c > a的实数c, 9x 2 E, 使得x < c.
微信: 18811708556 • 基础习题课的教学目标:
– 使同学掌握课程基本内容 – 使同学掌握常见问题的一般解法 – 使同学学会正确地书写解答过程 • 其他要求和说明:

ORA-00604 递归 SQL 级别 2 出现错误

ORA-00604 递归 SQL 级别 2 出现错误

问题描述:在使用sys用户执行删除infa用户下表时,报如下错误:ORA-00604: 递归SQL 级别2 出现错误ORA-00942: 表或视图不存在查看E:/CO.Software/oracle/product/10.2.0/admin/orcl/bdump/alert_orcl.log发现当时报如下错误:ORA-00604: error occurred at recursive SQL level 2 ORA-00942: table or view does not exist同样使用sys用户在sqlplus模式和PL/SQL模式下作删除infa用户和删除infa表空间都会报如上错误。

问题定位:使用sqlplus sys/oracle as sysdba登陆执行alter session set sql_trace=ture;之后再次执行drop user infa cascade;会报如下错误:ORA-00604: 递归SQL 级别2 出现错误ORA-00942: 表或视图不存在再执行alter session set sql_trace=false;这时去E:/CO.Software/oracle/product/10.2.0/admin/orcl/udump路径下查看刚刚时间点生成的trace文件:orcl_ora_4468.trc在里面会找到如下sql:PARSE ERROR #1:len=273 dep=2 uid=0 oct=3 lid=0 tim=7580575894 err=942selectposition#,sequence#,level#,argument,type#,charsetid,charsetform, properties,nvl(length, 0), nvl(precision#, 0),nvl(scale, 0),nvl(radix, 0), type_owner,type_name,type_subname,type_linkname,pls_type from argument$where obj#=:1 and procedure#=:2 order by sequence# des【如果上面执行的是drop表而不是drop用户操作,则相应trace中sql如下:】【SELECT topologyFROM SDO_TOPO_METADATA_TABLE a,TABLE(a.Topo_Geometry_Layers) bWHERE b.owner = 'SYS' AND b.table_name = 'OPB_ANALYZE_DEP' END OF STMT】此时可以猜测sys用户下argument$表不存在,使用PL/SQL登陆查看发现sys 用户下确实没有argument$表。

Excel表格函数公式大全

EXCEL‎函数大全数据库和清‎单管理函数‎DAVER‎A GE 返回选定数‎据库项的平‎均值DCOUN‎T计算数据库‎中包含数字‎的单元格的‎个数DCOUN‎T A 计算数据库‎中非空单元‎格的个数DGET 从数据库中‎提取满足指‎定条件的单‎个记录DMAX 返回选定数‎据库项中的‎最大值DMIN 返回选定数‎据库项中的‎最小值DPROD‎U CT 乘以特定字‎段(此字段中的‎记录为数据‎库中满足指‎定条件的记‎录)中的值 DSTDE‎V根据数据库‎中选定项的‎示例估算标‎准偏差DSTDE‎V P 根据数据库‎中选定项的‎样本总体计‎算标准偏差‎DSUM 对数据库中‎满足条件的‎记录的字段‎列中的数字‎求和DVAR 根据数据库‎中选定项的‎示例估算方‎差DVARP‎根据数据库‎中选定项的‎样本总体计‎算方差GETPI‎V OTDA‎T A 返回存储在‎数据透视表‎中的数据日期和时间‎函数DATE 返回特定时‎间的系列数‎DATED‎I F 计算两个日‎期之间的年‎、月、日数DATEV‎A LUE 将文本格式‎的日期转换‎为系列数DAY 将系列数转‎换为月份中‎的日DAYS3‎60 按每年36‎0天计算两‎个日期之间‎的天数EDATE‎返回在开始‎日期之前或‎之后指定月‎数的某个日‎期的系列数‎EOMON‎T H 返回指定月‎份数之前或‎之后某月的‎最后一天的‎系列数HOUR 将系列数转‎换为小时MINUT‎E将系列数转‎换为分钟MONTH‎将系列数转‎换为月NETWO‎R KDAY‎S返回两个日‎期之间的完‎整工作日数‎NOW 返回当前日‎期和时间的‎系列数SECON‎D将系列数转‎换为秒TIME 返回特定时‎间的系列数‎TIMEV‎A LUE 将文本格式‎的时间转换‎为系列数TODAY‎返回当天日‎期的系列数‎WEEKD‎A Y 将系列数转‎换为星期WORKD‎A Y 返回指定工‎作日数之前‎或之后某日‎期的系列数‎YEAR 将系列数转‎换为年YEARF‎R AC 返回代表S‎T ART_‎D ATE(开始日期)和END_‎D ATE(结束日期)之间天数的‎以年为单位‎的分数DDE 和外部函数‎CALL 调用动态链‎接库(DLL)或代码源中‎的过程REGIS‎T ER.ID 返回已注册‎的指定DL‎L或代码源‎的注册ID‎SQL.REQUE‎S T 连接外部数‎据源,并从工作表‎中运行查询‎,然后将结果‎作为数组返‎回,而无需进行‎宏编程。

Python实现的银行系统模拟程序完整案例

Python实现的银⾏系统模拟程序完整案例本⽂实例讲述了Python实现的银⾏系统模拟程序。

分享给⼤家供⼤家参考,具体如下:银⾏系统模拟程序1、概述使⽤⾯向对象思想模拟⼀个简单的银⾏系统,具备的功能:管理员登录/注销、⽤户开户、登录、找回密码、挂失、改密、查询、存取款、转账等功能。

编程语⾔:python。

2、⽬的通过这个编程练习,可以熟悉运⽤⾯向对象的思想来解决实际问题,其中⽤到的知识点有类的封装、正则表达式、模块等。

3、体会在编写这个程序时,实际上的业务逻辑还是要考虑的,⽐如修改密码时需要输⼊⼿机号、⾝份证号等。

在进⾏类的封装时,实际上还是⽤⾯向过程的思想把⼀些基本的业务逻辑编写成函数,对⼀些重复使⽤的代码也可以封装成函数(就是⾃⼰造适合这个业务的轮⼦,实际开发中很多底层的函数是不⽤⾃⼰再次去实现的,可以直接调⽤),这些都是⼀些底层的封装,然后在实现主要业务时上就可以调⽤类中的⽅法实现,这时只需关注业务逻辑就好了。

使⽤⾯向对象的思想进⾏编程,考虑的点是:实现⼀个功能,有哪些⽅法可以让我进⾏调⽤(指挥者)。

使⽤⾯向过程的思想进⾏编程,考虑的点是:实现⼀个功能,我需要实现哪些⽅法(执⾏者)。

编写这个程序还⽤到⼀个很重要的概念,就是对程序进⾏模块化。

模块化的好处是可以更好的对程序进⾏维护,条理也更清晰。

4、代码1、bankSystem.py⽂件from view import Viewfrom atm import ATMfrom person import Persondef func(view,atm,per):view.funcInterface()choice = input("请选择您要办理的业务:")if choice == '1':return per.checkMoney(atm)elif choice == '2':return per.saveMoney(atm)elif choice == '3':return per.getMoney(atm)elif choice == '4':return per.transferMoney(atm)elif choice == '5':return per.changePassword(atm)elif choice == '6':return per.unlockAccount(atm)elif choice == '7':return per.closeAccount(atm)elif choice == 'T':if per.exit(atm):return Trueelse:print("输⼊有误!")def main():# 管理员登录名为'admin',密码为'123'view = View("admin",'123')view.initface()atm = ATM()view.login()per = Person()while True:view.funcInit()choice = input("请选择您要办理的业务:")if choice == '1':per.newAccount(atm)elif choice == '2':if per.login(atm):while True:if func(view,atm,per) == None:continueelse:breakelif choice == '3':per.findBackPassword(atm)elif choice == '4':per.lockAccount(atm)elif choice == 'T':if per.exit(atm):# 管理员注销系统if view.logout():return Trueelse:print("输⼊有误!")if __name__ == '__main__':main()2、card.py⽂件:'''卡:类名:Card属性:卡号【6位随机】密码余额绑定的⾝份证号⼿机号'''class Card(object):def __init__(self, cardId, password, money,identityId,phoneNum,cardLock='False'):self.cardId = cardIdself.password = passwordself.money = moneyself.identityId = identityIdself.phoneNum = phoneNumself.cardLock = cardLock3、readAppendCard.py⽂件:'''功能:读取⽂件cardInfo.txt的信息⽅法:读、写、删'''from card import Cardimport json# 读class ReadCard(Card):def __init__(self, cardId='', password='', money=0, identityId='', phoneNum='', cardLock=''):Card.__init__(self, cardId, password, money, identityId, phoneNum, cardLock)def dict2Card(self, d):return self.__class__(d["cardId"], d["password"], d["money"],d["identityId"],d["phoneNum"], d["cardLock"]) def read(self):# card对象转为字典with open("cardinfo.txt","r",encoding="utf-8") as fr:cards = []for re in fr.readlines():cards.append(self.dict2Card(eval(re)))return cards# 写class AppendCard(Card):def __init__(self):Card.__init__(self, cardId = '', password = '', money = 0, identityId = '', phoneNum = '', cardLock='')def card2Dict(self,card):return {"cardId": card.cardId, "password": card.password,"money": card.money, "identityId": card.identityId,"phoneNum": card.phoneNum, "cardLock": card.cardLock}def append(self,card,w= 'a'):# 默认是追加,如果w='w'就清空⽂件if w == 'w':with open("cardinfo.txt", "w", encoding="utf-8") as fa:fa.write('')else:with open("cardinfo.txt", "a", encoding="utf-8") as fa:json.dump(card, fa, default=self.card2Dict)fa.write('\n')# 删class Del(object):def del_(self,cardId):readcard = ReadCard()cards = readcard.read()for card in cards:# 删除输⼊的卡号if cardId == card.cardId:cards.remove(card)breakelse:print("卡号不存在!")return False# 重新写⼊⽂件appendcard = AppendCard()appendcard.append('',w='w')for card in cards:appendcard.append(card)return True4、person.py'''⼈类名:Person⾏为:开户、查询、取款、存储、转账、改密、销户、退出'''class Person(object):def __init__(self,name='',identity='',phoneNum='',card=None): = nameself.identity = identityself.phoneNum = phoneNumself.card = card# 登录def login(self,atm):card = atm.login()if card:self.card = cardreturn Trueelse:return False# 开户def newAccount(self,atm):return atm.newAccount()#找回密码def findBackPassword(self,atm):return atm.findBackPassword()# 查询余额def checkMoney(self, atm):return atm.checkMoney(self.card)# 存钱def saveMoney(self, atm):return atm.saveMoney(self.card)# 取钱def getMoney(self, atm):return atm.getMoney(self.card)# 转账def transferMoney(self, atm):return atm.transferMoney(self.card)# 销户def closeAccount(self, atm):return atm.closeAccount(self.card)# 挂失def lockAccount(self, atm):return atm.lockAccount()# 解锁def unlockAccount(self, atm):return atm.unlockAccount(self.card)# 改密def changePassword(self, atm):return atm.changePassword(self.card)# 退出系统def exit(self, atm):return atm.exit()5、view.py'''管理员界⾯类名:View属性:账号,密码⾏为:管理员初始化界⾯管理员登陆系统功能界⾯管理员注销系统功能:开户查询取款存储转账改密销户退出'''from check import Checkimport timeclass View(object):def __init__(self,admin,password):self.admin = adminself.password = password# 管理员初始化界⾯def initface(self):print("*------------------------------------*")print("| |")print("| 管理员界⾯正在启动,请稍候... |")print("| |")print("*------------------------------------*")time.sleep(1)return#管理员登录界⾯def login(self):print("*------------------------------------*")print("| |")print("| 管理员登陆界⾯ |")print("| |")print("*------------------------------------*")check = Check()erName(self.admin,self.password)print("*-------------登陆成功---------------*")print(" 正在跳转到系统功能界⾯,请稍候... ")del checktime.sleep(1)return# 管理员注销界⾯def logout(self):print("*------------------------------------*")print("| |")print("| 管理员注销界⾯ |")print("| |")print("*------------------------------------*")#确认是否注销check = Check()if not check.isSure('注销'):return FalseerName(self.admin,self.password)print("*-------------注销成功---------------*")print(" 正在关闭系统,请稍候... ")del checktime.sleep(1)return True#系统功能界⾯'''系统功能:开户,查询,取款,存储,转账,销户,挂失,解锁,改密,退出 '''def funcInit(self):print("*-------Welcome To Future Bank---------*")print("| |")print("| (1)开户 (2)登录 |")print("| (3)找回密码 (4)挂失 |")print("| (T)退出 |")print("| |")print("*--------------------------------------*")def funcInterface(self):print("*-------Welcome To Future Bank---------*")print("| |")print("| (1)查询 (5)改密 |")print("| (2)存款 (6)解锁 |")print("| (3)取款 (7)销户 |")print("| (4)转账 (T)退出 |")print("| |")print("*--------------------------------------*")6、atm.py'''提款机:类名:ATM属性:⾏为(被动执⾏操作):开户,查询,取款,存储,转账,销户,挂失,解锁,改密,退出'''from check import Checkfrom card import Cardfrom readAppendCard import ReadCard,AppendCardimport randomimport timeclass ATM(object):def __init__(self):# 实例化相关的类self.check = Check()self.readCard = ReadCard()self.appendCard = AppendCard()self.cards = self.readCard.read()# 显⽰功能界⾯def funcShow(self,ope):if ope != "找回密码":print("*-------Welcome To Future Bank-------*")print("| %s功能界⾯ |"%ope)print("*------------------------------------*")else:# 显⽰找回密码界⾯print("*-------Welcome To Future Bank-------*")print("| 找回密码功能界⾯ |")print("*------------------------------------*")# 卡号输⼊def cardInput(self,ope=''):while True:cardId = input("请输⼊卡号:")password = input("请输⼊密码:")card = self.check.isCardAndPasswordSure(self.cards, cardId,password) if not card:print("卡号或密码输⼊有误")if ope == 'login' or ope == 'lock':return Falseelse:continueelse:return card# 登录def login(self):self.funcShow("登录")return self.cardInput('login')#找回密码def findBackPassword(self):self.funcShow("找回密码")cardId = input("请输⼊卡号:")card = self.check.isCardIdExist(self.cards,cardId)if card:if not self.check.isCardInfoSure(card,"找回密码"):returnnewpassword = self.check.newPasswordInput()index = self.cards.index(card)self.cards[index].password = newpasswordself.writeCard()print("找回密码成功!请重新登录")time.sleep(1)return Trueelse:print("卡号不存在")return True# 开户def newAccount(self):self.funcShow("开户")# 输⼊⾝份证号和⼿机号pnum = self.check.phoneInput()iden = self.check.identifyInput()print("正在执⾏开户程序,请稍候...")while True:# 随机⽣成6位卡号cardId = str(random.randrange(100000, 1000000))# 随机⽣成的卡号存在就继续if self.check.isCardIdExist(self.cards,cardId):continueelse:break# 初始化卡号密码,卡⾥的钱,卡的锁定状态card = Card(cardId, '888888', 0, iden, pnum , 'False')self.appendCard.append(card)print("开户成功,您的卡号为%s,密码为%s,卡余额为%d元!"%(cardId,'888888',0)) print("为了账户安全,请及时修改密码")# 更新卡号列表self.cards = self.readCard.read()return True# 查询def checkMoney(self,card):self.funcShow("查询")if self.check.isCardLock(card):print("查询失败!")else:print("卡上余额为%d元!" %card.money)time.sleep(1)# 存款def saveMoney(self,card):self.funcShow("存款")if self.check.isCardLock(card):print("存钱失败!")else:mon = self.check.moneyInput("存款")# 找到所有卡中对应的卡号,然后对此卡进⾏存款操作index = self.cards.index(card)self.cards[index].money += monprint("正在执⾏存款程序,请稍候...")time.sleep(1)self.writeCard()print("存款成功!卡上余额为%d元!"%self.cards[index].money)time.sleep(1)# 取款def getMoney(self,card):self.funcShow("取款")if self.check.isCardLock(card):print("取钱失败!")else:print("卡上余额为%d元!" %card.money)mon = self.check.moneyInput("取款")if mon:if mon > card.money:print("余额不⾜,您当前余额为%d元!"%card.money)time.sleep(1)else:print("正在执⾏取款程序,请稍候...")time.sleep(1)# 找到所有卡中对应的卡号,然后对此卡进⾏存款操作index = self.cards.index(card)self.cards[index].money -= monself.writeCard()print("取款成功!卡上的余额为%d元!"%self.cards[index].money)time.sleep(1)# 转账def transferMoney(self,card):self.funcShow("转账")if self.check.isCardLock(card): #如果卡已锁定就不能进⾏转账操作print("转账失败!")returnwhile True:cardId = input("请输⼊对⽅的账号:")if cardId == card.cardId:print("不能给⾃⼰转账")returncardOther = self.check.isCardIdExist(self.cards,cardId) #判断对⽅卡号是否存在if cardOther == False:print("对⽅账号不存在")returnelse:breakwhile True:print("卡上余额为%d元"%card.money)mon = self.check.moneyInput("转账")if not mon: #输⼊的⾦额不对就返回returnif mon > card.money: #输⼊的⾦额⼤于卡上余额就返回print("余额不⾜,卡上余额为%d元!" % card.money)returnelse:breakprint("正在执⾏转账程序,请稍候...")time.sleep(1)index = self.cards.index(card) # 找到所有卡中对应的卡号,然后对此卡进⾏转账操作 self.cards[index].money -= monindexOther = self.cards.index(cardOther) #找到对卡卡号所处位置self.cards[indexOther].money += monself.writeCard()print("转账成功!卡上余额为%d元!" % self.cards[index].money)time.sleep(1)# 销户def closeAccount(self,card):self.funcShow("销户")if not self.check.isCardInfoSure(card,"销户"):returnif card.money >0:print("卡上还有余额,不能进⾏销户")returnif self.check.isSure("销户"):self.cards.remove(card) #移除当前卡号self.writeCard()print("销户成功!")time.sleep(1)return True# 挂失def lockAccount(self):self.funcShow("挂失")card = self.cardInput('lock')if not card:returnif card.cardLock == "True":print("卡已处于锁定状态")returnif not self.check.isCardInfoSure(card,"挂失"):returnif self.check.isSure("挂失"):index = self.cards.index(card) #找到所有卡中对应的卡号,然后对此卡进⾏挂失操作 self.cards[index].cardLock = "True"self.writeCard()print("挂失成功!")time.sleep(1)return True# 解锁def unlockAccount(self,card):self.funcShow("解锁")if card.cardLock == 'False':print("⽆需解锁,卡处于正常状态")returnif not self.check.isCardInfoSure(card,"解锁"):returnindex = self.cards.index(card)self.cards[index].cardLock = "False"self.writeCard()print("解锁成功!")time.sleep(1)return True# 改密def changePassword(self,card):self.funcShow("改密")if self.check.isCardLock(card):print("卡处于锁定状态,不能进⾏改密")returnif not self.check.isCardInfoSure(card,"改密"):return# 输⼊旧密码while True:password = input("请输⼊旧密码:")if self.check.isPasswordSure(password,card.password):breakelse:print("卡号原密码输⼊错误!")returnnewpassword = self.check.newPasswordInput()index = self.cards.index(card) #找到所有卡中对应的卡号,然后对此卡进⾏改密操作 self.cards[index].password = newpasswordself.writeCard()print("改密成功!请重新登录")time.sleep(1)return True# 写⼊⽂件def writeCard(self):self.appendCard.append('', w='w') #先清除原⽂件再重新写⼊for card in self.cards:self.appendCard.append(card)# 退出def exit(self):if self.check.isSure("退出"):return Trueelse:return False7、check.py'''验证类:⽤户名、密码、卡号、⾝份证、⼿机号验证使⽤正则表达式进⾏⽂本搜索'''import reclass Check(object):def __init__(self):pass#⽤户验证def userName(self,admin,password):self.admin = adminself.password = passwordwhile True:admin = input("请输⼊⽤户名:")password = input("请输⼊密码:")if admin != self.admin or password != self.password:print("⽤户名或密码输⼊有误,请重新输⼊")continueelse:return#是否确认某操作def isSure(self,operate):while True:res = input("是否确认%s?【yes/no】"%operate)if res not in ['yes','no']:print("输⼊有误,请重新输⼊")continueelif res == 'yes':return Trueelse:return False# ⼿机号验证def phoneInput(self):# 简单的⼿机号验证:开头为1且全部为数字,长度为11位while True:pnum = input("请输⼊您的⼿机号:")res = re.match(r"^1\d{10}$",pnum)if not res:print("⼿机号输⼊有误,请重新输⼊")continuereturn pnum# ⾝份证号验证def identifyInput(self):# 简单的⾝份证号验证:6位,只有最后⼀可以为x,其余必须为数字while True:iden = input("请输⼊您的⾝份证号(6位数字):")res = re.match(r"\d{5}\d|x$",iden)if not res:print("⾝份证号输⼊有误,请重新输⼊")continuereturn iden# 卡号是否存在def isCardIdExist(self,cards,cardId):for card in cards:if cardId == card.cardId:return cardelse:return False# 卡号和密码是否⼀致def isCardAndPasswordSure(self,cards,cardId,password):card = self.isCardIdExist(cards,cardId)if card:if card.password == password:return cardreturn False# 密码⼆次确认是否正确def isPasswordSure(self, newassword,oldpassword):if newassword == oldpassword:return Trueelse:return False# 卡号完整信息验证def isCardInfoSure(self,card,ope):phoneNum = input("请输⼊⼿机号:")iden = input("请输⼊⾝份证号:")if card.phoneNum == phoneNum and card.identityId == iden:return Trueprint("%s失败\n密码、⼿机号或⾝份证号与卡中绑定的信息不⼀致"%ope)return False# 卡号是否锁定def isCardLock(self,card):if card.cardLock == "True":print("此卡已挂失!")return Truereturn False# 输⼊⾦额验证def moneyInput(self,ope):mon = input("输⼊%s⾦额(100的倍数):"%ope)# 输⼊的钱必须是100的倍数if re.match(r"[123456789]\d*[0]{2}$", mon):return int(mon)print("输⼊有误,%s⾦额必须是100的倍数!请重新输⼊"%ope)return Falsedef newPasswordInput(self):while True:newpassword = input("请输⼊新密码:")if not re.match(r"\d{6}$",newpassword):print("密码必须是6位的纯数字")continuenewpasswordAgain = input("请重复输⼊新密码:")if self.isPasswordSure(newpassword, newpasswordAgain):breakelse:print("两次输⼊不⼀致!")continuereturn newpassword更多关于Python相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》及《》希望本⽂所述对⼤家Python程序设计有所帮助。

2023年考研数学(三)真题及答案解析

Байду номын сангаас故,E|X-EX=1-PIX=01+Zk-DP{X=k]
-+Zα-DPYX=k)-0-DPIX=0}
-1+E(X-1D-0-D1=2,,选(C)
法2:随机变量x服从参数为1泊松分布,即 P(X=k)=-e1(k=0,1,2.….
期望E(X)=1.

E(x-E(x))=E(X-1)=1e'+0-e1+11++(k-)-1+-
X?|,若E(G)=a,则a=
(A). (B)2
(C)√元.
(D)√2π.
二、填空题(11 ̄16小题,每小题5分,共30分.)
(11) limx2(2-xsin1-cos÷)=_.
(12)已知函数f(x,y)满足(df(z,y)=ay-ydz,f(1,1)=4,则f(3,3)=___.
(13)2m!-__.
A?=-2, 当△=a2-4b=0时,特征方程有两个相同的实根,
若C?≠0,则微分方程的解y=Ce32+C?xe在(-0,+0)无界;
Aa=±4-c, 当△=a2-4b<0时,特征方程的根为,
则通解为y=e3(c4-cx+CGsm4-x,
此时,要使微分方程的解在(-,+0o)有界,则a=0,再由△=a2-4b<0,知
b>0.
2a与之 (4)已知a。<b(n=1,2,…),若级数
均收敛,则“级数) 绝对
收敛”是“级数 绝对收敛”的( )
(A)充分必要条件 (C)必要不充分条件
【答案】(A)
(B)充分不必要条件
(D)既不充分也不必要条件
【解析】由条件知)∑(b,-a)为收敛的正项级数,进而绝对收敛;
设 2 绝对收敛,则由p|=b-a?+a|sb-a|+1a|与比较判别法,得】

qt 汉字正则表达式

qt 汉字正则表达式在qt中,使用正则表达式处理汉字是一项非常常见的任务。

正则表达式是一种用于匹配和处理文本的强大工具,可以通过定义模式来查找和操作字符串。

在处理汉字时,我们可以使用正则表达式来验证、提取或替换特定的汉字或汉字组合。

例如,我们可以使用正则表达式来验证一个字符串是否只包含汉字:```cppQString str = "你好世界";QRegExp regExp("^[\u4e00-\u9fa5]+$");if (regExp.exactMatch(str)) {qDebug() << "字符串只包含汉字";} else {qDebug() << "字符串包含非汉字字符";}```在上面的例子中,我们使用了一个正则表达式`^[\u4e00-\u9fa5]+$`来匹配只含有汉字的字符串。

其中,`^`表示字符串的开始,`[\u4e00-\u9fa5]`表示匹配一个汉字,`+`表示匹配一个或多个前面的表达式,`$`表示字符串的结束。

如果字符串只包含汉字,则`exactMatch`函数返回`true`,否则返回`false`。

我们还可以使用正则表达式来提取字符串中的汉字:```cppQString str = "Hello, 你好世界";QRegExp regExp("[\u4e00-\u9fa5]+");int pos = 0;while ((pos = regExp.indexIn(str, pos)) != -1) {qDebug() << regExp.cap(0);pos += regExp.matchedLength();}```在上述例子中,我们使用了正则表达式`[\u4e00-\u9fa5]+`来匹配一个或多个汉字。

`indexIn`函数会返回第一个匹配的位置,`cap(0)`则返回完整的匹配字符串。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

UPPER(IPF_NAME) = 'X-SELLING & PRICE STABILITY' AND PERIOD_ID = :LKP.LKP_PERIOD_Q('Calculate Employee IPF %', 'Pending Calculation')

将字符转换成大写 ceil(NEXTVAL/5000)+100进位的意思,ceil(20.21)=21,ceil(20.98)=21,ceil(-21.87)=-21

Character Functions The transformation language includes the following character functions: • ASCII ( ITEMS )返回ASCII码值 • CHR ( ITEM_ID )返回数值的对应字母:for ex:

'Joan' || (39) || 's car' returns Joan's car • CHRCODE • CONCAT

CONCAT( CONCAT( FIRST_NAME, ' ' ), LAST_NAME ) FIRST_NAME LAST_NAME RETURN VALUE John Baer John Baer

• INITCAP ( FIRST_NAME )将第一个字母大写 • INSTR

• LENGTH • LOWER • LPAD • LTRIM • METAPHONE • REPLACECHR • REPLACESTR • RPAD • RTRIM • SOUNDEX • SUBSTR • UPPER

Conversion Functions The transformation language includes the following conversion functions: • TO_CHAR(Date) • TO_CHAR(Number) • TO_DATE • TO_DECIMAL • TO_FLOAT • TO_INTEGER

Data Cleansing Functions The transformation language includes a group of functions to help you eliminate data errors. With data cleansing functions you can:

• Test input value. • Convert the datatype of an input value. • Trim string values. • Replace characters in a string. • Encode strings.

The transformation language includes the following data cleansing functions: • INSTR • IS_DATE • IS_NUMBER • IS_SPACES • ISNULL • LTRIM • METAPHONE • REPLACECHR • REPLACESTR • RTRIM • SOUNDEX • SUBSTR • TO_CHAR • TO_DATE • TO_DECIMAL • TO_FLOAT • TO_INTEGER

Date Functions The transformation language includes a group of date functions to help you round, truncate, or compare dates, extract one part of a date, or perform arithmetic on a date.

You can pass any value with a date datatype to any of the date functions. However, if you want to pass a string to a date function, you must first use the TO_DATE function to convert it to a transformation Date/Time datatype.

The transformation language includes the following date functions: • ADD_TO_DATE • DATE_COMPARE • DATE_DIFF • GET_DATE_PART • LAST_DAY • MAX • MIN • ROUND • SET_DATE_PART • TRUNC

Numeric Functions The transformation language includes the following numeric functions: • ABS • CEIL • CUME • EXP • FLOOR • LN • LOG • MOD • MOVINGAVG • MOVINGSUM • POWER • ROUND • SIGN • SQRT • TRUNC

Scientific Functions The transformation language includes the following scientific functions: • COS • COSH • SIN • SINH • TAN • TANH

Special Functions The transformation language includes the following special functions: • ABORT • DECODE • ERROR • IIF • LOOKUP

Generally, you use special functions in Expression, Filter, and Update Strategy transformations. You can nest other functions within special functions. You can also nest a special function in an aggregate function.

Test Functions The transformation language includes the following test functions: • ISNULL • IS_DATE • IS_NUMBER • IS_SPACES

Variable Functions The transformation language includes a group of variable functions to help you update the current value of a mapping variable throughout the session. When you run a workflow, the PowerCenter Server evaluates the start and current value of a variable at the beginning of the session based on the final value of the variable from the last session run. You can use the following variable functions:

• SetCountVariable • SetMaxVariable • SetMinVariable • SetVariable

Numeric Functions

Function Syntax Description ABS ABS( numeric_value ) Returns the absolute value of a numeric value. Available in the Designer and the Workflow Manager.

• CEIL CEIL( numeric_value )

Returns the smallest integer greater than or equal to the specified numeric value. Available in the Designer and the Workflow Manager.

CUME CUME( numeric_value [, filter_condition ] ) Returns a running total of all numeric values. Available in the Designer.

EXP EXP( exponent ) Returns e raised to the specified power (exponent), where e=2.71828183. Available in the Designer and the Workflow Manager.

FLOOR FLOOR( numeric_value ) Returns the largest integer less than or equal to the specified numeric value. Available in the Designer and the Workflow Manager.

LN LN( numeric_value ) Returns the natural logarithm of a numeric value. Available in the Designer

相关文档
最新文档