MATLAB: How to get the maximum value of an implicit function

implicitimplicit function

I have the following implicit function:
I-Ipv+Io.*exp(((V+Rs.*I)/(Vt.*a))-1)-(V+Rs.*I)/Rp = 0
where I and V are unknowns and everything else is known. From this equation, I am trying to acheive the maximum value of P where P = V*I. To acheive this, I wrote the following codes:
fun = @(V,I) I-Ipv+Io.*exp(((V+Rs.*I)/(Vt.*a))-1)-(V+Rs.*I)/Rp;
f = fimplicit(fun,[0,40,0,9])
voltage = f.XData;
current = f.YData;
power = voltage.*current
maximum_power = max(power)
I believe this method does not allow me to change the number of points in X, therefore the calculated maximum power is not as accurate.
I would appreciate any suggestion regarding calculating a maximum power.
Thank you.

Best Answer

If you have the otimization toolbox, then just formulate it as a nonlinear optimization. fmincon will be the correct tool. That is, minimize -V*I, subject to a nonlinear equality constraint, as you have written. So two variables, one equality constraint.