MATLAB Answers

How to get the maximum value of an implicit function?

8 views (last 30 days)
Eungkyun Kim
Eungkyun Kim on 4 Feb 2020
Commented: Matt J on 5 Feb 2020
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.

  0 Comments

Sign in to comment.

Accepted Answer

John D'Errico
John D'Errico on 4 Feb 2020
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.

  3 Comments

Eungkyun Kim
Eungkyun Kim on 5 Feb 2020
Thanks. Do you mind elaborating on how to use fmincon to find the maximum value of V*I?
Matt J
Matt J on 5 Feb 2020
If John's advice worked for you, please Accept-click his answer.

Sign in to comment.

More Answers (1)

Matt J
Matt J on 5 Feb 2020
Edited: Matt J on 5 Feb 2020
I believe this method does not allow me to change the number of points in X,
It does, e.g.,
f = fimplicit(fun,[0,40,0,9],'MeshDensity',1000)
If it were me, though, I would probably use this method to initialize fmincon, as recommended by John.

  1 Comment

Sign in to comment.

Sign in to answer this question.