FSOLVE was working until enclosed in a function - difficult for me to interpret error
    3 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
This section of code was working fine as part of my main live script but has stopped working since I put it into  now part of a function;
    Vbv = [(0:0.2:9) (9.2:0.2:9.8) (9.82:0.05:9.97) 10 (10.03:0.05:10.18) (10.2:0.2:10.8) (11:0.5:20)];
    options = optimset('Display','off','TolFun',1e-12,'TolX',1e-12);
    pHv0 = 2;
    for i = 1:numel(Vbv)
        fun_actual = @(x)fun(x,Ca1, Va, pKa1, Cb1, pKb) - Vbv(i);
        pHv(i) = fsolve(fun_actual,pHv0,options);
        pHv0 = pHv(i);
    end
Vbv is this function
function Vbv = fun(pHv, Ca, Va, pKa, Cb, pKb)
  Kw = 1*10^-14;
  Ka = 10^-pKa;
  Kb = 10^-pKb;
  H = 10^-pHv;
  Vbv = Va * ((Ca/(1+H/Ka) - H + Kw/H)/(Cb/(1+Kw/(H*Kb )) + H - Kw/H ));
end
Now that it is part of a function I am getting these errors which I am having difficulty interpreting

The script and associated data are attached - they should be in the same folder/location.  Any help will be highly appreciated.
0 Commenti
Risposta accettata
  Bora Eryilmaz
    
 il 22 Dic 2022
        
      Modificato: Bora Eryilmaz
    
 il 22 Dic 2022
  
      The variable pKb that you pass to the function is not initialized as global and assigned a value, so it is passed as [] to the function. This makes Kb to be empty as well. As a result the computation of Vbv fails.
Actually, on line 48 you have
pKb = 0.2;
It should be
global pKb
pKb = 0.2;
1 Commento
Più risposte (0)
Vedere anche
Categorie
				Scopri di più su Construct and Work with Object Arrays 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!


