Creating matrices with elements as a function of kroneckerDelta

1 view (last 30 days)
Hello everyone,
I want to create some spin matrices for which I know the elements as a function of matrix index and kroneckerDelta function. The functions are given here Spin Matrices.
Here's the snippet of the code:
S = 1;
syms m n
for m = -S:1:S
for n = -S:1:S
sx{m,n} = (kroneckerDelta(m,n+1) + kroneckerDelta(m+1,n))*sqrt(S*(S+1) - m*n)/2;
sy{m,n} = (kroneckerDelta(m,n+1) - kroneckerDelta(m+1,n))*sqrt(S*(S+1) - m*n)/(2*1i);
sz{m,n} = kroneckerDelta(m,n)*m;
s_plus{m,n} = kroneckerDelta(m,n+1)*sqrt(S*(S+1) - m*n);
s_minus{m,n} = kroneckerDelta(m+1,n)*sqrt(S*(S+1) - m*n);
end
end
The snippet gives errors in kroneckerDelta Function and the indices of the matrices. Can anyone help me in debugging this?
  4 Comments
Torsten
Torsten on 11 Jan 2018
Edited: Torsten on 11 Jan 2018
By assigning values to m and n
for m = -S:1:S
for n = -S:1:S
m and n become double.
Best wishes
Torsten.
Jitendra Kumar Singh
Jitendra Kumar Singh on 11 Jan 2018
Here is how I fixed the code. Thank you everyone for your comments.
clearvars
S = 1;
for m = 1:1:(2*S+1)
for n = 1:1:(2*S+1)
sx{m,n} = (double(eq(m, n+1)) + double(eq(m+1, n)))*sqrt(S*(S+1) - m*n)/2;
sy{m,n} = (double(eq(m, n+1)) - double(eq(m+1, n)))*sqrt(S*(S+1) - m*n)/(2*1i);
sz{m,n} = double(eq(m, n))*m;
s_plus{m,n} = double(eq(m, n+1))*sqrt(S*(S+1) - m*n);
s_minus{m,n} = double(eq(m+1, n))*sqrt(S*(S+1) - m*n);
end
end

Sign in to comment.

Answers (0)

Categories

Find more on Mathematics in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!