计算内部产品



嗨,我正在尝试计算Fortran中的内部产品。我在下面提供示例代码,并说明我将获得的输出以及预期的输出。代码本身没有任何错误编译,但是我获得的输出不是我期望的。我认为无法正确编码内部产品。代码在下面。

编辑:我根据以下评论中获得的帮助编辑了代码。

program
integer :: i,j
integer, parameter :: nx = 10, ny = 10
complex, dimension(-nx:nx,-ny:ny) :: A,v
real :: B
    B = 0.0
    do j = -ny+1,ny-1
    do i = -nx+1,nx-1
         A(i,j) = v(i+1,j)+v(i-1,j)+v(i,j+1)+v(i,j-1)-4*v(i,j)
         B = B + conjg(A(i,j))*A(i,j) !computing the inner product
    end do 
    end do
    print *, 'Result of the inner product of A with itself', B
end program

我现在正确计算内部产品吗?谢谢。

注意:矩阵产物的痕迹是内部产品,例如Frobenius Inner产品。仅将内部产物的概括为等级2的张量,与等级1张量之间的乘积相同

您是否试图计算两个矩阵的内部产品?你能定义吗?

在任何情况下,如果要计算两个向量的内部产品,如果fortran,您可以写

prod = sum( A * B )

其中, AB是定义乘法(真实,复杂等(的类型的合格数组,而 prod same same same type的变量。

如果AB是一维,则计算其内部产品。我不知道该怎么称呼。

编辑

基于您提供的定义(" tr(a^ dagger a(= a_ {ij} a^*_ {ij} = tr(aa^ dagger("(,您的界限错误。将内部产物与

单独的循环中
do i = -nx,nx
  do j = -ny,ny
    B = B + conjg(A(i,j))*A(i,j) !computing the inner product
  end do
end do 

或使用

B = sum( conjg(A)*A )

没有循环。

相关内容

  • 没有找到相关文章

最新更新