"Neeta " <neeta.khare@villanova.edu> wrote in message <i9q2lh$8ag$1@fred.mathworks.com>...
> I am stuck in the problem while working on matlab and looking for help.
>
> I am using an equation as below and wonder if Matlab can solve this with out simulink..
>
> I=((Isc*G)/1000) Io*(exp(38.9*(V+I*Rs))1)((V+I*Rs)/Rsh)
> Where all the other parameters are constant except ‘I’
> So the equation is a kind of
> X=Function of (X) ….
> Can we solve these equations with matlab without using simulink modeling where, of course, we can used feedback connections in the model.
        
This problem can be transformed so that it can be solved in terms of the Lambert W function. By collecting terms appropriately your equation can be expressed in the form
A*I + B = C*exp(D*I+E)
where A, B, C, D, and E are known. Then go through the following manipulations.
(A*I+B)*exp(D*I) = C*exp(E)
(D*IB*D/A)*exp(D*I) = C*D/A*exp(E)
(D*IB*D/A)*exp(D*IB*D/A) = C*D/A*exp(EB*D/A)
If the substitution W = D*IB*D/A and Z = C*D/A*exp(EB*D/A) is made, this last equation becomes
W*exp(W) = Z
which is the form of the Lambert W function. Since you know Z you can find W with this function. Then from W you can find I.
This function is in the Symbolic Toolbox and is called 'lambertw'. Note that for some real values of Z there are two real roots to the equation, for some there is one, and for others there are no real roots. The different roots can be obtained with the use of the Kth branch argument which as I recall should either be 0 or 1 for real roots. (Other branch values pertain to complex roots which I assume you are not trying to find.)
Roger Stafford
