# Solving a system of differential-algebraic equations

I am trying to solve a coupled system of differential-algebraic equations as follows.

First define a list of 6 equations

eqn = {f2[1, 1][t] f2[2, 1][t] == 0, f2[1, 2][t] f2[2, 2][t] == 0,
f2[1, 2][t] f2[2, 1][t] - μ[1, 2][t] == 0, -1 + f2[1, 1][t] f2[2, 2][t] + μ[1, 2][t] == 0, -Derivative[μ][t] == 0,
f2[1, 2][t] f2[2, 1][t] - f2[1, 1][t] f2[2, 2][t] + f2[1, 2][t] Derivative[f2[2, 1]][t] -
f2[1, 1][t] Derivative[f2[2, 2]][t] - Derivative[μ[1, 2]][t] == 0}


Then list the 6 unknown functions

vars = Union[Flatten@ Array[f2[#1, #2][t] &, {2, 2}], {μ[t], μ[1, 2][t]}]


Naive use of DSolve seems futile as the following flags an error

DSolve[Union[eqn,vars /. a_[b__][t] -> a[b] == c[a[b]]], vars, t]


where I am setting the initial values to be some arbitrary constants of the form c[_].

Reduce does help but it treates the derivatives as being independent functions and is not able to simplify as much as it could.

Reduce[eqn, vars]

(*(Derivative[\[Mu]][t] == 0 && f2[1, 1][t] == 0 && Derivative[f2[2, 1]][t] != 0 &&
f2[1, 2][t] == (-1 + Derivative[\[Mu][1, 2]][t])/Derivative[f2[2, 1]][t] && f2[1, 2][t] != 0 &&
f2[2, 1][t] == 1/f2[1, 2][t] && f2[2, 2][t] == 0 && \[Mu][1, 2][t] == 1) ||
(Derivative[\[Mu]][t] == 0 && Derivative[f2[2, 2]][t] != 0 &&
f2[1, 1][t] == (-1 - Derivative[\[Mu][1, 2]][t])/Derivative[f2[2, 2]][t] && f2[1, 2][t] == 0 && f2[2, 1][t] == 0 &&
f2[1, 1][t] != 0 && f2[2, 2][t] == 1/f2[1, 1][t] && \[Mu][1, 2][t] == 0) ||
(Derivative[\[Mu][1, 2]][t] == -1 && Derivative[\[Mu]][t] == 0 && Derivative[f2[2, 2]][t] == 0 && f2[1, 2][t] == 0 &&
f2[2, 1][t] == 0 && f2[1, 1][t] != 0 && f2[2, 2][t] == 1/f2[1, 1][t] && \[Mu][1, 2][t] == 0) ||
(Derivative[\[Mu][1, 2]][t] == 1 && Derivative[\[Mu]][t] == 0 && Derivative[f2[2, 1]][t] == 0 && f2[1, 1][t] == 0 &&
f2[1, 2][t] != 0 && f2[2, 1][t] == 1/f2[1, 2][t] && f2[2, 2][t] == 0 && \[Mu][1, 2][t] == 1)*)


There are a lot of simplifications it can still do, once it understands that the derivative functions are not independent. How can I make mathematica completely solve this system? (note: this system has very simple solutions I can get by hand, using this as a sample example for applying to more complicated systems)

Any help will be appreciated.

• Initial conditions are missing. Nov 28, 2021 at 19:44
• @DanielHuber adding arbitrary initial conditions gives errors Nov 28, 2021 at 20:00

The fifth equation is not coupled to any of the others, so we have that $$\mu_{0}(t)=c$$, a constant.

Consider the expression $$\mu_{12}(1-\mu_{12})$$. Use the first four equations to obtain

asmptns = {f11*f21 == 0,
f12*f22 == 0,
f12*f21 - μ12 == 0,
-1 + f11*f22 + μ12 == 0};
Simplify[μ12 (1 - μ12), asmptns]   (*  0  *)


So, if the first 4 equations hold, we must have $$\mu_{12}(1-\mu_{12})=0$$ for all values of $$t$$ (in some domain). For the derivative $$\dot{\mu}_{12}$$ to exist, we must have have $$\dot{\mu}_{12}=0$$, which eliminates one derivative from the 6th equation.

That leaves four AEs, in which $$\mu_{12}$$ is either 0 or 1 and one DE containing derivatives of 2 functions. We can make progress by (A) picking one of the functions $$f_{11}$$, etc, at a time, (B) assuming it is either zero or not zero, and (C) using Reduce to see where that assumption, along with $$\mu_{12}=0 \text{ or} 1$$, leads. We use an abbreviated notation for the 4 functions and the 2 derivatives. We use Tuples to determine the 16 different combinations of assumptions.

eqns = Append[asmptns, f12 f21 - f11 f22 + f12 Df21 - f11 Df22 == 0];
vars = {Df21, Df22};
bsmptns = Tuples[{{μ12 == 0, μ12 == 1},
{f11 == 0, f12 == 0, f21 == 0, f22 == 0,
f11 != 0, f12 != 0, f21 != 0, f22 != 0}}];

DeleteDuplicates@DeleteCases[Table[
Reduce[Flatten[{eqns, case}], vars], {case, bsmptns}],
False]


The result is one possible solution for $$\mu_{12}=0$$ and another for $$\mu_{12}=1$$.

(*  {  μ12 == 0 && f21 == 0 && f12 == 0 && f22 != 0 && f11 == 1/f22 &&
Df22 == -f22,

μ12 == 1 && f22 == 0 && f21 != 0 && f12 == 1/f21 &&
f11 == 0 && Df21 == -f21  }  *)