2 views (last 30 days)

Show older comments

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
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!

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

Start Hunting!