I call a "pseudo-linear", homogeneous system with m equations positively representable, if it has m terms that are sums with positive coefficients of the others. A class with precisely one "different" sign in each equation is trivially positively representable. The example below is not trivially positively representable
Thread[{\[Lambda] + r \[Gamma]1 - s \[Mu] - \[Beta][s, i] - s \[Gamma]s, -\[Gamma][i, r] - i \[Mu]i + \[Beta][s, i] + \[Beta]1[s, i], \[Gamma][i, r] - \[Beta]1[s, i] - r \[Gamma]1 - r \[Mu] + s \[Gamma]s}==0] even after setting \[Gamma]s=0 . However, in this case, it can be transformed to a trivial example, by replacing the first equation with the sum of all equations, and the second by the sum of the second and third.
Now the system has the property mentioned in the title, when \[Gamma]s=0:
(*Define the eight column matrix S and vector of fluxes*) S = {{1, -1, 0, 0, 1, -1, 0, 0}, {0, 1, 1, -1, 0, 0, -1, 0}, {0, 0, -1, 1, -1, 0, 0, -1}}; rv = {\[Lambda], \[Beta][s, i], \[Beta]1[s, i], \[Gamma][i, r], r \[Gamma]1, s \[Mu], i \[Mu]i, r \[Mu]}; RHS = S . rv; Print["RHS = ", RHS // MatrixForm, " has matrix S= ", S // MatrixForm, " and variables", Variables[RHS]] soR = Solve[ Thread[RHS == 0], {\[Lambda], \[Beta][s, i], \[Gamma][i, r]}] // Flatten // FullSimplify; soR // MatrixForm After adding back the parameter \[Gamma]s, the previous solution loses the positive representability property:
(*Define the extended matrix S and vector of fluxes*) S = {{1, -1, 0, 0, 1, -1, -1, 0, 0}, {0, 1, 1, -1, 0, 0, 0, -1, 0}, {0, 0, -1, 1, -1, 1, 0, 0, -1}}; rv = {\[Lambda], \[Beta][s, i], \[Beta]1[s, i], \[Gamma][i, r], r \[Gamma]1, s \[Gamma]s, s \[Mu], i \[Mu]i, r \[Mu]}; RHS = S . rv; Print["RHS = ", RHS // MatrixForm, " has matrix S= ", S // MatrixForm, " and variables", Variables[RHS]] soR = Solve[ Thread[RHS == 0], {\[Lambda], \[Beta][s, i], \[Gamma][i, r]}] // Flatten // FullSimplify; soR // MatrixForm I would like now to loop over all the possible choices of three variables to check the existence of one with positivity representation property, when [Gamma]s>0.
This should start with something like
(Solve[Thread[RHS == 0], #] &) @@ Subsets[rv, {3}] but the right syntax eludes me for now.
Besides the question of how to program this check, there is also a theoretical question: whether this property has an official name, and whether it can be formulated as some convexity problem.
rvdoes not consists solely of variables. Some elements are products of variables. Do you want the products treated as if they were single variables or rather split into the separate variables? $\endgroup$