机器学习之逐次下降法

逐次下降法的定义

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

下面给出Python实现

import numpy as np
from 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]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)

你可能感兴趣的:(机器学习)