5-2 �}���x�}���x�s�Ŷ�

¹ï©ó¤@­Ó¥u¥]§t¹ê¼Æªºµ}²¨¯x°}¡A°²³]¨äºû«×¬° m¡Ñn¡A§t¦³ nnz ­Ó«D¹s¤¸¯À¡AMATLAB °Ê¥Î¤F¤T­Ó¤º³¡°}¦C¨ÓÀx¦s¦¹µ}²¨¯x°}ªº¬ÛÃö¸ê°T¡G

¦]¦¹¡A¾ã­Óµ}²¨¯x°}¤º¦sªÅ¶¡¤j¤p¬° 8*nnz + 8*nnz + 8*n + 8 = 16*nnz + 8*n + 8¡A¦h¥X¨Óªº 8 ­Ó bytes ¬O¥Î¨ÓÀx¦s¨ä¥L¸g±`©Ê¸ê°T¡C¥H MATLAB ªº west0479.mat Àɮ׬°¨Ò¡A¦¹ÀÉ®×¥]§t¤@­Ó 479¡Ñ479 ªºµ}²¨¯x°}¡A§Ú­Ì¥i¥HÅçÃÒ¤W­z¤º¦sªÅ¶¡¤½¦¡¦p¤U¡G

Example 1: 05-µ}²¨¯x°}/memorySize01.mclear all load west0479.mat [m,n]=size(west0479); totalSize=16*nnz(west0479)+8*n+8 whos west0479totalSize = 34032 Name Size Bytes Class Attributes west0479 479x479 34032 double sparse

¥Ñ¤W¨Ò¥iª¾¡A§Ú­Ì¥Ñ¤W­z¤º¦sªÅ¶¡¤½¦¡©Ò±o¨ìªºµ²ªG¡A©M whos «ü¥O©Ò±o¨ìªºµ²ªG¬O¤@­Pªº¡C¦¹¥~¦b¤W¨Ò¤¤¡Annz(west0479) ¥i¶Ç¦^µ}²¨¯x°} west0479 ªº«D¹s¤¸¯À­Ó¼Æ¡A¨ä¥LÃþ¦üªº«ü¥OÁÙ¦³ nonzeros¡]¶Ç¦^¤@­Ó¥]§t©Ò¦³«D¹s¤¸¯Àªº¦æ¦V¶q¡^¤Î nzmax¡]¶Ç¦^³Ì¤jªº«D¹s¤¸¯À­Ó¼Æ¡^¡C

Hint
  • ¦b¤@­Óµ}²¨¯x°}¤¤¡A±N¤@­Ó«D¹s¤¸¯À³]©w¦¨¹s®É¡AMATLAB ¨Ã¤£·|¦Û°ÊÄÀ©ñ°O¾ÐÅéªÅ¶¡¡A´«¥]¸Ü»¡¡Annz ·|ÀHµÛ«D¹s¤¸¯Àªº´î¤Ö¦Ó´î¤Ö¡A¦ý nzmax ¨Ã¤£·|ÀHµÛ§ïÅÜ¡C¦ý¬O·í±z¦h¥[¤@­Ó«D¹s¤¸¯À®É¡A­Y nnz ¤w¤j©ó nzmax ®É¡Anzmax ·|ÀH¤§¼W¤j¡]§Y MATLAB ·|¦Û°Ê°t¸m°O¾ÐÅé¡^¥HÀx¦s·s¥[ªº¤¸¯À¡C

¤W­zªº¤º¦sªÅ¶¡¤½¦¡·|ÀHµÛ MATLAB ªºª©¥»¦Ó¦³©Ò§ïÅÜ¡A©Ò¥H¨M©w¤º¦sªÅ¶¡¤½¦¡ªº³Ì¦n¤è¦¡¬Oª½±µ¹ï MATLAB ¶i¦æ´ú¸Õ¡A½d¨Ò¦p¤U¡G

Example 2: 05-µ}²¨¯x°}/memorySize02.mcaseNum=100; A=zeros(caseNum, 4); % A in Ax=b b=zeros(caseNum, 1); % b in Ax=b for i=1:caseNum m=max([round(100*rand), 5]); n=max([round(100*rand), 5]); s=sprand(m, n, 0.1); sizeInfo=whos('s'); A(i,1)=nnz(s); A(i,2:3)=sizeInfo.size; A(i,4)=1; b(i)=sizeInfo.bytes; end x=A\b maxDiff=max(abs(A*x-b)) x = 16.0000 0.0000 8.0000 8.0000 maxDiff = 3.6380e-12

¦b¤W¨Ò¤¤¡A§Ú­Ì¨Æ¹ê¤W¬O¦b¸Ñ¤@­Ó½u©Ê¤èµ{¦¡ Ax=b¡A¨ä¤¤§Ú­Ì¨Ï¥Î¤F 100 ­Óµ}²¨¯x°}¨Ó²£¥Í A¡AA ¥]§t¥|­Óª½¦æ¡A¨C¤@­Óª½¦æ¤À§O¥Nªí³o 100 ­Óµ}²¨¯x°}ªº nnz¡]«D¹s¤¸¯À­Ó¼Æ¡^¡Bm¡]¾î¦C­Ó¼Æ¡^¡Bn¡]ª½¦æ­Ó¼Æ¡^¡A¥H¤Î±`¼Æ 1¡A¦Ó b «h¬O³o´X­Óµ}²¨¯x°}ªº¤º¦sªÅ¶¡¤j¤p¡C¥Ñ¤W­z½d¨Ò©Ò±o¨ìªº¹w´ú»~®t¬Û·í¤p¡A¦]¦¹¥Ñ x ªº­È´N¥i¥Hª¾¹D¨C¤@­Ó¯S¼x¡]nnz¡Bm¡Bn¡^©Ò¦û¥Îªº¤º¦sªÅ¶¡¤À§O¬O¡]16¡B0¡B8¡^¡A¦Ó¨C¤@­Óµ}²¨¯x°}ÁÙ·|¥Î¨ì 8 ­Ó¦ì¤¸²Õ¨ÓÀx¦s¸g±`©Ê¸ê°T¡C

Hint
¦b¤W­z½d¨Ò¤¤¡A§Ú­Ì¨Ï¥Î¡u¥ª°£¡v¡]x=A\b¡^¨Ó¨Ï¥Î³Ì¤p¥­¤èªk¸ÑÁp¥ß¤èµ{¦¡¡A¬ÛÃö»¡©ú¥i¨£¥»®Ñ¤§¡u½u©Ê¥N¼Æ¡v³¹¸`¡C


MATLABµ{¦¡³]­p¡G¶i¶¥½g