对称矩阵Java构造错误
这就是我的问题,我必须一步一步地生成这种矩阵。步骤如下所示。在谷歌上搜索之后,我知道这种矩阵叫做对称矩阵。这个矩阵的矩阵和转置是相同的。我试着写下一些代码来实现这一点对称矩阵Java构造错误,java,for-loop,matrix,symmetric,Java,For Loop,Matrix,Symmetric,这就是我的问题,我必须一步一步地生成这种矩阵。步骤如下所示。在谷歌上搜索之后,我知道这种矩阵叫做对称矩阵。这个矩阵的矩阵和转置是相同的。我试着写下一些代码来实现这一点 c1 c2 C3 C4 c1 c2 C3 C4 R1 1 0 0 0 R1 1+1 -1 0 0 R2 0 0 0 0 R2 -1 1
c1 c2 C3 C4 c1 c2 C3 C4
R1 1 0 0 0 R1 1+1 -1 0 0
R2 0 0 0 0 R2 -1 1 0 0
R3 0 0 0 0 R3 0 0 0 0
R4 0 0 0 0 R4 0 0 0 0
c1 c2 C3 C4 c1 c2 C3 C4
R1 2 -1 0 0 R1 2 -1 0 0
R2 -1 1+1 -1 0 R2 -1 2 -1 0
R3 0 -1 1 0 R3 0 -1 1+1 -1
R4 0 0 0 0 R4 0 0 -1 1
c1 c2 C3 C4
R1 2 -1 0 0
R2 -1 2 -1 0
R3 0 -1 2 -1
R4 0 0 -1 1
这不是对称矩阵。有人能告诉我应该在代码块中更改什么吗。我几乎达到了目标。你似乎犯了一个又一个错误
5.000000 -5.000000 -5.000000 -5.000000 0.000000
-4.000000 4.000000 -4.000000 -4.000000 0.000000
-3.000000 -3.000000 3.000000 -3.000000 0.000000
-2.000000 -2.000000 -2.000000 2.000000 0.000000
-1.000000 -1.000000 -1.000000 -1.000000 0.000000
for(inti=0;i您似乎出现了一个off-by-one错误
5.000000 -5.000000 -5.000000 -5.000000 0.000000
-4.000000 4.000000 -4.000000 -4.000000 0.000000
-3.000000 -3.000000 3.000000 -3.000000 0.000000
-2.000000 -2.000000 -2.000000 2.000000 0.000000
-1.000000 -1.000000 -1.000000 -1.000000 0.000000
for(int i=0;i
位于错误的位置;您每次完成一行时都要将部分更新的omega1
副本添加到omega
中。因此,第一行添加5次,第二行添加4次……再加上从未更新最后一列,这就解释了您的结果
位于错误的位置;您每次完成一行时都会将部分更新的omega1
副本添加到omega
中。因此,第一行添加5次,第二行添加4次……再加上从未更新最后一列,这就解释了您的结果。不是答案,只是一个澄清。抱歉,但是y我们的逻辑是不完整的。考虑第一遍历,i=0;然后j将从0迭代到3。因此,按照你的代码,你正在设置:
omega=omega.plus(omega1);
如果
R1C1 = 1;
R1C2 = -1;
R1C3 = -1;
R1C4 = -1;
if(i==j){
omega1.set(i,j,1);//这里我设置了值1,如果i=j
如果(i
只是一个快速的解决方案,记住你的方法,你总是可以优化它或使它更好
注:从未使用过JAM.Matrix,所以不知道函数,但我相信它基本上是一个2D数组,加上数学函数。Jez我听起来很傻!!< /P> < P>不是一个答案,只是一个澄清。抱歉,但是你的逻辑还不完全。考虑第一个遍历,i=0;然后J将从0个迭代到3个。你正在设置:
omega=omega.plus(omega1);
如果
R1C1 = 1;
R1C2 = -1;
R1C3 = -1;
R1C4 = -1;
if(i==j){
omega1.set(i,j,1);//这里我设置了值1,如果i=j
如果(i
只是一个快速的解决方案,记住你的方法,你总是可以优化它或使它更好
注意:我从未使用过Jama.Matrix,所以我不知道函数,但我相信它基本上是一个添加了数学函数的2D数组。天啊,我听起来很傻!!“我必须一步一步地生成这种矩阵”,但您的代码没有遵循问题开头的步骤。您知道这些步骤是什么吗?“我必须一步一步地生成这种矩阵"但是你的代码没有遵循问题开头的步骤。你知道这些步骤是什么吗?那么解决办法是什么呢?你有没有尝试过修复这里的答案指出的错误,并看到它会走多远?你有没有可能使用调试器逐步完成你的算法?那么解决办法是什么呢ion?您是否尝试过修复此处答案指出的错误,并查看其进展情况?您是否有可能使用调试器逐步完成您的算法?那么解决方案是什么?解决方案是什么?您可以使用2D数组编写此代码吗?这对我来说没问题。@EllenaMori不,我认为任何人都不应该向您提供现成的解决方案,学习曲线需要由你自己来调整。我已经为你提供了逻辑的热情,你应该能够在很短的时间内总结出一个有效的解决方案。想想看,如果我给你一个现成的解决方案,你会从中学到什么?祝你好运!!你能用2D数组编写这段代码吗?那将我没问题。@EllenaMori不,我不认为任何人应该给你一个现成的解决方案,学习曲线需要你一个人来调整。我给了你逻辑的热情,你应该能够在很短的时间内总结出一个有效的解决方案。想想看,如果我给你一个现成的解决方案,你会学到什么宁在里面?祝你好运!!