# Maximize this function

For the following matrix

$$M = \begin{pmatrix} f1[x,y,z] & f2[x,y,z]\\ g1[x,y,z] & g2[x,y,z]\\ h1[x,y,z] & h2[x,y,z] \end{pmatrix}$$

with

f1[x_,y_,z_] := E^(-E^(2 Im[x]) Abs[y Sqrt[1 - z] + 0.1 Sqrt[z]]^2)
g1[x_,y_,z_] := E^(-E^(2 Im[x]) Abs[y Sqrt[1 - z] + 0.1 I Sqrt[z]]^2)
h1[x_,y_,z_] := E^(-E^(2 Im[x]) Abs[y Sqrt[1 - z] + Sqrt[z]]^2)

f2[x_,y_,z_] := E^(-E^(2 Im[x]) Abs[y Sqrt[1 - z]])
g2[x_,y_,z_] := E^(-E^(2 Im[x]) Abs[y Sqrt[1 - x]])
h2[x_,y_,z_] := E^(-E^(2 Im[x]) Abs[y Sqrt[1 - y]])


Now I want to optimise the value of:

P = f1[x,y,z] pos[1] + f2[x,y,z] pos[2]


where pos[j] returns the row corresponding to the highest value in column j . However, I don't know how to define pos[j]. I currently have

MWE

pos[1] = Position[{f1[x,y,z], g1[x,y,z], h1[x,y,z]]}, Max[f1[x,y,z], g1[x,y,z], h1[x,y,z]]]

pos[2] = Position[{f2[x,y,z], g2[x,y,z], h2[x,y,z]]}, Max[f2[x,y,z], g2[x,y,z], h2[x,y,z]]]

Poptimized = Maximize[P, {x, y, z}]

But this is not working. This is since pos[1] and pos[2] return empty lists. I thought that wrapping it inside the Maximize would have it evaluate. I want something structured as follows:

Maximize[f1[x,y,z] pos[1] + f2[x,y,z] pos[2],{x,y,z}]


where pos[1] and pos[2] both also depend on x,y,z and so need to be optimised too.

• Shouldn't you use f1[x_,y_,z_] := ...? Commented Dec 4, 2019 at 19:18
• Yes, that was a typo ...
– Sid
Commented Dec 4, 2019 at 19:20
• f2=g2=h2?.... Commented Dec 4, 2019 at 19:36
• Does ArgMax do what you want? Commented Dec 4, 2019 at 19:50
• $x\in Reals$ why do you need Im[x]=0 and so f1[x_,y_,z_] := E^(-E^(2 Im[x]) Abs[y Sqrt[1 - z] + 0.1 Sqrt[z]]^2)= f1[x_,y_,z_] := E^(-Abs[y Sqrt[1 - z] + 0.1 Sqrt[z]]^2) Commented Dec 4, 2019 at 20:00

Not a complete answer but try this. Since all function has the same max value, how do you decide which function you choose? Mathematica chose the last one.

M = {{-x - y^2 - 2 z , x - y^2 + 2 z },
{-x - y - z^2, x + 2 y + z^2},
{-x - y - z^3, 2 x - y + z}};


$$M=\left( \begin{array}{cc} -x-y^2-2 z & x-y^2+2 z \\ -x-y-z^2 & x+2 y+z^2 \\ -x-y-z^3 & 2 x-y+z \\ \end{array} \right)$$

pos1 = First@Ordering[MaxValue[#, {x, y, z}] & /@ M[[All, 1]], -1]
pos2 = First@Ordering[MaxValue[#, {x, y, z}] & /@ M[[All, 2]], -1]

P = NMaximize[M[[1,1]] pos1 + M[[1,2]] pos2,{x, y, z}]

• You are correct that each row has two columns. However, I am trying to find the maximum values in each column. Hence, for the above example, pos[1] looks for the row corresponding to the max value in column 1. That is pos[1]=Ordering[MaxValue[#, {x, y, z}] & /@ func, -1].
– Sid
Commented Dec 6, 2019 at 18:06
• I want to then determine the optimised value for P = f1[x,y,z] pos[1] + f2[x,y,z] pos[2], where f1[x,y,z] = x + y^2 + 2z and f2[x,y,z] = x + y + z^2. Can I use your above code inside the Maximize function?
– Sid
Commented Dec 6, 2019 at 18:12
• I want something structured as follows: Maximize[f1[x,y,z] pos[1] + f2[x,y,z] pos[2],{x,y,z}]. How can I define pos[j] such that it it takes performs the optimisation and returns the row position as described in the question?
– Sid
Commented Dec 6, 2019 at 18:43
• These functions are unbounded above f1[x,y,z] = x + y^2 + 2z and f2[x,y,z] = x + y + z^2 Can you edit the question with your real problem if it is not too complicated. Commented Dec 6, 2019 at 20:24
• The actual functions i'm using are very lengthy. However x, y, z are all finite. Can you describe how pos1 is defined please? It's correctly looking at column 1, but how is it looking for the MaxValue? (i.e. what values for x,y,z is it using to determine which is largest)
– Sid
Commented Dec 6, 2019 at 22:57