Julia中对角占优矩阵的检验
我在朱莉娅做一个项目,我用随机数创建了一个13x13矩阵,然后我检查这个矩阵是否是对角占优的。我对Julia还很陌生,但我对其他一些PRG做了很多工作,所以这个程序是python的一种迭代Julia中对角占优矩阵的检验,julia,Julia,我在朱莉娅做一个项目,我用随机数创建了一个13x13矩阵,然后我检查这个矩阵是否是对角占优的。我对Julia还很陌生,但我对其他一些PRG做了很多工作,所以这个程序是python的一种迭代 function checkD() A=2*rand(13,13).-1 G=A'A j=1 i=1 for i=1:13 sum = 0 for j=1:13 sum = sum + abs.(G[i,j]) end sum = sum - abs.(G[i,
function checkD()
A=2*rand(13,13).-1
G=A'A
j=1
i=1
for i=1:13
sum = 0
for j=1:13
sum = sum + abs.(G[i,j])
end
sum = sum - abs.(G[i,i])
if(abs.(G[i,i]) < sum)
return false
end
return true
end
函数checkD()
A=2*兰特(13,13)。-1
G=A'A
j=1
i=1
因为i=1:13
总和=0
对于j=1:13
总和=总和+绝对值(G[i,j])
结束
sum=sum-abs(G[i,i])
if(abs.(G[i,i])
我知道j和I在开始时的声明有点多余,但现在我把它们放在那里了。我的问题是,即使我知道矩阵G=A'A是对角占优的,我还是不断地得到错误的结果。假设您的定义如下: 对角占优矩阵是一个平方矩阵,使得在每一行中,对角项的绝对值大于或等于该行中其余项的绝对值之和 您可以使用此代码检查矩阵
a
是否为对角占优矩阵(需要使用LinearAlgebra
):
all(总和(abs.(a),dims=2)。在REPL中一步一步地检查您的逻辑可能是值得的,以检查您的函数实际上在做什么。例如,您在未使用的变量j
上有一个循环,并且在第一次迭代后退出的i
上有一个循环。我认为这不是您打算在这里做的。下面是一个示例不分配和提前退出的离子:all(sum(view(G,i,:)@DNF+1。我的目标是尽可能减少字符数:-)啊。那么,我可以建议:all(sum(abs,G;dims=2)。太好了!你赢了:-)
all(sum(abs.(a),dims=2) .<= 2abs.(diag(a)))