24小时热门版块排行榜    

查看: 1027  |  回复: 0

zouji1983

金虫 (正式写手)

[求助] 求助:ludcmp&lubksb

subroutine ludcmp(coeff, numvar, np, indx, d)
                integer                                                ::        numvar, np, indx(numvar)
                doubleprecision                                ::        d, coeff(np,np)
                integer, parameter                        ::        nmax=500
                doubleprecision, parameter        ::        tiny=1.0d-20
                integer                                                ::        i, imax, j, k
                doubleprecision                                ::        aamax, dum, sum, vv(nmax)
                d=1
                do i = 1, numvar
                        aamax = 0.d0
                        do j = 1, numvar
                                if (abs(coeff(i,j)).gt.aamax) aamax = abs(coeff(i,j))
                        end do
                        !if (aamax .eq. 0.d0) pause 'singular matrix in ludcmp'
                        vv(i) = 1./aamax
                end do
                do j = 1, numvar
                        do i= 1, j-1
                                sum = coeff(i,j)
                                do k=1,i-1
                                        sum = sum-coeff(i,k)*coeff(k,j)
                                end do
                                coeff(i,j) = sum
                        end do
                        aamax = 0.d0
                        do i = j,numvar
                                sum = coeff(i,j)
                                do k=1, j-1
                                        sum = sum - coeff(i,k) * coeff(k,j)
                                end do
                                coeff(i,j) = sum
                                dum = vv(i) * abs(sum)
                                if (dum .ge. aamax) then
                                        imax = i
                                        aamax = dum
                                end if
                        end do
                        if (j .ne. imax) then
                                do k = 1, numvar
                                        dum = coeff(imax,k)
                                        coeff(imax,k) = coeff(j,k)
                                        coeff(j,k) = dum
                                end do
                                d = -d
                                vv(imax) = vv(j)
                        end if

                        indx(j) = imax
                        if (coeff(j,j) .eq. 0.d0) coeff(j,j) = tiny
                        if (j .ne. numvar) then
                                dum = 1./coeff(j,j)
                                do i = j+1, numvar
                                        coeff(i,j) = coeff(i,j) * dum
                                end do
                        end if
                end do
                return
        end subroutine ludcmp

请教,这个的功能是怎样的,谢谢!
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

相关版块跳转 我要订阅楼主 zouji1983 的主题更新
信息提示
请填处理意见