Arithmetic to ensure positives
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hello all:
I am looking for a simple logic to ensure 'positive' for multiple variables. In pseudo code terms want to replace
if {(a-b>=0).and.(c-d>=0).and.(e-f>=0) then...}
without the use of boolean 'and' or special functions like max. Pure arithmetic will be much helpful.
My inspiration is
(a-b)^2 + (c-d)^2 + (e-f)^2 = 0
which uniquely ensures/enforces eqalities, a=b, c=d, e=f.
Any parallels.
Much appreciated.
Regards.
0 Commenti
Risposte (2)
Walter Roberson
il 27 Dic 2015
This is not possible to do without at least one comparison, and comparisons are not pure arithmetic. Your inspiration (a-b)^2 + (c-d)^2 + (e-f)^2 = 0 involves a comparison and so is not pure arithmetic.
5 Commenti
Walter Roberson
il 27 Dic 2015
When you say that your optimization scheme is very fragile, are you talking about attempting to code constraints in a manner that is differentiable?
Walter Roberson
il 4 Gen 2016
(a-b)^2 + (c-d)^2 + (e-f)^2 = 0 is differentiable only because it is smoothly invertible, that it can be translated into a series of variable reductions. Inequalities cannot be inverted that way. You cannot even code a > 0 invertibly -- if you could then c>=d could be coded as (c-d)^2 - delta_c = 0 together with however you coded delta_c > 0.
Unless, that is, you are okay with coding Heaviside functions, in which delta_c > 0 translates to Heaviside(delta_c) - 1 = 0 after having defined Heaviside(0) as 0 (Heaviside(0) does not have a fixed value, not really; one of the common conventions says Heaviside(0) = 1/2).
But diff(Heaviside(delta_c),delta_c) is Dirac(delta_c) and that is considered a distribution rather than a particular value, definitely not continuously differentiable. I would not consider it suitable for the use in this situation, but perhaps the theory of GRG is more flexible than I am.
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!