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

1 vue (au cours des 30 derniers jours)
Naveen Krish
Naveen Krish le 15 Mar 2022
Commenté : Walter Roberson le 18 Mar 2022
Error in bvpfcn (line 5) dydx = [y(2)*(U*y(2)+K*y(1))/D];
  5 commentaires
Naveen Krish
Naveen Krish le 15 Mar 2022
Modifié(e) : Walter Roberson le 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
Torsten
Torsten le 15 Mar 2022
dy_dx = [dy1_dx; dy2_dx]
instead of
dy_dx = [dy_dx; dy2_dx]

Connectez-vous pour commenter.

Réponses (1)

Jan
Jan le 15 Mar 2022
Modifié(e) : Jan le 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 commentaires
Naveen Krish
Naveen Krish le 18 Mar 2022
Unrecognized function or variable 'solinit'.
Error in bvpfcn (line 1)
r = bvp4c(@ode,@bc,solinit);
Walter Roberson
Walter Roberson le 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

Connectez-vous pour commenter.

Catégories

En savoir plus sur Programming dans Help Center et File Exchange

Produits


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by