【发布时间】:2017-02-14 15:39:47
【问题描述】:
我正在使用最速下降法来计算具有 5x5 希尔伯特矩阵的线性系统的解。我相信代码很好,因为它给了我正确的答案。
我的问题是:
我认为需要进行太多迭代才能得出正确的答案。我相信我可能遗漏了算法中的某些内容,但目前我不确定是什么。
我不确定这是否是实现算法的最有效方法,此外,选择哪个“tol”有点混乱。
对这些的任何见解将不胜感激(尤其是 1.)。谢谢!
% Method of Steepest Descent with tol 10^-6
h = hilb(5); %Hilbert 5x5 matrix
b = [1;1;1;1;1]; %solution matrix
solution = zeros(d,1); %Initialization
residual = h*solution - b;
tol = 10^(-6)
count = 0;
while residual'*residual > tol;
roe = (residual'*residual)/(residual'*h*residual);
solution = solution - roe*residual;
residual = h*solution - b;
count = count + 1;
end
count
solution
%Method of Steepest Descent with tol 10^-12
solution = zeros(d,1);
residual = h*solution - b;
tol = 10^(-12)
count = 0;
while residual'*residual > tol;
roe = (residual'*residual)/(residual'*h*residual);
solution = solution - roe*residual;
residual = residual - roe*h*residual;
count = count + 1;
end
count
solution
%another_solution = invhilb(5)*b %Check for solution
【问题讨论】:
标签: matlab optimization mathematical-optimization numerical-methods gradient-descent