Creating matrices with elements as a function of kroneckerDelta

2 Ansichten (letzte 30 Tage)
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 Kommentare
Torsten
Torsten am 11 Jan. 2018
Bearbeitet: Torsten am 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 am 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

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Kategorien

Mehr zu Special Functions finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by