I am getting input arguments error on line 2 of the function

3 件のコメント

Andy
Andy 2020 年 10 月 21 日
What data are you trying to pass to the function?
Does the error happen with different data?
Ameer Hamza
Ameer Hamza 2020 年 10 月 21 日
Why are you calling ode45 inside the ODEfun and using ODEfun as a function handle. This will not work and cause infinite recursion.
drummer
drummer 2020 年 10 月 21 日
where is W being used?

サインインしてコメントする。

 採用された回答

Stephan
Stephan 2020 年 10 月 21 日
編集済み: Stephan 2020 年 10 月 21 日

0 投票

Divide your code into a function for your ode and the part for solving and plottting the results:
y0 = 0; % --> change to 1 for example to get a "non boring" solution
Wspan = [0 100];
[z, fb] = ode45(@ODEfun, Wspan, y0);
plot(z, fb(:,1));
function dYfuncvecdW = ODEfun(~, Yfuncvec)
X = Yfuncvec(1);
k = 6;
Cao = 0.2;
yao = 1/3;
Fao = 2;
% Pao = 10; --> Value is not used
epsilon = yao*(1-2-1);
ThetaB = 2;
% alpha = 0.02; --> Value is not used
Ca = Cao*(1-X)/(1+(epsilon*X));
Cb = Cao*(ThetaB-(2*X))/(1+(epsilon*X));
ra = -k*Ca*Cb^2;
dXdW = -(ra/Fao);
dYfuncvecdW = dXdW;
end

その他の回答 (1 件)

Ameer Hamza
Ameer Hamza 2020 年 10 月 21 日

0 投票

How are you running this function? You need to pass input aguments to get an output
out = ODEfun(0, 1)

カテゴリ

タグ

質問済み:

2020 年 10 月 21 日

編集済み:

2020 年 10 月 21 日

Community Treasure Hunt

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

Start Hunting!

Translated by