系統

2016-05-23 34 views
1

假設我們有此哈密頓:系統

n = 10; 
H = ones(n,n); 

密度矩陣爲:

Ro = sym('r',[n,n]);%Density matrix 

運動方程是:

H*Ro-Ro*H 

上面運動方程是方程的右邊,左邊是密度矩陣的時間導數。

如何在沒有符號數學工具箱的情況下在Matlab中求解運動方程?我需要改變n的值。它可以達到100.

+0

「解決」是指從一些初始條件'x0'將系統整合爲有限時間'T'? – Geoff

+0

是的,我的意思是。初始條件可以是隻有(1,1)元素非零且等於1的矩陣。 – MOON

回答

0

在你的動力學函數中,爲了使用MATLAB的standard ode functions,在向量和矩陣之間重塑,這(據我所知)需要向量輸入。請注意,符號工具箱在此解決方案的任何位置均未使用。 R可以是任何尺寸的n-by-n,在您機器的內存限制之內。

function dR = dynfun(R,H) 
           %// R = n^2-by-1 vector 
           %// H = n-by-n matrix 
    n = sqrt(length(R));  
    R = reshape(R,[n,n]);  %// reshape R to n-by-n matrix 
    dR = H*R-R*H;    
    dR = dR(:);     %// reshape dR to n^2-by-1 vector 


end 

調用ODE求解:

[tout,Rout] = ode45(@(t,R) dynfun(R,H), [0,T], R0(:)); 

其中T是最終時間,R0n-by-n初始條件,tout是輸出的時間步長,並Rout是解的軌跡。注意由於重塑,Rout將是k-by-n^2,其中k是時間步數。如果您想要隨時間推移實際的矩陣,您需要重塑Rout的每一行。