Creating matrices with elements as a function of kroneckerDelta

3 vues (au cours des 30 derniers jours)
Jitendra Kumar Singh
Jitendra Kumar Singh le 11 Jan 2018
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 commentaires
Torsten
Torsten le 11 Jan 2018
Modifié(e) : Torsten le 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 le 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

Connectez-vous pour commenter.

Réponses (0)

Catégories

En savoir plus sur Special Functions dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by