zoukankan      html  css  js  c++  java
  • python scipy优化器模块(optimize)

    pyhton数据处理与分析之scipy优化器及不同函数求根

    1、Scipy的优化器模块optimize可以用来求取不同函数在多个约束条件下的最优化问题,也可以用来求取函数在某一点附近的根和对应的函数值;
    2、scipy求取函数最优解问题(以多约束条件下的最小值为例)如下所示:
    import numpy as np #导入数据结构nmupy模块
    import matplotlib.pyplot as plt
    from scipy.optimize import minimize #导入最小值优化模块
    def func(x):
    return (2*x[0]*x[1]+2*x[0]-x[0]**2+2*x[1]**2) #定义函数
    def func_deriv(x):
    dfdx0=(-2*x[0]+2*x[1]+2)
    dfdx1=(2*x[0]+4*x[1])
    return np.array([dfdx0,dfdx1])
    cons=({"type":"eq","fun":lambda x:np.array([x[0]**3-x[1]]),"jac":lambda x:np.array([3*(x[0]**2),-1.0])},{"type":"ineq","fun":lambda x:np.array([x[1]-1]),"jac":lambda x:np.array([0,1])})#定义函数的多个约束条件
    res=minimize(func,[-1.0,1.0],jac=func_deriv,constraints=cons,method="SLSQP",options={"disp":True}) #最小值优化函数格式调用
    print("RESTRICT:",res)

    3、scipy的root函数也可以用来求取在特定点附近的一元函数的根
    import numpy as np #导入数据结构nmupy模块
    import matplotlib.pyplot as plt
    from scipy.optimize import root
    def f(x):
    return x**2-3*x+2
    sol=root(f,1)     #表示求取函数f(x)在x=1附近处的根
    print("ROOT:",sol.x,sol.fun)    #输出最优根处的x的值及其数值计算的函数值

  • 相关阅读:
    Nginx使用GeoIP模块来限制地区访问
    CenTOS7使用ACL控制目录权限,只给某个用户访问特定目录
    CentOS配置服务开机自启
    设置普通用户输入sudo,免密进入root账户
    Centos安装git并配置ssh
    ThreadLocal线程隔离
    Spring cloud 超时配置总结
    Hystrix超时测试
    mysql limit分页查询效率比拼
    linux CPU100%异常排查
  • 原文地址:https://www.cnblogs.com/Yanjy-OnlyOne/p/11189622.html
Copyright © 2011-2022 走看看