您好我正在尝试在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内积。只是内积的推广到第2级的张量,与第1级张量之间的乘积相同的行为
答案 0 :(得分:1)
您是否正在尝试计算两个矩阵的内积?你能定义一下吗?
在任何情况下,如果你想计算Fortran的两个向量的内积,你可以写
<style>
tr.struck{background-color:#633;color:white;}
tr.eee{background-color:#EEE;color:#000;}
tr.fff{background-color:#FFF;color:#000;}
</style>
function doZebra(){
var tTrCnt=0;
$("##tblData tbody tr").each(function(){
if($(this).css("display")!="none" && !$(this).hasClass("struck")){
tTrCnt++;
if(tTrCnt % 2) $(this).removeClass().addClass("eee");
else $(this).removeClass().addClass("fff");
}
});
}
其中,prod = sum( A * B )
和A
是定义了乘法的类型的一致数组(实数,复数等),B
是的变量相同类型。
如果prod
和A
是一维的,则会计算其内部产品。我不知道它叫什么。
修改强>
根据您提供的定义(“Tr(A ^ \ dagger A)= A_ {ij} A ^ * _ {ij} = Tr(AA ^ \ dagger)”),您的界限有误。将内部产品放在一个单独的循环中
B
或使用
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
没有循环。