Index exceeds the number of array elements (1)

1 回表示 (過去 30 日間)
Yago Ferrara Román
Yago Ferrara Román 2021 年 10 月 20 日
コメント済み: Jan 2021 年 10 月 21 日
I`m trying to do a function to solve a lower triangular matrix but whe I try to run the code, it says there's a problem.
function [x]=sistriinferior(U,b,n)
x(1) = b(1)/U(1,1);
for i=2:n
s=0;
for j=1:n-1
s= s + U(i,j)*x(j); %apparently the problem is in this line
end
x(i) = (b(i)-s)/U(i,i);
end
end

採用された回答

Jan
Jan 2021 年 10 月 20 日
編集済み: Jan 2021 年 10 月 20 日
Replace
for j = 1:n-1
by
for j = 1:i-1
By the way, you can write
s = 0;
for j = 1:i - 1
s = s + U(i, j) * x(j);
end
as
s = U(i, 1:i - 1) * x(1:i - 1); % Dot product
Preallocate the output x before the loop to avoid the very expensive iterative growing of arrays:
x = zeros(n, 1);
  2 件のコメント
Yago Ferrara Román
Yago Ferrara Román 2021 年 10 月 20 日
Thank you so much, I'm starting to use this program at college and I have zero experience
Jan
Jan 2021 年 10 月 21 日
Do you know Matlab Onramp? This is a useful tutorial.
The debugger helps also to examine what's going on: Set a breakpoint on the left side of the editor. Then you can step through the code line by line during it is processed and control the values of the used variables.
Mistakes like the exchanged index in your case are hard to find, because your brain knows, what you wanted to type. This impedes the reading psychologically. In such cases it is the best option to ask colleagues, who are not involved or foreigners of the forum, who see the problem in a second. :-)

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by