matlab求注释(不懂matlab,别人让做的,希望能够给个注释)

functionT=lanczos(A,b,nmax)m=size(A,1);%返回矩阵A的行数beta(1)=0;qprev=zeros(m,1);%表示线性代数的0矩... function T = lanczos(A, b, nmax)
m = size(A,1); %返回矩阵A的行数
beta(1) = 0;
qprev = zeros(m, 1); %表示线性代数的0矩阵,这儿表示一行一列的0矩阵
q = b / norm(b); %返回矩阵b的最大奇异值
for n = 1:nmax
v = A*q;
alpha(n) = q' * v; %alpha是随机函数
v = v - beta(n) * qprev - alpha(n) * q;
beta(n+1) = norm(v); %
qprev = q;
q = v / beta(n+1);
end
beta = beta(2:end-1);
T = diag(alpha) + diag(beta,1) + diag(beta,-1);
展开
 我来答
tianxiawulang
2014-05-10 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2648万
展开全部

概况

这是一段Lanczos算法的程序。Lanczos算法是一种将矩阵通过正交相似变换变成对称三对角矩阵的算法,可用于求方阵的特征值和特征向量或一般矩阵的奇异值分解,以20世纪匈牙利数学家Cornelius Lanczos命名。

 

百度百科上关于该算法的介绍要求是对称阵,但这与程序不符,也未见其它可信的资料支持这个说法。另一方面,本程序要求输入必需是方阵,并不支持一般矩阵。

 

输入输出

程序的输入输出参数如下:

  • A代表任意一个需要三对角化的矩阵;

  • b是任意一个向量,且b的行数与A的列数相同因为要用到v = A*q;

  • nmax是你想要得到的矩阵的大小,例如nmax=12,最后得到12*12的三对角矩阵。

  • 输出T是一个三对角矩阵。

 

调用实例

>> A = rand(4);
>> b = rand(4,1);
>> T = lanczos (A, b, 5)
T =
    1.2440    0.7587         0         0         0
    0.7587    0.5466    0.7651         0         0
         0    0.7651    0.4146    0.8865         0
         0         0    0.8865    0.6698    1.3347
         0         0         0    1.3347   -0.0811

 

参考

关于算法的说明可以参考英文维基百科的相关条目:en.wikipedia.org/wiki/Lanczos_algorithm。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式