Creating a tridiagonal matrix

808 Ansichten (letzte 30 Tage)
Aaron Atkinson
Aaron Atkinson am 11 Nov. 2019
Kommentiert: John D'Errico am 10 Dez. 2022
I am currently trying to create a 500*500 matrix in matlab with diagonals a=-1, b=4, c=2. My teacher has said that the best way to go about it is using loops, but is there a coded in function to use?
  2 Kommentare
David Goodmanson
David Goodmanson am 11 Nov. 2019
Hi Aaron
check out the 'diag' function
Alex Treat
Alex Treat am 30 Okt. 2020
coughs you were in the mec 103 class at CSU...

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Stephen23
Stephen23 am 11 Nov. 2019
Bearbeitet: Stephen23 am 20 Mär. 2022
"My teacher has said that the best way to go about it is using loops"
Why on earth would they say that? Here are some non-loop aproaches:
2- Use diag :
>> N = 10;
>> a = -1;
>> b = 4;
>> c = 2;
>> M = diag(a*ones(1,N)) + diag(b*ones(1,N-1),1) + diag(c*ones(1,N-1),-1)
M =
-1 4 0 0 0 0 0 0 0 0
2 -1 4 0 0 0 0 0 0 0
0 2 -1 4 0 0 0 0 0 0
0 0 2 -1 4 0 0 0 0 0
0 0 0 2 -1 4 0 0 0 0
0 0 0 0 2 -1 4 0 0 0
0 0 0 0 0 2 -1 4 0 0
0 0 0 0 0 0 2 -1 4 0
0 0 0 0 0 0 0 2 -1 4
0 0 0 0 0 0 0 0 2 -1
3- indexing is reasonably simple:
>> M = zeros(N,N);
>> M( 1:1+N:N*N) = a;
>> M(N+1:1+N:N*N) = b;
>> M( 2:1+N:N*N-N) = c
M =
-1 4 0 0 0 0 0 0 0 0
2 -1 4 0 0 0 0 0 0 0
0 2 -1 4 0 0 0 0 0 0
0 0 2 -1 4 0 0 0 0 0
0 0 0 2 -1 4 0 0 0 0
0 0 0 0 2 -1 4 0 0 0
0 0 0 0 0 2 -1 4 0 0
0 0 0 0 0 0 2 -1 4 0
0 0 0 0 0 0 0 2 -1 4
0 0 0 0 0 0 0 0 2 -1
  6 Kommentare
Arth Patel
Arth Patel am 29 Sep. 2020
Can you please explain the second method a bit ? It's not clear to me how you're indexing a matrix using just one argument.
Stephen23
Stephen23 am 30 Okt. 2020
"It's not clear to me how you're indexing a matrix using just one argument."
The second example uses linear indexing:

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Jihen
Jihen am 10 Dez. 2022
function[A]=remplissage(n)
R1=(-4)*ones(n-1,1);
R2=ones(n-2,1);
A=6*eye(n)+diag(R1,-1)+diag(R1,1)+diag(R2,2)+diag(R2,-2);
end
  1 Kommentar
John D'Errico
John D'Errico am 10 Dez. 2022
This does not actually answer the question, creating instead a matrix with 5 diagonals, so a penta-diagonal matrix.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Operating on Diagonal Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by