Matlab hilbert矩阵条件数的计算
好吧,首先我觉得问这个问题很傻,因为答案似乎应该很简单,但我想不出来 我有一个向量n:Matlab hilbert矩阵条件数的计算,matlab,matrix,Matlab,Matrix,好吧,首先我觉得问这个问题很傻,因为答案似乎应该很简单,但我想不出来 我有一个向量n: n=[2:13] 我想通过elementwise传递这个向量,以便它返回另一个带有计算值的向量: condition=cond(hilb(n)) hilb(n)返回维数n的Hilbert矩阵。cond()然后计算条件数,这是一个标量值。目前,Matlab使用n中的第一个值返回条件作为单个值,该值为2,而不是长度等于n的向量 我知道使用*,sin.(和其他命令来计算元素,但我找不到如何使用这样的函数来实现这
n=[2:13]
我想通过elementwise传递这个向量,以便它返回另一个带有计算值的向量:
condition=cond(hilb(n))
hilb(n)返回维数n的Hilbert矩阵。cond()
然后计算条件数,这是一个标量值。目前,Matlab使用n中的第一个值返回条件作为单个值,该值为2,而不是长度等于n的向量
我知道使用
*
,sin.(
和其他命令来计算元素,但我找不到如何使用这样的函数来实现这一点 不幸的是,你不能像那样将向量传递给hilb
。您应该使用循环,或者更简单的方法:
请注意,arrayfun
只是一个伪装的循环,因此与显式编写循环相比,它没有提供任何性能优势
condition = zeros(1,numel(n));
for ii = 1:numel(n)
condition(ii) = cond(hilb(n(ii)));
end
请记住,
hilb
是一个病态矩阵,因此您的值将非常高(cond(hilb(13))=8.3042e+19
。这意味着您得到的向量将如下所示:1.0e+19*0.0000 0.0000…0.0017 8.3042
。如果您使用,那么您将看到每个元素的值:1.9281e+01 5.2406e+02…8.3042e+19
很遗憾,您不能像这样将向量传递给hilb
。您应该做什么ld do是使用循环,或更简单的方法:
请注意,arrayfun
只是一个伪装的循环,因此与显式编写循环相比,它没有提供任何性能优势
condition = zeros(1,numel(n));
for ii = 1:numel(n)
condition(ii) = cond(hilb(n(ii)));
end
请记住,hilb
是一个病态矩阵,因此您的值将非常高(cond(hilb(13))=8.3042e+19
。这意味着您得到的向量将如下所示:1.0e+19*0.0000 0.0000…0.0017 8.3042
。如果使用,则可以看到每个元素的值:1.9281e+01 5.2406e+02…8.3042e+19