Error in ode function -- not enough input arguments

1 view (last 30 days)
t1 = [0 4.4];
t2a = [4.4 4.7];
t2b = [4.7 5];
t3 = [5 8];
Ek1 = exp(1i*pi);
phi= pi./2;
k = -phi./(t2a(1)-t1(1));
Ek2a = @(t) exp(1i*(phi + k.*(t-t1(1))));
Ek2b = exp(1i*0);
Ek3 = 0;
Tc = 1.77;
alfa= 1.667;
dEc1dt = @(t, Ec, Tc) (-alfa.*Ek1)./Tc - Ec./Tc;
dEc2adt = @(t, Ec, Tc) (-alfa.*Ek2a)./Tc - Ec./Tc;
dEc2bdt = @(t, Ec, Tc) (-alfa.*Ek2b)./Tc - Ec./Tc;
dEc3dt = @(t, Ec, Tc) (-alfa.*Ek3)./Tc - Ec./Tc;
y1= 0;
[t1 Ec1] = ode15s(@(t,Ec)dEc1dt(t, Ec, Tc), t1, y1);
y2a= Ec1(end);
[t2a Ec2a] = ode15s(@(t,t1, t2a, phi, Ec)dEc2adt(t, Ec, t1, t2a, phi, Tc), t2a, y2a);
y2b= Ec2a(end);
[t2b Ec2b] = ode15s(@(t,Ec)dEc2bdt(t,Ec, Tc), t2b, y2b);
y3= Ec2b(end);
[t3 Ec3] = ode15s(@(t,Ec)dEc3dt(t,Ec, Tc), t3, y3);
E1 = Ec1 - 1;
E2a = Ec2a + 1;
E2b = Ec2b + 1;
E3 = Ec3 ;
t = [t1; t2a; t2b; t3];
E = [ E1; E2a; E2b; E3];
plot(t, E)
Trying to code the above picture ; but I get error in Error in (line 26)
[t2a Ec2a] = ode15s(@(t,t1, t2a, phi, Ec)dEc2adt(t, Ec, t1, t2a, phi, Tc), t2a, y2a);
Capture.JPG

Accepted Answer

Torsten
Torsten on 28 Mar 2019
Edited: Torsten on 28 Mar 2019
Change these lines:
dEc2adt = @(t, Ec,Tc) (-alfa.*Ek2a(t))./Tc - Ec./Tc;
[t2a Ec2a] = ode15s(@(t,Ec)dEc2adt(t, Ec,Tc), t2a, y2a);
You should read about how to parametrize functions.
  3 Comments
Torsten
Torsten on 29 Mar 2019
Edited: Torsten on 29 Mar 2019
E =[t1; t2a; t2b; t3]; ?????
Maybe
E1 = Ec1 + Ek1;
E2a = Ec2a + Ek2a(t2a);
E2b = Ec2b + Ek2b;
E3 = Ec3 + Ek3;
t=[t1; t2a; t2b; t3];
E=[E1; E2a; E2b; E3];
plot(t,E)
?
madhan ravi
madhan ravi on 29 Mar 2019
@Torsten: +1, your latter comment made me laugh so bad :D

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!