0
$\begingroup$

I am trying to solve a system with 3 equations 3 unknowns. I write this following code

Solve[{Subscript[\[Phi], 1]/Subscript[c, o] - Subscript[a, 1] - Subscript[z, o]/(
y - Subscript[n, j] Subscript[c, j] - Subscript[n, o] Subscript[c, o] - Subscript[n, u] Subscript[c, u]) == 0, Subscript[\[Phi], 1]/Subscript[c, u] - Subscript[a, 2] - Subscript[z, u]/(y - Subscript[n, j] Subscript[c, j] - Subscript[n, o] Subscript[c, o] - Subscript[n, u] Subscript[c, u]) == 0, Subscript[\[Phi], 1]/Subscript[c, j] - Subscript[a, 3] - Subscript[z, j]/(y - Subscript[n, j] Subscript[c, j] - Subscript[n, o] Subscript[c, o] - Subscript[n, u] Subscript[c, u]) == 0}, {Subscript[c, o], Subscript[c,u], Subscript[c, j]}]

The code just turns and gives nothing. What can I do to solve this system? Thanks in advance.

$\endgroup$
5
$\begingroup$

Without subscripts Mathematica(v12, Windows 10) solves

Solve[{ \[Phi]1 /co - a1 - zo /(y - nj cj - no co - nu cu) ==0, \[Phi]1/cu - a2 - zu/(y - nj cj - no co - nu cu) ==0, \[Phi]1/cj - a3 - zj/(y - nj cj - no co - nu cu) == 0}, {co,cu,cj}]

the equation in 36s !

$\endgroup$
5
$\begingroup$
Clear["Global`*"]

As a general rule avoid using subscripts (or superscripts) for anything other than display. You can use indexed variables that are displayed as subscripts.

Format[a[s_]] := Subscript[a, s];
Format[c[s_]] := Subscript[c, s];
Format[n[s_]] := Subscript[n, s]; Format[z[s_]] := Subscript[z, s];
Format[ϕ[1]] = Subscript[ϕ, 1];

eqns = {-a[1] - z[o]/(y - c[j]*n[j] - 
             c[o]*n[o] - c[u]*n[u]) + ϕ[1]/c[o] == 0,  
    -a[2] - z[u]/(y - c[j]*n[j] - 
             c[o]*n[o] - c[u]*n[u]) + ϕ[1]/c[u] == 0, 
    -a[3] - z[j]/(y - c[j]*n[j] - 
             c[o]*n[o] - c[u]*n[u]) + ϕ[1]/c[j] == 0}

enter image description here

$Assumptions = {c[o] != 0, c[u] != 0, c[j] != 0,  
   (y - c[j]*n[j] - c[o]*n[o] - c[u]*n[u]) != 0};

sol = Solve[Join[eqns, $Assumptions], {c[o], c[u], c[j]}];

There are four solutions

Length@sol

(* 4 *)

Each solution is extremely complicated

LeafCount /@ sol

(* {2356900, 2356900, 2356900, 2356900} *)

EDIT: As suggested by Daniel Lichtblau in a comment, using Quartics -> False gives simpler forms using Root expressions

sol2 = Solve[Join[eqns, $Assumptions], {c[o], c[u], c[j]}, 
  Quartics -> False];

LeafCount /@ sol2

(* {57308, 57308, 57308, 57308} *)
$\endgroup$
2
  • 1
    $\begingroup$ I think if you add Quartics->False the solutions become much smaller, expressed in terms of Root functions. $\endgroup$ – Daniel Lichtblau Oct 13 '20 at 16:34
  • $\begingroup$ @DanielLichtblau - Thanks. Updated. $\endgroup$ – Bob Hanlon Oct 13 '20 at 17:04

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.