Diễn đàn Hải Dương học

Giương buồm ra biển lớn !


Cholesky Decomposition

Share
avatar
tieuminh2510

*****
*****

Tổng số bài gửi : 350
Danh dự : 5
Join date : 15/01/2008
Age : 32

Cholesky Decomposition

Bài gửi by tieuminh2510 on Fri Mar 21, 2008 2:14 pm

Code:
program Cholesky_Decomposition
!Ghi chu

!Khai bao
   !Bien Nhap      
      !Kich thuoc ma tran   
         integer n
      !Ma tran A (Ma tran ba duong cheo)
         real,allocatable::A(:,:)
      !Ma tran B
         real,allocatable::B(:)      
   !Bien Xuat
      !Ma tran Y (Ma tran nghiem)
         real,allocatable::Y(:)   
   
!Nhap lieu
   !Nhap kich thuoc ma tran A
      write(*,"(' Nhap kich thuoc ma tran A: ',$)")
      read(*,*) n
   !Khoi dong cac mang
      allocate(A(n,n),Y(n),B(n)) 
   !Nhap lieu tu ban phim cho ma tran A
      call Nhap_ma_tran(A,B,n)
   !Nhap lieu tu file cho ma tran A 

!Xu ly
   !Giai he phuong trinh ba duong cheo
      call Giai_he_PT_ba_duong_cheo(A,B,Y,n)
                               
!Xuat
   !Xuat ket qua

end
!--------------------------------------------------------------------------
subroutine Gan_gia_tri(A,n,k)
!Chu thich:
   !Ham Gan_gia_tri co tac dung gan cac gia tri trong ma tran bang 1 gia tri cho truoc
   !A la ma tran can gan gia tri khoi dong
   !n la kich thuoc ma tran
   !k la gia tri cac phan tu cua ma tran A ma ta muon gan
!Khai bao
   !Khai bao Ma tran A co n x n phan tu      
      real A(n,n)
   !Khai gia tri can gan
      real k   
!Xu ly
   do i=1,n
      do j=1,n
         A(i,j)=k;         
      enddo
   enddo      
end subroutine
!--------------------------------------------------------------------------
subroutine Nhap_ma_tran(A,B,n)
!Khai bao
   real A(n,n),B(n)       
!Nhap lieu cho ma tran A
   call Gan_gia_tri(A,n,0)
   do i=1,n
      do j=i-1,i+1
         if (j>0.and.j<=n) then
            write(*,'(" Nhap phan tu A[",I2,";",I2,"]: ",$)')   i,j
            read(*,*) A(i,j)
         end if      
      enddo
   enddo   
!Nhap lieu cho ma tran B       
   do i=1,n
      write(*,'(" Nhap phan tu B[",I2,"]: ",$)')   i
      read(*,*) B(i)
   enddo
end subroutine 
!--------------------------------------------------------------------------
subroutine Giai_he_PT_ba_duong_cheo(A,B,Y,n)
!Thuat giai:
   !Giai he phuong trinh AY = B
      !Ma tran A (Ma tran ba duong cheo)
      !Ma tran Y (Ma tran nghiem)
      !Ma tran B (Ma tran kq)
   !Phuong phap
      !Dat A = LU
         !Ma tran L (Ma tran tam giac duoi)
         !Ma tran U (Ma tran tam giac tren)
      !=> AY = LUY = B
      !Dat UY = Z
      !=>   AY = LZ = B
      !Buoc 1: Giai phuong trinh LZ = B tim Z
      !Buoc 2: Giai phuong trinh UY = Z tim Y

!Khai bao
   !Bien Nhap   
      !Ma tran A co n x n phan tu
         real A(n,n)
      !Ma tran B co n phan tu
         real B(n)   
   !Bien Xu ly
      !Mang L chua cac phan tu tren duong cheo chinh
         real L(n)
      !Mang U chua cac phan tu tren duong cheo tren
         real U(n)
      !Mang V chua cac phan tu tren duong cheo duoi
         real V(n)
      !Ma tran nghiem Z (Tich cua 2 ma tran U va Y)
         real Z(n)
   !Bien Xuat
      !Ma tran Y (Ma tran nghiem)
         real Y(n)
!Xu ly   
     !Phan tich mang A --> Mang U,V,L
      v(1)=0.
      u(n)=0.
      l(1)=a(1,1)   
      do i=2,n
         v(i)=a(i,i-1)   
         u(i-1)=a(i-1,i)/l(i-1)
         l(i)=a(i,i)-v(i)*u(i-1)      
      enddo    
   !Tim ma tran Z
      do i=1,n
         z(i)=(b(i)-v(i)*z(i-1))/l(i)   
      enddo
   !Tim ma tran Y
      do i=n,1,-1
         y(i)=z(i)-u(i)*y(i+1)
      enddo
end subroutine
!--------------------------------------------------------------------------
avatar
smile

-----
-----

Tổng số bài gửi : 11
Danh dự : 0
Join date : 27/02/2008

Re: Cholesky Decomposition

Bài gửi by smile on Wed Apr 02, 2008 12:09 am

:thank:
avatar
tieuminh2510

*****
*****

Tổng số bài gửi : 350
Danh dự : 5
Join date : 15/01/2008
Age : 32

Re: Cholesky Decomposition

Bài gửi by tieuminh2510 on Fri Apr 04, 2008 2:17 pm

Đây là link tải của bài toán khuếch tán hoàn chỉnh, mình đã giải bài toán dưới cả trường hợp số phức, link ẩn nên bạn chỉ thấy được sau khi đã đăng nhập và comment vài lời cảm ơn cho mình, không comment thì khỏi cho down luôn :laugh:
avatar
be kha

-----
-----

Tổng số bài gửi : 48
Danh dự : 0
Join date : 19/01/2008

Re: Cholesky Decomposition

Bài gửi by be kha on Sat Apr 05, 2008 8:56 pm

cam on ban minh tot bung cua minh nha!!!!!!!!!!!!!!!!!!!!!!

myanh

-----
-----

Tổng số bài gửi : 26
Danh dự : 0
Join date : 16/01/2008

Re: Cholesky Decomposition

Bài gửi by myanh on Mon Apr 07, 2008 7:33 pm

thanks
avatar
tieuminh2510

*****
*****

Tổng số bài gửi : 350
Danh dự : 5
Join date : 15/01/2008
Age : 32

Re: Cholesky Decomposition

Bài gửi by tieuminh2510 on Tue Apr 08, 2008 8:30 am

Cái link lần trước do sơ xuất nên mình post thiếu file porgram nên không thể chạy được các bạn chụi khó download lại nhé: [You must be registered and logged in to see this link.]
:laugh::laugh::laugh:
avatar
huhuhuhuhu

**---
**---

Tổng số bài gửi : 177
Danh dự : 0
Join date : 09/04/2008

Re: Cholesky Decomposition

Bài gửi by huhuhuhuhu on Thu Apr 10, 2008 1:07 am

Hi hi, tôi ko thanks cũng down được nè!

Sponsored content

Re: Cholesky Decomposition

Bài gửi by Sponsored content


    Hôm nay: Mon Sep 24, 2018 9:27 pm