# how to form tridiagonal matrix in matlab

Status
Not open for further replies.

#### ramani

##### Member level 4 tridiagonal matrix matlab

hi to all,

what is the syntax used in matlab to form tridiagonal matrix from the available lower,main and upper diagonal elements.

if i use T1=diag(md1)+diag(ld1,-1)+diag(ud1,1);,
it is not working for 2×2 tridiagonal matrix.
for 2×2 tridiagonal matrix all elements should present.

is there any matlab program available for this?

#### jacobus

##### Newbie level 5 matlab tridiagonal matrix

I think that statement is OK, if our understanding is the same
example:
diag([1,2])+diag(1,-1)+diag(2,1)

ans =

1 2
1 2

?diag([1,2,3])+diag([1,2],-1)+diag([1,2],1)

ans =

1 1 0
1 2 2
0 2 3

#### ramani

##### Member level 4 matlab tridiagonal

but if i use the expression shown below it gives the wrong answer.

diag(1)+diag(1,-1)+diag(1,1)

ans =

1 2
2 1

#### jacobus

##### Newbie level 5 tridiagonal matlab

hello
the first diag in your statement just generates a constant 1
which means, it just plus 1 to the sum(diag(1,-1), diag(1,1))
you may see it from the following:
diag(1)

ans =

1

?diag(1,-1)

ans =

0 0
1 0

?diag(1,1)

ans =

0 1
0 0

so you have to specify the all the diagnal elements in you matrix
just like this
diag([1,1])
or
diag([1,0])
then it will be OK.

#### jack27

##### Newbie level 1 Re: tridiagonal matlab

You may also use :

for k=1:20;

for i=2:n-1;
for j=1:n
if (j==i-1)
elseif (j==i)
elseif (j==i+1)
else
M(i,j)=0;
end
end
end

end

and Eye generate a nxn matrix with ones on its diagonal only.

Hope this helps.

Jack

hello
the first diag in your statement just generates a constant 1
which means, it just plus 1 to the sum(diag(1,-1), diag(1,1))
you may see it from the following:
diag(1)

ans =

1

?diag(1,-1)

ans =

0 0
1 0

?diag(1,1)

ans =

0 1
0 0

so you have to specify the all the diagnal elements in you matrix
just like this
diag([1,1])
or
diag([1,0])
then it will be OK.

- - - Updated - - -

From older post : on 10/05/2013, 01:30PM, leen87 posted :

You may also use :

for k=1:20;

for i=2:n-1;
for j=1:n
if (j==i-1)
elseif (j==i)
elseif (j==i+1)
else
M(i,j)=0;
end
end
end

end

and M=Eye generate a nxn matrix with ones on its diagonal only.

Hope this helps.

leen87

#### Rasha Hussein

##### Newbie level 4 Hi
You can use sparse matrix to assemble diagonal matrices

Hope this helps you
Rasha

Status
Not open for further replies.