Ode Not enough input arguments.
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
EldaEbrithil
il 7 Ott 2020
Commentato: EldaEbrithil
il 7 Ott 2020
Hi all
i have this code
clear all;
close all;
clc;
xstartconica=9.923425547086419e-04;
xfineconica=0.006023740592755;
Ralfa_end=0.030973382509232;
Rbeta_end=0.005317248451592;
alfa_end_rad=0.191986217719376;
beta_end_rad=0.645771823237902;
xc_end=0.004812528236661;
yc_end=0.007521773875673;
Lnozzle_end=0.029788357160958;
raggio_end=0.006347773875673;
Nn=10^-5;
f3_variation=4e-3:2e-4:5e-3;
f2_variation=1e-1:2e-2:5e-1;
f1_variation=1e-1:1e-2:5e-1;
Ptend_conv=[147245.424239257,147234.962409348,147224.499805318,147214.036426991,147203.572274194,147193.107346753,147182.641644491,147172.175167235,147161.707914810,147151.239887040,147140.771083752,147130.301504769,147119.831149918,147109.360019022,147098.888111906,147088.415428396,147077.941968316,147067.467731491,147056.992717745,147046.516926902,147036.040358788,147025.563013225,147015.084890040,147004.605989055,146994.126310095,146983.645852985,146973.164617547,146962.682603606,146952.199810987,146941.716239512,146931.231889005,146920.746759291,146910.260850192,146899.774161532,146889.286693136,146878.798444825,146868.309416424,146857.819607755,146847.329018643,146836.837648909,146826.345498378];
Mend_conv=[0.140750461243504,0.140760731075046,0.140771003185311,0.140781277575151,0.140791554245414,0.140801833196952,0.140812114430615,0.140822397947255,0.140832683747724,0.140842971832875,0.140853262203559,0.140863554860630,0.140873849804943,0.140884147037350,0.140894446558707,0.140904748369869,0.140915052471691,0.140925358865029,0.140935667550740,0.140945978529680,0.140956291802707,0.140966607370678,0.140976925234451,0.140987245394886,0.140997567852842,0.141007892609177,0.141018219664752,0.141028549020427,0.141038880677064,0.141049214635523,0.141059550896667,0.141069889461358,0.141080230330458,0.141090573504830,0.141100918985339,0.141111266772849,0.141121616868223,0.141131969272327,0.141142323986026,0.141152681010187,0.141163040345676];
for m=1:41
for f_d=1:length(f2_variation)
Ynozzle02(m)={[Ptend_conv(m),Mend_conv(m)]};
Dall_nozzle2 ={[xstartconica:Nn:xfineconica]};
f2_cell(f_d)={f2_variation(f_d)};
end
end
opt=odeset('NormControl','Refine','Stats','MaxStep');
for iDom_nozzle2 = 1:numel(Dall_nozzle2)
xRangenozzle2 = Dall_nozzle2{iDom_nozzle2};
for iInitial_nozzle2 = 1:numel(Ynozzle02)
for fF_2=1:numel(f2_cell)
f2= f2_cell{fF_2};
[xSolnozzle2{iDom_nozzle2,iInitial_nozzle2,fF_2},YSolnozzle2{iDom_nozzle2,iInitial_nozzle2,fF_2}]=ode23(@(x,Ynozzle)nozzlesinglebobbgola(x,Ynozzle, ...
xstartconica,xfineconica,Ralfa_end,Rbeta_end,alfa_end_rad,beta_end_rad,xc_end,yc_end,Lnozzle_end,raggio_end,f2),xRangenozzle2,Ynozzle02{iInitial_nozzle2},...
opt);
end
end
end
related to this function
function dYnozzledx=nozzlesinglebobbgola(x,Ynozzle,xstartconica,xfineconica,Ralfa_end,Rbeta_end,alfa_end_rad,beta_end_rad,xc_end,yc_end,Lnozzle_end,raggio_end,f3,f2,f1)
gamma=1.667;
Pt_nozzle=Ynozzle(1);
M_nozzle=Ynozzle(2);
Anozzle= pi*(yc_end-sqrt(raggio_end^2-(x-xc_end)^2))^2;
Perimetro= 2*pi*(yc_end-sqrt(raggio_end^2-(x-xc_end)^2));
dA_nozzledx=(2*pi*(x-xc_end)/(sqrt(raggio_end^2-(x-xc_end)^2)))*(yc_end-sqrt(raggio_end^2-(x-xc_end)^2));
dPt_nozzledx=-Pt_nozzle*((gamma*(M_nozzle^2))/2)*f2*(Perimetro/Anozzle);
dM_nozzledx=M_nozzle*((-(1+((gamma-1)/2)*M_nozzle^2)/(1-M_nozzle^2))*(dA_nozzledx/Anozzle)+...
((1+((gamma-1)/2)*M_nozzle^2)/(1-M_nozzle^2))*(gamma*(M_nozzle^2)*f2*Perimetro/(2*Anozzle)));
dYnozzledx=[dPt_nozzledx;dM_nozzledx];
end
i don't know why i obtain the error:Not enough input arguments...Any help?
Thank you very much
Regards
2 Commenti
Stephen23
il 7 Ott 2020
Modificato: Stephen23
il 7 Ott 2020
Those function calls would be much simpler if you just put all of the parameters into a scalar structure and passed that. That number of positional input arguments makes it highly likely that you mave missed one or two, or got them in the wrong order.
In any case, please show us the exact error message. This means all of the red text.
Risposta accettata
Stephen23
il 7 Ott 2020
Modificato: Stephen23
il 7 Ott 2020
As the error states, you are not calling the function nozzlesinglebobbgola with enough input arguments:
nozzlesinglebobbgola(x, Ynozzle, xstartconica,xfineconica,Ralfa_end,Rbeta_end,alfa_end_rad,beta_end_rad,xc_end,yc_end,Lnozzle_end,raggio_end,f2) % how you call it
nozzlesinglebobbgola(x, Ynozzle, xstartconica,xfineconica,Ralfa_end,Rbeta_end,alfa_end_rad,beta_end_rad,xc_end,yc_end,Lnozzle_end,raggio_end,f3,f2,f1) % how you defined it
Or with the intermediate variables removed for clarity:
nozzlesinglebobbgola(x, Ynozzle, .. ,raggio_end,f2) % how you call it
nozzlesinglebobbgola(x, Ynozzle, .. ,raggio_end,f3,f2,f1) % how you defined it
Using so many positional input arguments is buggy (e.g. like this question) and makes the code very difficult to understand. Avoid doing this. I strongly recommend that you do either of these:
- put all of those parameters into one scalar structure and pass that.
- use a nested function, then you don't need those input arguments at all (nor the anonymous function).
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Ordinary Differential Equations in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!