Need help solving first order DiffyQ analytically with matrix

1 view (last 30 days)
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!

Accepted Answer

Ridwan Alam
Ridwan Alam on 10 Dec 2019
Edited: Ridwan Alam on 10 Dec 2019
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!

More Answers (0)

Categories

Find more on Elementary Math in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!