1. 程式人生 > >利用fortran語言實現區間的線性變換

利用fortran語言實現區間的線性變換

!.. 本程式碼的功能:將[0,1)區間線性變換到[3.5,11.2)
Program LinearTransform
    implicit none
    integer, parameter :: n = 10000
    real :: x0 = 3.5, x1 = 11.2 
    real :: x(n), tranx(n)
    
    call random_seed()
    call random_number( x )  !.. 分佈為[0,1)
    
    print*, minval(x), maxval(x)
    !.. 進行線性變換:tranx = ( max(tranx) - min(tranx) ) / ( max(x) - min(x) ) * ( x - min(x) ) + min(tranx)
    !.. x的範圍為[0,1), max(x) = 1; min(x) = 0. 所以max(x) - min(x) = 1. max(tranx) = 11.2; min(tranx) = 3.5
    !.. 所以最終式子為: tranx = x * ( max(tranx) - min(tranx) ) + min(tranx)
    !.. 當n越大,線性變換後的範圍越精確
    tranx = x * ( x1 - x0 ) + x0   !.. 分佈範圍為[3.5,11.2)    
    print*, minval(tranx), maxval(tranx)
    
End program LinearTransform