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

1 Ansicht (letzte 30 Tage)
Error in bvpfcn (line 5) dydx = [y(2)*(U*y(2)+K*y(1))/D];
  5 Kommentare
Naveen Krish
Naveen Krish am 15 Mär. 2022
Bearbeitet: Walter Roberson am 15 Mär. 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
Torsten
Torsten am 15 Mär. 2022
dy_dx = [dy1_dx; dy2_dx]
instead of
dy_dx = [dy_dx; dy2_dx]

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Jan
Jan am 15 Mär. 2022
Bearbeitet: Jan am 16 Mär. 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 Kommentare
Naveen Krish
Naveen Krish am 18 Mär. 2022
Unrecognized function or variable 'solinit'.
Error in bvpfcn (line 1)
r = bvp4c(@ode,@bc,solinit);

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Numerical Integration and Differential Equations finden Sie in Help Center und File Exchange

Produkte


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by