Need help solving first order DiffyQ analytically with matrix

1 次查看(过去 30 天)
I'm given the equation . This can also be written as . Where where and is a 2x1 matrix with initial value of . I need to solve this problem analytically with Euler method, I've already solved it numerically. I need to plot time vs. intensity.
my code attempt is as follows:
gamma=0.5;
H=[(gamma*i) -1;-1 -i*gamma];
G=(2:2);
psi=(2:1);
psi(1,1)=1;
psi(2,1)=0;
T=10;
N=1000;
deltat=T/N;
x=[];
y=[];
t=[];
x(1)=0.5;
y(1)=0;
t(1)=0;
t1=[];
for t=1:N
t1(end+1)=t;
x(t+1)=x(t)+y(t)*deltat;
y(t+1)=y(t)+deltat*(-i*H*psi);
intensity=abs(y).^2;
int1(end+1)=intensity(1,1);
int2(end+1)=intensity(2,1);
end
plot (t1,int1,'-*');
hold on;
plot (t1,int2,'-*');
hold off;
I keep getting the error 'Unable to perform assignment because the left and right sides
have a different number of elements.' for line 36: y(n+1)=n*y(n)+deltat*(-i*H*psi);
I am very confused by this and could use the help!

采纳的回答

Ridwan Alam
Ridwan Alam 2019-12-10
编辑:Ridwan Alam 2019-12-10
If I understood it right, your x and y are supposed to be 2x1 vectors.
gamma=0.5;
H=[(gamma*i) -1;-1 -i*gamma];
% G=(2:2); % where is it used?
psi=zeros(2,1);
psi(1)=1;
psi(2)=0;
T=10;
N=1000;
deltat=T/N;
x1=0.5;
y1=0;
t=0;
x=[x1; x1];
y=[y1; y1];
t1=[]; int1 = []; int2 = [];
for t=1:N
t1(end+1)=t;
x(:,t+1)=x(:,t)+y(:,t)*deltat;
y(:,t+1)=y(:,t)+deltat*(-i*H*psi);
intensity=abs(y(:,t+1)).^2;
int1(end+1)=intensity(1);
int2(end+1)=intensity(2);
end
plot (t1,int1,'-*');
hold on;
plot (t1,int2,'-*');
hold off;
Hope this helps!

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Special Functions 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by