# Errors in using multiple functions in matlab

1. May 12, 2012

Hi,

I have three functions

First one

function f_PR_W=newtonphasemolefraction1(W_PR, z,C,K_PR )
f_PR=0;
for c=1:C

f_PR_W=f_PR+z(c).*(1-K_PR(c))./(1+W_PR.*(K_PR(c)-1));
end

Another function

function fdot_PR_W=newtonphasemolefraction2(W_PR, z,C,K_PR )
fdot_PR=0;

for c=1:C
fdot_PR_W=fdot_PR+z(c).*(K_PR(c)-1).^2/(W_PR.*(K_PR(c)-1)+1).^2;

end

The third function

function [W_PR,err,k,f_PR_W]=newton1(newtonphasemolefraction1,newtonphasemolefraction2,W_PR,Tol_W_PR,Tol_f_PR,maxIter)

for k=1:maxIter
p1=W_PR-newtonphasemolefraction1(W_PR)/newtonphasemolefraction2(W_PR);
err=abs(p1-W_PR);
relerr=2*err/(abs(p1)+Tol_W_PR);
W_PR=p1;
f_PR_W=newtonphasemolefraction1(W_PR);
if (err<Tol_W_PR)|(relerr<Tol_W_PR)|(abs(f_PR_W)<Tol_f_PR),break,end
end

I call the three functions using

[W_PR,err,k,f_PR_W]=newton1(newtonphasemolefraction1,newtonphasemolefraction2,W_PR,Tol_W_PR,Tol_f_PR,maxIter)

"Error using newtonphasemolefraction1 (line 3)
Not enough input arguments."

And all input arguments were defined: K_PR=[0.01546,0.5,1.432],W_PR=0.25,Tol_W_PR=10^-6, Tol_f_PR=10^-10, maxIter=100, z=[0.1 0.3 0.6],C=3

Best regards,

2. May 13, 2012

### gsal

Well...I don't know matlab, so allow me to just indicate generic stuff that does not seem to be correct in your program.

First, you declare newtonphasemolefraction1(W_PR, z,C,K_PR ); that is, this function takes 4 arguments...yet, when you are using it inside of newton1, you call it with only 1 argument...it is line 3 within the function newton1, so maybe that is the error you are getting.

By the way, do you really need to pass the first two functions as arguments to the third one so that you can use them inside of it?...I doubt that very much, that is not the case for many other programming languages.

3. May 16, 2012

Gsal