How to get the maximum value of an implicit function?

19 visualizaciones (últimos 30 días)
Eungkyun Kim
Eungkyun Kim el 4 de Feb. de 2020
Comentada: Matt J el 5 de Feb. de 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.

Respuesta aceptada

John D'Errico
John D'Errico el 4 de Feb. de 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 comentarios
Eungkyun Kim
Eungkyun Kim el 5 de Feb. de 2020
I think I got it actually. Thanks.
Matt J
Matt J el 5 de Feb. de 2020
If John's advice worked for you, please Accept-click his answer.

Iniciar sesión para comentar.

Más respuestas (1)

Matt J
Matt J el 5 de Feb. de 2020
Editada: Matt J el 5 de Feb. de 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.

Categorías

Más información sobre Get Started with Optimization Toolbox en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by