| ²é¿´: 2887 | »Ø¸´: 20 | ||
| µ±Ç°Ö»ÏÔʾÂú×ãÖ¸¶¨Ìõ¼þµÄ»ØÌû£¬µã»÷ÕâÀï²é¿´±¾»°ÌâµÄËùÓлØÌû | ||
kimileegdut¾èÖú¹ó±ö (СÓÐÃûÆø)
|
[ÇóÖú]
Äæ¾ØÕóÔËËã ÒÑÓÐ2È˲ÎÓë
|
|
| ÇóÖú¸÷λ´óÉñ£¬±¾ÈË×î½üÔÚ±àдһ¸ö³ÌÐò£¬Éæ¼°µ½Äæ¾ØÕóÔËË㣬¶øÇÒ¾ØÕóάÊýºÜ´ó£¨100*100£©£¬²ÉÓÃÁËÎ÷¶ûÂü-ĪÀïÉú¹«Ê½ÇóÄæ¾ØÕ󣬵«ÊǺóÐø¼ÆËã½á¹ûÓÐÎó£¬ÓÚÊÇÑéËãÄæ¾ØÕóµÄÕýÎ󣬷¢ÏÖÔÀ´µÄ¾ØÕóºÍÄæ¾ØÕóÏà³Ë²»Îªµ¥Î»Õó£¬ÏëÇë½Ìһϸ÷λǰ±²£¬ÕâÖÖÇé¿öÇóÄæ¾ØÕóÓ¦¸ÃÔõô´¦Àí£¿ |
» ²ÂÄãϲ»¶
336Çóµ÷¼Á
ÒѾÓÐ4È˻ظ´
ÇóÉúÎïѧµ÷¼Á
ÒѾÓÐ8È˻ظ´
08ÉúÎïÓëҽҩר˶³õÊÔ346ÕÒµ÷¼Á
ÒѾÓÐ6È˻ظ´
ÉúÎïѧ327£¬Çóµ÷¼Á
ÒѾÓÐ6È˻ظ´
0710ÉúÎïѧÇóµ÷¼Á
ÒѾÓÐ7È˻ظ´
385·Ö ÉúÎïѧ£¨071000£©Çóµ÷¼Á
ÒѾÓÐ4È˻ظ´
²ÄÁÏ¿¼Ñе÷¼Á
ÒѾÓÐ4È˻ظ´
366Çóµ÷¼ÁÒ»Ö¾Ô¸¶«±±´óѧ
ÒѾÓÐ3È˻ظ´
08¹¤¿Æ275·ÖÇóµ÷¼Á
ÒѾÓÐ13È˻ظ´
²ÄÁϹ¤³Ì322·Ö
ÒѾÓÐ6È˻ظ´
kimileegdut
¾èÖú¹ó±ö (СÓÐÃûÆø)
- Ó¦Öú: 1 (Ó×¶ùÔ°)
- Ìû×Ó: 56
- ÔÚÏß: 24Сʱ
- ³æºÅ: 3526305
- ×¢²á: 2014-11-08
19Â¥2015-05-15 10:54:50
pippi6
Ìú¸Ëľ³æ (ÖøÃûдÊÖ)
¹¤³ÌºÍ¿ÆÑ§ÊýÖµ¼ÆËã×Éѯ
- Ó¦Öú: 413 (˶ʿ)
- ¹ó±ö: 0.002
- ½ð±Ò: 7116.5
- É¢½ð: 15
- ºì»¨: 63
- Ìû×Ó: 1639
- ÔÚÏß: 798.9Сʱ
- ³æºÅ: 2469437
- ×¢²á: 2013-05-14
- רҵ: ¼ÆËãÊýѧÓë¿ÆÑ§¹¤³Ì¼ÆËã
¡¾´ð°¸¡¿Ó¦Öú»ØÌû
¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï
¸Ðл²ÎÓ룬ӦÖúÖ¸Êý +1
kimileegdut: ½ð±Ò+20, ¡ïÓаïÖú 2015-05-11 11:49:44
¸Ðл²ÎÓ룬ӦÖúÖ¸Êý +1
kimileegdut: ½ð±Ò+20, ¡ïÓаïÖú 2015-05-11 11:49:44
|
ÊÔÊÔÕâ¸ö È«ÃæÑ¡Ö÷ÔªµÄgaussÏûÈ¥¡£²»Ðеϰ¡£°ÑÄãµÄÊý¾Ý´«ÉÏÀ´ !flag subroutine gaussr_inverse(a,n,np,b,m,mp) implicit none integer :: n,np,m,mp,i,j,k,irow,icol,l real*8 a(np,np),b(np,mp),pivinv,cc real*8, allocatable, dimension( :: dumreal*8 big integer, allocatable, dimension( :: ipiv,indxr,indxcreal*8, allocatable, dimension( :: c1allocate(ipiv(1:n),indxr(1:n),indxc(1:n),dum(1:max(n,m)),c1(1:n)) ipiv=0 ! row normalization (implicite pivoting) do i=1,n c1(i)=1/sqrt(sum(abs(a(i,1:n))**2)) a(i,1:n)=a(i,1:n)*c1(i) b(i,1:m)=b(i,1:m)*c1(i) end do do i=1,n ! Full pivoting, however, not necessarily starting from 1st col big=0.d0 do j=1,n if(ipiv(j)==1)cycle do k=1,n if (ipiv(k)==1) cycle if (abs(a(j,k)) <= big) cycle big=abs(a(j,k)) irow=j icol=k end do end do ! ipiv(icol)=1 means the column icol has been selected once ipiv(icol)=ipiv(icol)+1 if (irow.ne.icol) then ! exchange a(irow, with a(icol,![]() ! so a(irow,irow) is the selected pivot dum(1:n)= a(irow,1:n) a(irow,1:n)= a(icol,1:n) a(icol,1:n)=dum(1:n) dum(1:m)= b(irow,1:m) b(irow,1:m)= b(icol,1:m) b(icol,1:m)=dum(1:m) endif ! bookkeeping row- and column-indices indxr(i)=irow indxc(i)=icol if (abs(a(icol,icol))==0.d0) pause 'singular matrix.' pivinv=1.d0/a(icol,icol) a(icol,icol)=1.d0 a(icol,1:n)=a(icol,1:n)*pivinv b(icol,1:m)=b(icol,1:m)*pivinv do l=1,n if(l==icol)cycle ! only for row l not equal to icol cc=a(l,icol) a(l,icol)=0.d0 ! clever design a(l,1:n)=a(l,1:n)-a(icol,1:n)*cc b(l,1:m)=b(l,1:m)-b(icol,1:m)*cc end do end do do l=1,n if(indxr(l) == indxc(l)) cycle dum(1:n)=a(1:n,indxr(l)) a(1:n,indxr(l))=a(1:n,indxc(l)) a(1:n,indxc(l))=dum(1:n) end do do i=1,n a(1:n,i)=a(1:n,i)*c1(i) end do deallocate(ipiv,indxr,indxc,dum,c1) end subroutine gaussr_inverse |
2Â¥2015-05-10 08:27:12
kimileegdut
¾èÖú¹ó±ö (СÓÐÃûÆø)
- Ó¦Öú: 1 (Ó×¶ùÔ°)
- Ìû×Ó: 56
- ÔÚÏß: 24Сʱ
- ³æºÅ: 3526305
- ×¢²á: 2014-11-08
3Â¥2015-05-11 11:47:39
kimileegdut
¾èÖú¹ó±ö (СÓÐÃûÆø)
- Ó¦Öú: 1 (Ó×¶ùÔ°)
- Ìû×Ó: 56
- ÔÚÏß: 24Сʱ
- ³æºÅ: 3526305
- ×¢²á: 2014-11-08
|
·ÖÏíÒ»¸öÇóÄæ¾ØÕóµÄ´úÂë SUBROUTINE INVERMAT(AA,N,AV) ! !³ÌÐò˵Ã÷£ºÀûÓÃÎ÷¶ûÂü-ĪÀïÉú(Sherman-Morrison) ! ¹«Ê½Çó·½Õó[A]µÄÄæ¾ØÕó£¬Äܹ»¿Ë·þ¾ØÕóÔªËØÓÉÓڽײî½Ï´óÒýÆðµÄÀ§ÄÑ. ! [A]´æ·ÅÔÚÊý×éAA(N,N),Äæ¾ØÕó´æ·ÅÔÚÊý×éAV(N,N)ÖÐ. ! ! !¶¨ÒåÊý¾ÝÀàÐÍ£º×¢Òâ²ÉÓÃË«¾«¶È¸¡µãÊý REAL(kind=8),DIMENSION(N,N)::AA,TA,AV REAL(kind=8),DIMENSION(N)::VT,WK,DD ! ! DO i=1,N DO j=1,N TA(i,j)=AA(i,j) END DO END DO ! ! DO i=1,N DD(i)=1.D0 IF(TA(i,i).NE.0.) DD(i)=SQRT(ABS(TA(i,i))) DO j=1,N TA(i,j)=TA(i,j)/DD(i) TA(j,i)=TA(j,i)/DD(i) AV(i,j)=0.D0 END DO AV(i,i)=1.D0 TA(i,i)=TA(i,i)-1.D0 WK(i)=1.D0 END DO ! LJK=0 30 ISW=0 DO i=1,N IF(WK(i).LE.1.E-40) GOTO 40 DO j=1,N VT(j)=0.D0 DO k=1,N VT(j)=VT(j)+TA(i,k)*AV(k,j) END DO END DO VTA=1.D0+VT(i) IF(ABS(VTA).LE.1.E-40) GO TO 70 WK(i)=0. DO j=1,N HH=AV(j,i) DO k=1,N AV(j,k)=AV(j,k)-HH*VT(k)/VTA END DO END DO GO TO 40 70 ISW=ISW+1 END DO 40 CONTINUE ! IF(ISW.EQ.LJK) GO TO 80 LJK=ISW GO TO 30 80 CONTINUE DO i=1,N DO j=1,N AV(i,j)=AV(i,j)/DD(i)/DD(j) END DO END DO ! ! RETURN END SUBROUTINE INVERMAT |
4Â¥2015-05-11 18:03:28














»Ø¸´´ËÂ¥
:: dum