python 梯度法求解函数极值的实例

yipeiwu_com5年前Python基础

如下所示:

#coding utf-8
a=0.001    #定义收敛步长
xd=1    #定义寻找步长
x=0     #定义一个种子x0
i=0     #循环迭代次数
y=0
dic={}
import math
def f(x):
 y=math.sin(x) #定义函数f(X)=sinx
 return y
def fd(x):
 y=math.cos(x) #函数f(x)导数fd(X)=cosx
 return y
while y>=0 and y<3.14*4:
 y=y+xd
 x=y
 while abs(fd(x))>0.001: #定义精度为0.001
  x=x+a*fd(x)
 if x>=0 and x<3.14*4:
  print(x,f(x))
  dic[y]=x
print(dic)
ls=[]
for i in dic.keys():
 cor=0
 if ls is None:
  ls.append(dic[i])
 else:
  for j in ls:
   if dic[i]-j<0.1:
    cor=1
    break
  if cor==0:
   ls.append(dic[i])
print(ls)

以上这篇python 梯度法求解函数极值的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

python实现斐波那契数列的方法示例

python实现斐波那契数列的方法示例

介绍 斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下递归的方法定义: F(0)=0,F(1)=1,F(n)=...

Django与遗留的数据库整合的方法指南

Django的数据库层从Python代码生成SQL schemas—但是对于遗留数据库,你已经拥有SQL schemas. 这种情况,你需要为已经存在的数据表创建model. 为此,Dj...

谈一谈基于python的面向对象编程基础

谈一谈基于python的面向对象编程基础

活在当下的程序员应该都听过“面向对象编程”一词,也经常有人问能不能用一句话解释下什么是“面向对象编程”,我们先来看看比较正式的说法。 把一组数据结构和处理它们的方法组成对象(object...

浅谈django2.0 ForeignKey参数的变化

Django2.0中编写models类下的ForeignKey book = models.ForeignKey('BookInfo') django2.0与之前的1.8不同,...

浅谈python对象数据的读写权限

面向对象的编程语言在写大型程序的的时候,往往比面向过程的语言用起来更方便,安全。其中原因之一在于:类机制。 类,对众多的数据进行分类,封装,让一个数据对象成为一个完整的个体,贴近现实生活...