why is my function not working?

function CMO=ppl (t,y)
a0=30;a1=14;a2=50;a3=20;b3=a3;g=1;
dy1=y(2);
dy2=y(3);
dy3=b3/a0*g-a1/a0*y(3)-a2/a0*y(2)-a3/a0*y(1);
CMO=[dy1;dy2;dy3];
[t,y]=ode23 ('ppl',[0,5],[0,0,0]);% in command window
Error in ode45 (line 115)
odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, varargin);

2 Comments

The function works fine for me. Here's the output.
t =
0
0.00012
0.00072
0.00372
0.01872
0.0521
0.085669
0.11946
0.15349
0.18781
0.22242
0.25944
0.30302
0.35456
0.41588
0.48947
0.57896
0.69019
0.83431
1.0111
1.2065
1.4231
1.6663
1.8763
2.0559
2.1671
2.2784
2.4143
2.5807
2.7772
3.0085
3.2516
3.466
3.6104
3.7548
3.8762
4.0363
4.2349
4.4512
4.6403
4.7521
4.8638
5
y =
0 0 0
1.92e-13 4.7999e-09 7.9998e-05
4.147e-11 1.7278e-07 0.00047992
5.7184e-09 4.6101e-06 0.0024778
7.2797e-07 0.00011647 0.012424
1.5633e-05 0.00089722 0.034288
6.9163e-05 0.0024117 0.055871
0.00018664 0.0046604 0.077149
0.00039404 0.0076442 0.098095
0.00071816 0.011365 0.11868
0.0011868 0.015825 0.13888
0.0018725 0.021354 0.15979
0.0029627 0.028839 0.18347
0.0047049 0.038987 0.21006
0.0075098 0.052786 0.23958
0.012074 0.071624 0.27177
0.01962 0.097512 0.30583
0.032439 0.13352 0.33992
0.055342 0.18486 0.36971
0.093934 0.2518 0.38333
0.15045 0.32579 0.3691
0.22945 0.40097 0.31954
0.33567 0.46812 0.22767
0.43831 0.5054 0.1251
0.53059 0.51909 0.026645
0.58837 0.51853 -0.036722
0.64569 0.5109 -0.1003
0.71397 0.49205 -0.17632
0.79299 0.45531 -0.26359
0.87674 0.39436 -0.35326
0.95765 0.30276 -0.4329
1.0178 0.19094 -0.4794
1.0476 0.08692 -0.48537
1.0551 0.017718 -0.47062
1.0528 -0.048289 -0.4413
1.0438 -0.099847 -0.40612
1.0228 -0.16026 -0.34662
0.98468 -0.22029 -0.25569
0.93188 -0.26341 -0.14163
0.88015 -0.28017 -0.035751
0.84875 -0.28065 0.026896
0.81769 -0.27421 0.088081
0.78139 -0.25731 0.15893
And the interesting thing is you used ode23 and your error message shows error in ode45 something is fishy here..

Sign in to comment.

Answers (1)

madhan ravi
madhan ravi on 4 Dec 2018
change 'ppl' to @ppl

3 Comments

Adam Danz
Adam Danz on 4 Dec 2018
Edited: Adam Danz on 4 Dec 2018
The function also works when the first input is a string that matches a function name. The code Dmitrii shared is functional as-is.
well interesting this is what I got: (version 2018b) if you see https://www.mathworks.com/help/matlab/ref/ode23.html#bu78c6p the last line in input argument says that Data Types should be a function_handle meaning that they have changed it in recent versions (to be noted it's 2018b documentation)
Error using feval
Undefined function or variable 'ppl'.
Error in odearguments (line 90)
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Error in ode23 (line 114)
odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options,
varargin);
Error in COMMUNITY (line 1)
[t,y]=ode23 ('ppl',[0,5],[0,0,0]);% in com
>>
Adam Danz
Adam Danz on 4 Dec 2018
Edited: Adam Danz on 4 Dec 2018
Yeah, you're right that it should be a function handle but the string also works in 2018a. Probably a glitch. +1 (upvoted)

Sign in to comment.

Products

Release

R2018b

Asked:

on 3 Dec 2018

Edited:

on 4 Dec 2018

Community Treasure Hunt

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

Start Hunting!