⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lanczosnosym.m

📁 various matlab programs to slove various problems
💻 M
字号:
function [xk,nres,niter]=lanczosnosym(A,b,x0,m,toll)r0=b-A*x0; nres0=norm(r0,2); if nres0 ~= 0  V=r0/nres0;  Z=V; gamma(1)=0; beta(1)=0;  k=1; nres=1;  while k <= m & nres > toll     vk=V(:,k);  zk=Z(:,k);     if    k==1,  vk1=0*vk;   zk1=0*zk;     else,  vk1=V(:,k-1);  zk1=Z(:,k-1);  end     alpha(k)=zk'*A*vk;     tildev=A*vk-alpha(k)*vk-beta(k)*vk1;     tildez=A'*zk-alpha(k)*zk-gamma(k)*zk1;     gamma(k+1)=sqrt(abs(tildez'*tildev));     if gamma(k+1) == 0,    k=m+2;     else       beta(k+1)=tildez'*tildev/gamma(k+1);       Z=[Z,tildez/beta(k+1)];       V=[V,tildev/gamma(k+1)];     end     if k~=m+2        if k==1         Tk = alpha;       else         Tk=diag(alpha)+diag(beta(2:k),1)+diag(gamma(2:k),-1);       end       yk=Tk \ (nres0*[1,0*[1:k-1]]');       xk=x0+V(:,1:k)*yk;       nres=abs(gamma(k+1)*[0*[1:k-1],1]*yk)*norm(V(:,k+1),2)/nres0;       k=k+1;     end endelse  x=x0;endif k==m+2, niter=-k; else, niter=k-1; endreturn

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -