Not enough input arguments Error in bvpfcn (line 5) dydx = [y(2)*(U*y(2)+K*y(1))/D];
1 view (last 30 days)
Show older comments
Error in bvpfcn (line 5) dydx = [y(2)*(U*y(2)+K*y(1))/D];
Answers (1)
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
Walter Roberson
on 18 Mar 2022
You do not appear to have assigned anything to solinit, such as by using https://www.mathworks.com/help/matlab/ref/bvpinit.html
See Also
Categories
Find more on Numerical Integration and Differential Equations 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!