机器学习之逐次下降法

来源:互联网 发布:焦点访谈神乎大道堂 编辑:程序博客网 时间:2024/05/16 06:05

逐次下降法的定义

  1. 对于给定的方程组这里写图片描述,使用公式:
    迭代公式
    其中k为迭代次数(k=0,1,2,…)
    逐步代入求近似解的方法称为迭代法
  2. 如果这里写图片描述存在(记为这里写图片描述),称此迭代法收敛,显然这里写图片描述就是方程组的解,否则称此迭代法发散。
  3. 研究{这里写图片描述}的收敛性。引进误差向量:
    这里写图片描述
    得到:
    这里写图片描述
    递推得到:
    这里写图片描述
    要考察{这里写图片描述}的收敛性,就要研究B在这里写图片描述这里写图片描述的条件。

下面给出Python实现

import numpy as npfrom numpy import *from common_libs import *  #使用散点图绘制函数import matplotlib.pyplot as plt#消元发求解方程组的解#求解元方程def method_nomal():    A =mat([[8,-3,2],            [4,11,-1],            [6,3,12]])    b=mat([20,33,36])   result = linalg.solve(A,b.T)    print result#迭代法进行计算def interationMethod(n,B0,f):    error = 1.0e-6  # 迭代阈值    steps = 100  # 迭代次数    xk=zeros((n,1))``    errorlist=[]    for i in range(steps):        xk_1=xk        xk=B0*xk+f        errorlist.append(linalg.norm(xk_1-xk))        if errorlist[-1]<error:            print i+1            break    print xk   # 绘制散点图   matpts= zeros((2,i+1))    matpts[0]=linspace(1,i+1,i+1)    print matpts[0]    matpts[1]=array(errorlist)    drawScatter(plt,matpts)    plt.show()B0 = mat([[0.0,3.0/8.0,-2.0/8.0],[-4.0/11.0,0.0,1.0/11.0],[-6.0/12.0,-3.0/12.0,0.0]])m,n = shape(B0)f = mat([[20.0/8.0],[33.0/11.0],[36.0/12.0]])interationMethod(n,B0,f)
原创粉丝点击