hi people. i wrote two functions. they work correctly. now i want to plot the function N(T) versus T in range 0.1 to 14 . but i dont know how to do that.
maybe someone help me plz ?
clear;
function pa = partialtranspose(T)
J=1;B=4;d=4;
s0=[1 0;0 1];
sx=[0 1;1 0];
sy=[0 -1i;1i 0];
sz=[1 0;0 -1];
H = 2*J*kron(sz,sz)+B*(kron(sz,s0)+kron(s0,sz))+d*(kron(sx,sy)-kron(sy,sx));
ro = expm(-H/T)/trace(expm(-H/T));
pa = [ro(1,1) ro(2,1) ro(1,3) ro(2,3);ro(1,2) ro(2,2) ro(1,4) ro(2,4);
ro(3,1) ro(4,1) ro(3,3) ro(4,3);ro(3,2) ro(4,2) ro(3,4) ro(4,4)];
end
function ne = N(T)
ne=0.5*(sum(abs(eig(partialtranspose(T))))-1);
end

 采纳的回答

You can define ‘N’ as an anonymous function.
Try this:
N = @(T) 0.5*(sum(abs(eig(partialtranspose(T))))-1);
Tv = linspace(0.1, 14, 10); % Define Rnage Of ‘T’
for k = 1:numel(Tv)
Nv(k) = N(Tv(k));
end
figure
plot(Tv, Nv)
grid
I used the loop because ‘partialtranspose’ is not vectorised.
See the documentation on Anonymous Functions for more information on them.

更多回答(1 个)

M
M 2019-10-22
plot the function N(T) versus T in range 0.1 to 14
T is known ? T =[0.1 : 14 ] ?
And you want to plot ne(T) ?
In this case you could simply write
plot(T,ne)

类别

帮助中心File Exchange 中查找有关 Quantum Mechanics 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by