4
$\begingroup$

I have two functions: One of which outputs a number and the other outputs a picture. What I would like to do is create a single function that would output both the number and the picture.

As a MWE take the following:

Tri = Triangle[{{0, 0}, {0, 1}, {1, 0}}]
PictureTest[x_, y_, z_] := 
RegionPlot[x >= z*y && {x, y} ∈ Tri, {x, 0, 1}, {y, 0, 1}]
MinTest[x_, y_, z_] := Minimize[{x, x >= y + z && {x, y} ∈ Tri}, {x, y}]

I would like to create a new function NewFunc[x_,y_] that gives as an output both PictureTest[x,y,z] and MinTest[x,y,z]. (Or even better if it added some words and gave PictureTest[x,y,z] and "the minimum is MinTest[x,y,z].")

(This might seem silly given the specific functions above. But I'm working with more complicated functions and z is in fact many variables. So, in practice, I'd like to input "z" once and get the answer to both PictureTest and MinText. I imagine the answer is in the Mathematica documentation, but I don't quite know what I am looking for. I'm not even sure if I'm using the correct tags.)

$\endgroup$
5
$\begingroup$

Maybe something like:

ClearAll[pictureTest, minTest, newFunc]
pictureTest[z_] := RegionPlot[x >= z*y && {x, y} ∈ Tri, {x, 0, 1}, {y, 0, 1}]

minTest[z_] := Minimize[{x, x >= y + z && {x, y} ∈ Tri}, {x, y}]

You can use Through to get a list of results from applying a list of functions to a given input:

newFunc[z_] := Through[{pictureTest, minTest}@z]

newFunc[.5]

enter image description here

$\endgroup$
1
  • 2
    $\begingroup$ better? Through[Labeled[pictureTest, minTest]@z] $\endgroup$
    – Mr.Wizard
    Feb 15 '20 at 11:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.