Not enough input arguments Error in bvpfcn (line 5) dydx = [y(2)*(U*y​(2)+K*y(1)​)/D];

1 view (last 30 days)
Error in bvpfcn (line 5) dydx = [y(2)*(U*y(2)+K*y(1))/D];
  5 Comments
Naveen Krish
Naveen Krish on 15 Mar 2022
Edited: Walter Roberson on 15 Mar 2022
function dydx = ode(y,x) % equation to solve
y1 = y(1);
y2= y(2);
dy1_dx = y(2);
dy2_dx = [U*y2+K*y1/D];
dy_dx = [dy_dx; dy2_dx];
end

Sign in to comment.

Answers (1)

Jan
Jan on 15 Mar 2022
Edited: Jan on 16 Mar 2022
r = bvp4c(ode,bc,solinit);
% ^^^
This is a call of the function ode() without input arguments. You want to provide a function handle instead:
r = bvp4c(@ode,bc,solinit);
% ^
This will fail also:
function dydx = ode(y,x) % equation to solve
y1 = y(1);
y2= y(2);
dy1_dx = y(2);
dy2_dx = [U*y2+K*y1/D];
dy_dx = [dy_dx; dy2_dx];
end
The function replies "dydx", but you define "dy_dx". Easier:
function dydx = ode(y, x)
D = 0.1; % m2/s
U = 1; % m/s
K = 1e-6; % 1/s
dydx = [y(2); ...
(U * y(2) + K * y(1)) / D]; % EDITED, parentheses added
end
Remember that 1*10^-6 is a multiplication and an expensive power operation, while 1e-6 is a cheap constant.
  8 Comments
Naveen Krish
Naveen Krish on 18 Mar 2022
Unrecognized function or variable 'solinit'.
Error in bvpfcn (line 1)
r = bvp4c(@ode,@bc,solinit);

Sign in to comment.

Categories

Find more on Programming in Help Center and File Exchange

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!