Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
lapack-全压缩矩形格式的寻址_Lapack - Fatal编程技术网

lapack-全压缩矩形格式的寻址

lapack-全压缩矩形格式的寻址,lapack,Lapack,我想使用LAPACK例程使用完全压缩的矩形格式对矩阵进行因式分解和求逆,因为对于对称的nxn矩阵,这只需要存储nn+1/2元素。到目前为止,我正在以“打包”格式设置矩阵,并调用例程DTPTTF对其进行转换。但是,这需要第二个数组。我想直接以完全压缩的矩形格式构建我的矩阵,以节省空间-是否有一个“寻址”函数可以给我I,j-th元素的位置?或者有人能给我指出相关的公式吗?部分回答我自己的问题:检查DTPTTF的源代码和其中给出的示例,我已经计算出了四个可能星座中的一个的地址,这是我唯一需要的星座,即

我想使用LAPACK例程使用完全压缩的矩形格式对矩阵进行因式分解和求逆,因为对于对称的nxn矩阵,这只需要存储nn+1/2元素。到目前为止,我正在以“打包”格式设置矩阵,并调用例程DTPTTF对其进行转换。但是,这需要第二个数组。我想直接以完全压缩的矩形格式构建我的矩阵,以节省空间-是否有一个“寻址”函数可以给我I,j-th元素的位置?或者有人能给我指出相关的公式吗?

部分回答我自己的问题:检查DTPTTF的源代码和其中给出的示例,我已经计算出了四个可能星座中的一个的地址,这是我唯一需要的星座,即uplo='L'和trans='N'。下面是我的fortran函数:

! ====================================     ! returns address for RFP format
  integer function ijfprf( ii, jj, n )     ! for row jj and column ii
! ====================================     ! for UPLO = 'L' and TRANSR = 'N' only!

  implicit none
  integer, intent(in) :: ii, jj, n
  integer             :: i, j, k, n1, k1

  if( ii <= jj ) then
      i = ii; j = jj
  else
      i = jj; j = ii
  end if
  k = n/2
  if( mod(n,2) == 0 ) then                     ! n even
      n1 = n + 1
      if( i <= k ) then
          ijfprf = 1 + (i - 1) * n1 + j
      else
          ijfprf = ( j - k - 1 ) * n1 + i - k
      end if
  else                                         ! n odd
      k1 = k + 1
      if( i > k1 ) then
          ijfprf = ( j - k1 ) * n + i - k1
      else
          ijfprf = ( i - 1 ) * n + j
      end if
  end if

  return
  end function ijfprf