Lanczos 法 和 QR分解 求解实对称矩阵特征值

 Lanczos法的目的:将实对称矩阵转换成为三对角矩阵(稀疏矩阵),从而便于计算机储存和后续的计算。

在三对角矩阵矩阵上,采用QR分解,得到矩阵的特征值。

# -*- coding: utf-8 -*-
"""
Created on Tue Nov 20 12:41:40 2018

@author: yujin.wang
"""
import numpy as np
import scipy as sci
import matplotlib.pyplot as plt
import time
import sys

def lanczos(A,b,nmax):
	m = np.size(A,1)
	alpha = []
	beta = [0]
	qprev = np.zeros(m)
	q = b / np.linalg.norm(b)
	for n in range(nmax):
		v = np.dot(q,A) #*sci.linalg.inv(q)
		temp = np.dot(v,q.T)
		alpha.append(temp[0][0,0])
		v = v - np.dot(beta[-1],qprev)-np.dot(alpha[-1],q)
		beta.append(sci.linalg.norm(v))
		qprev = q
		q = v/beta[-1]
	beta = beta[1:-1]
	T = np.diag(alpha) + np.diag(beta,1) +np.diag(beta,-1)
	return T


def qreigen(A,num=100):
	m = np.size(A,1)
	p = np.eye(m)
	for i in range(num):
		v = np.diag(A)
		q,r &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值