范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Python干货python实现最优化算法

  二分法
  函数详见rres,此代码使该算法运行了两次def asdf(x):     rres=8*x**3-2*x**2-7*x+3     return rres  i=2 left=0 right=1 while i>0 :     i = i-1     ans = 0.1     mid1 = (left + right + ans) / 2     mid2 = (left + right - ans) / 2     a=asdf(mid1)     c=asdf(mid2)     if a > c :         right = mid1     else :         left = mid2 b=(left+right) / 2 print("左极限=%s,右极限=%s,极小值x=%s"%(left,right,b))左极限=0.45,右极限=0.775,极小值x=0.6125
  收获:
  这是我第一个实现的代码。学习完该算法以后,逻辑框架基本上就有了,剩下需要明确的就是对应的python的语言。于是我就开始了查找"如何定义函数"(详见mofan的优酷),"循环体"和"if条件语句"的格式(https://blog.csdn.net/qq_39407518/article/details/79822498)"数学符号"(详见mofan的优酷),以及print的使用
  1.def是python中指定义,一般用来定义函数,如果需要深度学习搭建网络可用来定义网络。值得注意的一点是
  return必须要加在函数后面另起一行。
  我不清楚为什么,但是如果没有加的话,那个函数公式就是一个花瓶,就像一个结果输不出去。
  2.最坑的就是逻辑。一开始逻辑没理清楚,或者说在代码上有疏漏,导致我将left和right放在了循环体里,结果可想而知。不过也是因为这个错误,我知道pycharm中的debug怎么用,挺简单的,百度一下就出来了。
  3.不知道什么原因,看的莫烦视频中的print多个变量一起输出是没有办法在我的pycharm中使用的,出来的结果很奇怪。可能是因为我是win10不是ios吧。print如果多个变量一起输出必须是print("名字:%s,名字2:%s"%(a,b))结果输出就是名字:a ,名字2:b问题:1.为什么要加return?
  return的意思是输出这个def里面任意一个变量值作为结果显示。一般情况而言,是输出函数的关系式的命名,这样当你调用这个函数的时候,变量对应的函数值才能显示出来,否则只运行没有结果,不会有效果。格点法——三点等分法import numpy as np def qwer(x):     third = np.exp(x) - 5*x     return third  left = 1 right = 2 mid1 =float(left+right) / 2 mid2 = (left+mid1) / 2 mid3 = (mid1+right) /2 a = qwer(mid1) b = qwer(mid2) c = qwer(mid3) i = 5 while i > 0:     i=i-1     if a > b:         if c > b :             #b             right = mid1             mid1 = mid2             a=b             mid2 = (left + mid1) / 2             mid3 = (mid1 + right) / 2             b = qwer(mid2)             c = qwer(mid3)         else:#b>c             #c             left = mid1             mid1 = mid3             a = c             mid2 = (left + mid1) / 2             mid3 = (mid1 + right) / 2             b = qwer(mid2)             c = qwer(mid3)     else:#b>a             if a > c:                 #C                 left = mid1                 mid1 = mid3                 a = c                 mid2 = (left + mid1) / 2                 mid3 = (mid1 + right) / 2                 b = qwer(mid2)                 c = qwer(mid3)             else:#b>a&c>a                 # a                 left = mid2                 right = mid3                 mid2 = (left + mid1) / 2                 mid3 = (mid1 + right) / 2                 b = qwer(mid2)                 c = qwer(mid3)  print("最小值=%s"%mid1) print("函数值=%s"%a)最小值=1.609375 函数值=-3.047189552275773
  关于python中数据变量。第一遍运行结果出现很明显不对,于是我采用了debug。结果发现,mid1处一直为1而不是1.5,于是就开始了解数据变量。起初我猜测python默认所有变量为整型,但是根据二分法的结果我意识到此猜测不对,所以要改整个file的变量格式没有必要。所以我就在mid1式子前面加了一个float,结果就显示为1.5了。但是如果我将整个式子用()括起来,前面加float,结果还是1。我不太理解为什么。不过我知道了python的数据格式是根据输入量决定的,也就是说你的输入量如果是整型,那么与其直接相关的计算输出结果一定是整型,而且还是不采用进位的整型。在我没有采用+float/+.0这两种方法之前,mid1~3全部是整型。left = 1.0 right = 2.0 mid1 =(left+right) / 2
  或者不再mid1前面加float,直接将输入量后面点个点就行
  真的很想吐槽一下print,好麻烦啊啊啊啊每次都得弄个%s,而且有时候还不能放一起!!!!Fibonacci法def fibonacci(n):     i=0     a = 0     b = 1     for i in range(n):         i=i+1         c = a+b         a = b         b = c     return c def bn(x):     ert = x**2 - 6*x + 2     return ert z = 2 p = 0 left = 0.00000 right = 10.00000 L1 = right - left while z < 100:     m = fibonacci(z)     l = L1/m     k = 1.000/m     if k < 0.03:         print("n=%s,Fn=%s"%(z,m))         L2 = l*fibonacci(z-1)         t = left + L2         r = right -L2         while p < 3:             p = p + 1             l3 = t - r             e= bn(t)             o = bn(r)             if e>o :                 right = t                 t = r                 r = left + l3             else:#o>e                 left = r                 r = t                 t = right - l3         break     else:         z = z + 1  okk=(left+right)/2 okky=bn(okk) print(left) print(right) print("极小值x=",okk) print("极小值y=",okky)
  不要问我掌握了什么,要问我现在写完这个代码后有多么的爱python的精度表示 :-)我决定以后只要再编写数学公式的代码都将输入量的小数学点后面补很多0
  fibonacci函数定义,每次debug后我的手都是抖的O( _ )O~黄金分割法def gold(x):     gg= x**2 - 6*x + 9     return gg  left = 1 right = 7 ans = 0.4 a = left + 0.618 * (right - left) b = left + 0.382*(right - left) gga = gold(a) ggb = gold(b) i = 0 while i < 7:     print("i=%s" % i)     print("left=%s,right=%s" % (left, right))     print("x左=%s,x右=%s" % (a, b))     print("y左=%s,y右=%s" % (ggb, gga))     c = right - left     if c > 0.4:         i = i + 1         if gga > ggb:             right = a             a = b             b = left + 0.382*(right - left)             gga = ggb             ggb = gold(b)         else:#gga 0.05000:     a = abs(xp - x2)     if xp > x2:         if fp > f2:             x3=xp             f3=fp             xp = xing(x1, x2, x3, f1, f2, f3)             fp = yy(xp)             print("ans=%s" % a)             print("left=%s,right=%s" % (x1, x3))             print("x*=%s,fp*=%s" % (xp, fp))             print("x2=%s,f2=%s" % (x2, f2))             print("******************")         else:#f2>fp             x1 = x2             f1 = f2             x2 = xp             f2 = fp             xp = xing(x1, x2, x3, f1, f2, f3)             fp = yy(xp)             print("ans=%s" % a)             print("left=%s,right=%s" % (x1, x3))             print("x*=%s,fp*=%s" % (xp, fp))             print("x2=%s,f2=%s" % (x2, f2))             print("******************")     else:#xp f2:             x1 = xp             f1 = fp             xp = xing(x1, x2, x3, f1, f2, f3)             fp = yy(xp)             print("ans=%s" % a)             print("left=%s,right=%s" % (x1, x3))             print("x*=%s,fp*=%s" % (xp, fp))             print("x2=%s,f2=%s" % (x2, f2))             print("******************")         else:             x3 = x2             f3 = f2             x2 = xp             f2 = fp             xp = xing(x1, x2, x3, f1, f2, f3)             fp = yy(xp)             print("ans=%s" % a)             print("left=%s,right=%s" % (x1, x3))             print("x*=%s,fp*=%s" % (xp, fp))             print("x2=%s,f2=%s" % (x2, f2))             print("******************")
  这个公式看起来很麻烦,便写的时候更要谨慎。我上回把那个2搁在了分号下面,结果很大,所以还是换算成0.5更好(PS:勿忘那长河般的0)。
  虽然代码很长,但是主要是因为print太多。本打算在开头print,最后结果会漏掉最后一部分。懒得想其他办法了,直接就这样吧间接法——牛顿法def fd(x):     y = 4*x**3-12*x**2-12*x-16     return y def fdd(x):     ys = 12*x**2-24*x-12     return ys  i = 1 x0 = 3.00000 ans = 0.001 while i < 7:     fd0 = fd(x0)     fdd0 = fdd(x0)     if abs(fd0) > ans:         x1 = x0 - (fd0/fdd0)         x0 = x1         print("次数:%s,所得的值x:%s"%(i,x1))         i = i + 1     else:#fd0<0.001         print("$$$$$$$$$$$$$$$#34;)         print("Bingo!顺利通关!祝您开学愉快!")         print("Boss  X=%s"%x0)         break
  一开始while里面<写成了>,导致run不出来。继而,debug也没法用。在网上一查才知道 "没联网"+"没选断点"。最后想尝试将else里面的内容输出来,结果发现run以后被刷屏了。于是改成i<7以后还是不行,于是想着加一个break跳出循环,结果成效了。
  然后刚刚由debug了一下,才知道原来是i+1在if里面,因为没有办法+1,所以i=6一直存在,就不断循环。因为加break也好,i+1也好,都可以。就在一个半小时前,我成功搞完了最优化六大代码,纯手打,无外力。开心!
  这是我第一组自己实现的python代码,就是数学公式用python语言组装起来。刚开始的时候知道大概需要在语言中体现什么,但不太清楚。于是我就在网上找了几个二分法的,他们都各有不同,但框架都差不多,不过如果要用到我们的那个公式里还需要改变很多。然后我就开始分析我们的题,我发现大体需要两部分,一部分函数定义,一部分循环体。但我不知道如何定义函数,如何写数学公式,如何弄变量,也就是说一些小点不太会,所以我选择直接百度。因为我知道自己阅读的能力不错,相比于从视频中提取要素,我更擅长通过阅读获得要点。有目的性地找知识点,掌握地更牢固。
  于是我就开始了第一个——二分法的编写。我发现,自己出现了很多错误而且有很多地方都很基础。但我依然没选择视频,而是将这些问题直接在百度上找,因为视频讲完或许你也没找到点。当然,这是一步一步走的,不是直接就将程序摆上去,一点一点改。
  随着前两个的成功,我发现自己对于这些代码有了自信,似乎看透了他们的伪装,抓住了本质。除此之外,我还意识到自己自从8月份以后,学习能力似乎提高了不少,而且有了更为有效的学习方法。各方面都有了一定的觉醒。除了第一个找了几个牛头不对马嘴的代码,其他都是根据自己的逻辑写,逻辑通下来以后,对应语言中某一部分不知道如何翻译就去百度,其实这几个套路都一样或者说数学公式转化的套路都一样。
  我还意识到,汇编其实是最难的语言,目前为止所学到的,因为很多都需要自己去定义,去死抠,需要记住大量的指令且不能灵活变通。但是其他的却只需要将一些对应的记下来就好。python真的挺简单的。而且,我发现自己今天似乎打开了新世界的大门,我爱上了这种充满了灵性的东西,充满了严谨的美丽,还有那未知的变化,我发现我似乎爱上了代码。可能不仅仅局限于python,这些语言都充满了挑战性。我觉得当你疑惑的时候,就需要相信直觉,至少我发现它很准最后
  如果文章对您有帮助,点赞+关注,您的支持是我最大的动力

磁吸生态,让iPhone更好用,PITAKA车载磁吸无线充电套装分享很多小伙伴用手机都会陷入这样的纠结既想要裸机的手感,又怕摔坏修起来太贵,肉疼。所以,总有小伙伴问我,有没有兼顾手感和安全性的解决方案?关于这个问题,可以很肯定地告诉大家,有的,芳纶UNIK美学新主张领航者不止要站在时代尖端更要造就独特夺目于车海与平庸陌路生而自成宇宙不因喧嚣而黯淡,注定卓显于群。边界进气格栅UNI序列独创的无边界设计,打破汽车百年传统格栅形态。以参数化手法创建六边形UNIK高端与科幻感智慧之光,赋予灯光先进的智慧价值。智慧关怀,给予最舒适的陪伴舒适静享,让你的每一次礼遇都不将就哪怕方寸之间,也要让美好全力绽放。索尼高级车载音响系统搭载索尼高级车载音响系统,配备1UNIT以雷霆之势驭运动之风UNIT运动版以雷霆之势驭运动之风惊鸿一瞥,目光再无去意。从此,世间焦点皆止于此。UNIT动感的体态在耀夜极光运动套件加持下,淬炼出一触即发的视觉印象,目之所及,皆为凌厉动势12款UNIK生而自成宇宙不止要站在时代尖端更要造就独特夺目于车海与平庸陌路生而自成宇宙不因喧嚣而黯淡,注定卓显于群。边界进气格栅UNI序列独创的无边界设计,打破汽车百年传统格栅形态。以参数化手法创建六边形UNIK生而自成宇宙不止要站在时代尖端更要造就独特夺目于车海与平庸陌路生而自成宇宙不因喧嚣而黯淡,注定卓显于群。边界进气格栅UNI序列独创的无边界设计,打破汽车百年传统格栅形态。以参数化手法创建六边形golang2021数据格式(59)结构体有时我们需要将不同类型的数据组合成一个有机的整体,如一个学生有学号姓名性别年龄地址等属性。显然单独定义以上变量比较繁琐,数据不便于管理。结构体是一种聚合的数据类型,它是由一系列具有golang2021数据格式(57)map相等吗map深度相等的条件1hr231都为nil2非空长度相等,指向同一个map实体对象3相应的key指向的value深度相等直接将使用map1map2是错误的。这种写法只能比较map是golang2021数据格式(58)模式处理集合元素从处理集合元素聊起日常开发过程中,要处理数组切片字典等集合类型,常规做法都是循环迭代进行处理。比如将一个字典类型用户切片中的所有年龄属性值提取出来,然后求和,常规实现是通过循环遍历golang2021数据格式(60)结构体初始化注意顺序初始化,每个成员必须初始化,在初始化时,值的顺序与结构体成员的顺序保持一致。结构体定义完成后,结构体成员的使用。普通变量typeStudentstructidintname手机摄影的天花板能有多高?vivoX70Pro实拍样张告诉你就在昨天,备受关注的vivoX70系列正式发布,该系列机型在设计性能交互上带来全面升级的同时,更在手机影像上再一次实现了突破。那么在蔡司与vivo的深度合作下,定位于专业影像旗舰的
小米产品不只有手机好,你的身边还有这些产品吗?每款都方便你我提起小米你能想到什么?是最近新出的红米10X,还是俗称钉子户的小米6?小米还有个外号叫小米百货你知道吗?这个外号可不是凭空来的呢!让我们来看看小米生态链旗下产品有多惊艳吧!直白高速这款游戏手机,展现出了最完美的产品素质,究竟有多厉害?近年来,电子科技产品在不断兴起发展的同时,在各行业各领域也开创了全新的以核心技术为主的发展道路,尤其在手机这一领域,可以说是在今年迎来了空前绝后的发展盛况。在手机领域不断分化的发展财报解读奈雪的茶同比扭亏为盈,做了哪几件事?导语全球茶饮第一股奈雪的茶连续三年亏损,于今年6月30日流血上市,股价一路下跌。两个月之后,奈雪的茶公布的第一份中报就扭亏为盈,今年上半年奈雪的茶在开源上做了哪些事?节流又做了哪些百亿补贴搅局者,满足更多奢侈品消费人群需求日前,纽交所上市公司趣店集团旗下公司跨境奢侈品电商新晋玩家万里目携百亿补贴计划强势入局,继拼多多聚划算之后,跻身百亿补贴电商平台之列。据悉,趣店集团于3月上线跨境奢侈品电商平台万里流动性好转!苏宁易购9月销售收入环比实现增长10月14日晚间,苏宁易购发布2021年前三季度业绩预告。预告显示,苏宁易购已经度过最困难的阶段,8月下旬9月销售收入实现环比增长,预计四季度环比三季度继续增长,力争四季度单月实现中国平安旗下vipJr革新在线教学,推出ampampquotAI英语互动课ampampquot日前,中国平安旗下青少年在线教育品牌vipJr,推出了一款少儿AI互动课,是由真人外教授课,学员实时在线,并有专人手绘动画课件呈现教学内容以及AI技术赋能课堂的全新教学模式。据悉,腾讯新闻一堂公益课圆满结业,让做好事变得有趣又有料开学季伊始,结合年轻人学习潮的新趋势,在腾讯99公益日的第七个年头,腾讯新闻发起一堂公益课系列活动直播。带大众了解溺水救援专业知识,体验阿尔茨海默病艺术疗愈,并发起大象救助等公益召Soul青年联络官新时代青年在云对话中升华思想新时代的青年人正逐渐成为社会的主力军,面对实现中华民族伟大复兴的历史使命,如何以他们易于接受的方式传承优秀的思想结晶,已然成为时代的命题。关于这一点,在年轻人中有着极高人气的社交应从优秀到卓越,销售成交21天话术(十九)销售是一门艺术,不但需要掌握一定的理论知识,还需要不断实践和总结,才能提高和进步,才能成为销售高手。销售前,每天要对自己的工作进行提前安排和准备,机会永远是留给有准备的人,不能把个AWS云服务上线AmazonBraket量子计算,帮助客户探索设计量子算法日前,有消息称,亚马逊云服务(AWS)公司宣布AmazonBraket量子计算服务正式上线。它是一项安全托管的AWS服务,提供了一个开发环境,可以帮助客户探索和设计量子算法。目前,百度上线笔记频道,内容覆盖用户几乎所需需求日前,最新消息,百度将在APP和WAP端上线笔记频道,用户可在笔记频道搜索来自第三方内容平台用户生产的内容,内容则覆盖了用户所需的大部分种类。目前,该笔记功能暂未上线PC端。常规意