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

📄 wathen.m

📁 Matrix Iteration Methods. Matlab Implementation.
💻 M
字号:
function A = wathen(nx, ny, k)%% A matrix generator for iterative templates tester.%% WATHEN  A = WATHEN(NX,NY) is a random N-by-N finite element matrix%        where N = 3*NX*NY + 2*NX + 2*NY + 1.%        A is precisely the "consistent mass matrix" for a regular NX-by-NY%        grid of 8-node (serendipity) elements in 2 space dimensions.%        A is symmetric positive definite for any (positive) values of %        the "density", RHO(NX,NY), which is chosen randomly in this routine.%        In particular, if D=DIAG(DIAG(A)), then %              0.25 <= EIG(INV(D)*A) <= 4.5%        for any positive integers NX and NY and any densities RHO(NX,NY).%        This diagonally scaled matrix is returned by WATHEN(NX,NY,1).%%        Reference: A.J.Wathen, Realistic eigenvalue bounds for the Galerkin%        mass matrix, IMA J. Numer. Anal., 7 (1987), pp. 449-457.%%        BEWARE - this is a sparse matrix and it quickly gets large!%% =============================================================================if nargin < 2, error('Two dimensioning arguments must be specified.'), endif nargin < 3, k = 0; ende1 = [6,-6,2,-8;-6,32,-6,20;2,-6,6,-6;-8,20,-6,32];e2 = [3,-8,2,-6;-8,16,-8,20;2,-8,3,-8;-6,20,-8,16];e = [e1,e2;e2',e1]/45;n = 3*nx*ny+2*nx+2*ny+1;A = zeros(n);RHO = 100*rand(nx,ny); for j=1:ny     for i=1:nx      nn(1) = 3*j*nx+2*i+2*j+1;      nn(2) = nn(1)-1;      nn(3) = nn(2)-1;      nn(4) = (3*j-1)*nx+2*j+i-1;      nn(5) = 3*(j-1)*nx+2*i+2*j-3;      nn(6) = nn(5)+1;      nn(7) = nn(6)+1;      nn(8) = nn(4)+1;      em = e*RHO(i,j);         for krow=1:8             for kcol=1:8                 A(nn(krow),nn(kcol)) = A(nn(krow),nn(kcol))+em(krow,kcol);             end         end      end  endif k == 1   A = diag(diag(A)) \ A;end% ------------% End wathen.m% ------------

⌨️ 快捷键说明

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