共轭梯度法

共轭梯度下降法主要用于解线性方程组和二次优化问题
在这里插入图片描述
A-共轭的定义及其性质
在这里插入图片描述
第一条性质利用线性无关的定义很容易得到,第二条性质也就是如下的定理
在这里插入图片描述
ppt中的 α k \alpha_k αk可以由表达式 α k = arg ⁡ min ⁡ α k ϕ ( x k + α k p k ) \alpha_k = \arg\min\limits_{\alpha_k} \phi(x_k+\alpha_kp_k) αk=argαkminϕ(xk+αkpk)计算得到,定理的证明如下:
在这里插入图片描述
在这里插入图片描述
n个基的确定方法,由这种方法得到的各个基两两共轭
在这里插入图片描述
CG算法描述1:
在这里插入图片描述
一些性质
在这里插入图片描述
在这里插入图片描述
利用这些性质可以推出CG算法一个等价描述:
在这里插入图片描述
迭代次数最大不超过A的无重复特征值个数
在这里插入图片描述
利用这个定理可以改进CG算法得到PCG算法
在这里插入图片描述
PCG算法描述
在这里插入图片描述
Homework
在这里插入图片描述
PCG算法实战(homework)

import numpy as np

MAX = 1000

PRECISION = 1e-6

class Function:

    def __init__(self,mat,vec):
        self.mat = mat
        self.vec = vec
        self.dim = len(mat)

    def grid(self,x):
        return np.dot(self.mat,x) - self.vec

    def __call__(self, x):
        return (1/2)*x.T.dot(self.mat).dot(x) - self.vec.T.dot(x)


def min(f):
    x = np.zeros((f.dim,1))
    r = f.grid(x)
    y = (1/10)*r
    p = -y
    number = 0
    while number<MAX:
        a = (r.T.dot(y))/(p.T.dot(f.mat).dot(p))
        x1 = x + a*p
        r1 = f.grid(x1)
        y1 = (1/10)*r1
        b = (r1.T.dot(y1))/(r.T.dot(y))
        p = -y1 + b*p
        if abs(f(x1) - f(x)) < PRECISION:
            break
        else:
            x, y, r =x1, y1, r1
            number += 1
    return  number,f(x)

def create_coefficient(dim):
    b = np.ones((dim,1))
    A = np.array([[1/(i+j+1) for j in range(dim)] for i in range(dim)])
    return A,b

if __name__ =='__main__':
    A, b = create_coefficient(5)
    print(min(Function(A, b)))

    A, b = create_coefficient(8)
    print(min(Function(A, b)))

    A, b = create_coefficient(12)
    print(min(Function(A, b)))

    A, b = create_coefficient(20)
    print(min(Function(A, b)))

计算结果

(5, array([[-12.49999988]]))
(19, array([[-31.99999995]]))
(20, array([[-48.44638437]]))
(11, array([[-59.08143301]]))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值