# Overdetermined System of PDEs

EDIT: Just to clarify a large part of my question is whether there is a way to make Mathematica solve a system with more equations than independent variables (so a system that is overdetermined but has redundancies in it).

I'm trying to solve a system of PDEs which -should- have a solution however Mathematica tells me the system is overdetermined and so won't solve it. My initial system is:

eq1 = D[D[eta[u, x, t], t], t] ==
c^2*D[D[eta[u, x, t], x], x] - keta[u, x, t];
eq2 = -D[D[xi[u, x, t], t], t] ==
c^2(2*D[D[eta[u, x, t], x], u] - D[D[xi[u, x, t], x], x]);
eq3 = 2*D[D[eta[u, x, t], t], u] - D[D[tau[u, x, t], t], t] == -c^2*
D[D[tau[u, x, t], x], x];
eq4 = -2*D[D[xi[u, x, t], t], u] == -2*c^2*D[D[tau[u, x, t], x], u];
eq5 = -2*D[xi[u, x, t], t] == -2*c^2*D[tau[u, x, t], x];
eq6 = (D[eta[u, x, t], u] - 2*D[tau[u, x, t], t])c^2 ==
c^2(D[eta[u, x, t], u] - 2*D[xi[u, x, t], x]);
eq7 = -c^2*D[xi[u, x, t], u] == -3*c^2*D[xi[u, x, t], u];
eq8 = -3*c^2*D[tau[u, x, t], u] == -c^2*D[tau[u, x, t], u];
eq9 = D[D[eta[u, x, t], u], u] - 2*D[D[tau[u, x, t], t], u] == 0;
eq10 = -D[D[xi[u, x, t], u], u] == 0;
eq11 = -D[D[tau[u, x, t], u], u] == 0;
eq12 = -2*D[xi[u, x, t], u] == 0;
eq13 = -k*(D[eta[u, x, t], u] - 2*D[tau[u, x, t], t]) == 0;
eq14 = k*D[xi[u, x, t], u] == 0;
eq15 = 3*kD[tau[u, x, t], u] == 0;
eq16 = c^2(D[D[eta[u, x, t], u], u] - 2*D[D[xi[u, x, t], x], u]) == 0;
eq17 = -c^2*D[D[xi[u, x, t], u], u] == 0;
eq18 = -c^2*D[D[tau[u, x, t], u], u] == 0;
eq19 = -2*c^2*D[tau[u, x, t], u] == 0;
DSolve[{eq1, eq2, eq3, eq4, eq5, eq6, eq7, eq8, eq9, eq10, eq11, eq12,
eq13, eq14, eq15, eq16, eq17, eq18, eq19}, {xi[u, x, t],
tau[u, x, t], eta[u, x, t]}, {u, x, t}] 

I then eliminated a lot of the redundant equations and tried to combine them in various ways and could get them down to 7 or 9 (here's an example of such an attempt):

eq1 = D[eta[u, x, t], u] == 2*D[tau[u, x, t], t];
eq2 = D[eta[u, x, t], u] == 2*D[xi[u, x, t], x];
eq3 = D[xi[u, x, t], t] == c^2*D[tau[u, x, t], x];
eq4 = 3*D[D[tau[u, x, t], t], t] == -c^2*D[D[tau[u, x, t], x], x];
eq5 = -D[D[xi[u, x, t], t], t] ==
c^2*(4*D[D[tau[u, x, t], x], t] - D[D[xi[u, x, t], x], x]);
eq6 = D[D[eta[u, x, t], t], t] ==
c^2*D[D[eta[u, x, t], x], x] - k*eta[u, x, t];
eq7 = D[xi[u, x, t], u] == 0;
eq8 = D[tau[u, x, t], u] == 0;
DSolve[{eq1, eq2, eq3, eq4, eq5, eq6, eq7, eq8}, {tau[u, x, t],
xi[u, x, t], eta[u, x, t]}, {u, x, t}] 

Same issue again. I'm new to Mathematica so I wanted to check a) is this an issue with my system or the way I'm trying to use Mathematica to solve it? b) If it's the latter is the another way I can go about this? I've looked at my former working to see if the system is correct and haven't found any real errors that has affected the result so thought I would ask here. Thank you!

• I'm voting to close this question as off-topic because because the issue it raises is not a Mathematica issue but a mathematics one. That it is formulated in terms of Mathematica is not sufficient to make it an appropriate question for Mathematica.SE. – m_goldberg Feb 21 '15 at 1:26
• My question relating to Mathematica is more if it is possible to have it solve them such that it can identify any further redundancies rather than not solving when it notes the number of equations and independent variables. – AXidenT Feb 21 '15 at 7:07
• I no longer than convinced that this question should be closed. For that reason, I deleted my Close vote and my comment to that effect. – bbgodfrey Feb 21 '15 at 14:37
• I'll edit my original question to make that bit a bit clearer, sorry! – AXidenT Feb 21 '15 at 15:39
• Just a pet peeve: I wish folks would put semicolons at the end of input lines whose output is irrelevant. Code that produces a page of output cells that separate the important output from the relevant input discourages me from looking into the question. It's not a big deal, since it makes little difference to me if I skip a question, and there are probably others who won't turned off by it. -- You could try Reduce on your system. There's a slight chance it would reveal something. – Michael E2 Feb 21 '15 at 21:16

This Answer provides a symbolic solution to the set of eight partial differential equations listed in the Question. As noted by the OP, DSolve cannot find a solution to these PDEs. Indeed, it cannot find a solution to the pair {eq4, eq8} without assistance.

To begin, {eq1, eq2} are combined to obtain a new eq2 similar in form to eq3.

eq2 = Solve[{eq1, eq2}, {D[tau[u, x, t], t], D[eta[u, x, t], u]}][[1, 1]] /. Rule -> Equal
(* Derivative[0, 0, 1][tau][u, x, t] == Derivative[0, 1, 0][xi][u, x, t] *)


Next, eliminate tau from eq5 to obtain a new eq5 similar in form to eq4

Solve[D[eq2, x], D[D[tau[u, x, t], x], t]][[1, 1]]
eq5 = eq5 /. %
(* Derivative[0, 1, 1][tau][u, x, t] -> Derivative[0, 2, 0][xi][u, x, t] *)
(* -Derivative[0, 0, 2][xi][u, x, t] == 3*c^2*Derivative[0, 2, 0][xi][u, x, t] *)


Although eq4 now can be solved by

DSolve[eq4, tau[u, x, t], {u, x, t}]


and a similar formula for eq5, it is more efficient to enforce consistency among {eq2, eq3, eq4, eq5} first.

stau = Solve[eq4 /. Solve[{D[eq2, t], D[eq3, x]}, {D[tau[u, x, t], t, t],
D[xi[u, x, t], x, t]}][[1, 1]], D[tau[u, x, t], x, x]][[1, 1]];
eq4a = Simplify[eq4 /. stau]
eq4b = stau /. Rule -> Equal
(* Derivative[0, 0, 2][tau][u, x, t] == 0 *)
(* Derivative[0, 2, 0][tau][u, x, t] == 0 *)


(Note that Solve implicitly assumes c != 0.) tau now can be obtained by applying DSolve successively to eq8 and the two equations just obtain, or by inspection. xi can be obtained similarly.

tau[u, x, t] = tau00 + tau10 x + tau01 t + tau11 x t
xi[u, x, t] = xi00 + xi10 x + xi01 t + xi11 x t


Inserting these expressions into eq2 and eq3 yields

D[xi[u, x, t], x] == D[tau[u, x, t], t]
D[xi[u, x, t], t] == c^2*D[tau[u, x, t], x]
(* xi10 + t*xi11 == tau01 + tau11*x *)
(* xi01 + x*xi11 == c^2*(tau10 + t*tau11) *)


Thus, for consistency,

{tau11 -> 0, xi11 -> 0, xi01 -> c^2 tau10, xi10 -> tau01}


Applying this List of Rules to tau and xi yields

tau[u, x, t] = tau00 + t tau01 + tau10 x
xi[u, x, t] = c^2 t tau10 + tau01 x + xi00


Next, eq1 is evaluated using the expression for tau just obtained and then substituted into eq6.

(DSolve[D[eta[u, x, t], u] == 2*D[tau[u, x, t], t], eta[u, x, t], {u, x, t}] /. C[1] -> eta0)
[[1, 1]]
Unevaluated[D[D[eta[u, x, t], t], t] == c^2*D[D[eta[u, x, t], x], x] - k*eta[u, x, t]] /. %
(* eta[u, x, t] -> 2*tau01*u + eta0[x, t] *)
(* Derivative[0, 2][eta0][x, t] == -(k*(2*tau01*u + eta0[x, t])) +
c^2*Derivative[2, 0][eta0][x, t] *)


Because u appears in the preceding equation only in one place, tau01 must vanish (except in the special case k = 0). Hence, tau and xi further simply to

tau[u, x, t] = tau00 + tau10 x
xi[u, x, t] = c^2 t tau10 + xi00


and eq6 becomes

Derivative[0, 2][eta0][x, t] == -(k*eta0[x, t]) + c^2*Derivative[2, 0][eta0][x, t]


Although DSolve cannot solve this equation without help, it can be solved analytically without difficulty using separation of variables. One such solution is Exp[mx x + mt c t].

Simplify[Unevaluated[D[D[eta[u, x, t], t], t] == c^2*D[D[eta[u, x, t], x], x] - k*eta[u, x, t]] /.
eta[u, x, t] -> Exp[mx x + mt c t]]
(* E^(c*mt*t + mx*x)*(k + c^2*(mt^2 - mx^2)) == 0 *)


Thus, appropriate choices of mt and mx indeed provide valid expressions for eta. Trigonometric and hyperbolic functions with the same argument also work.

Although the special cases, c = 0 and k = 0, have not been addressed, they could be without much difficulty.

In summary, the system of 8 PDEs in the Question does not constitute an overconstrained problem, although eq1, eq3 and the transformed eq2 do limit the allowed forms of the solutions. And, DSolve struggles with even subsets of the equations.

• Just a note: "appropriate choices of mt and mx" are those which satisfy k + c^2 mt^2 == c^2 mx^2. (Found by back-substituting your solutions into the original list of equations.) – 2012rcampion Feb 23 '15 at 3:41
• @2012rcampion See the final expression in the Answer, (k + c^2*(mt^2 - mx^2)) == 0. But, thanks for taking the time to review my answer in some detail. – bbgodfrey Feb 23 '15 at 3:50
• Are mx and mt functions of x and t respectively which satisfy the expression mentioned above? This is interesting though, thank you very much! Indicates my initial set of equations was correct then... – AXidenT Feb 23 '15 at 11:53
• @AXidenT No, mx and mt are constants. Glad to be of help. – bbgodfrey Feb 23 '15 at 14:26

Right away, I see a whole bunch of equations that are simply derivatives equal to zero. Let's take a look at those (I put your equations into a list, eqns):

Union[Simplify[Cases[eqns, _ Derivative[__][_][__] == 0], c != 0 && k != 0]]


$$\xi ^{(1,0,0)}(u,x,t)=0 \\ \tau ^{(1,0,0)}(u,x,t)=0 \\ \xi ^{(2,0,0)}(u,x,t)=0 \\ \tau ^{(2,0,0)}(u,x,t)=0$$

We can now immediately see that ξ and τ must be constants with respect to u. I'll replace them with new functions that do not depend on u:

eqns = DeleteCases[
Simplify[eqns /. {f : (ξ | τ) :>
Function[{u, x, t}, f[x, t]]}, c != 0 && k != 0], True]


$$k \eta (u,x,t)+\eta ^{(0,0,2)}(u,x,t)=c^2 \eta ^{(0,2,0)}(u,x,t) \\ \xi ^{(0,2)}(x,t)=c^2 \left(\xi ^{(2,0)}(x,t)-2 \eta ^{(1,1,0)}(u,x,t)\right) \\ \tau ^{(0,2)}(x,t)=c^2 \tau ^{(2,0)}(x,t)+2 \eta ^{(1,0,1)}(u,x,t) \\ \xi ^{(0,1)}(x,t)=c^2 \tau ^{(1,0)}(x,t) \\ \tau ^{(0,1)}(x,t)=\xi ^{(1,0)}(x,t) \\ \eta ^{(2,0,0)}(u,x,t)=0 \\ 2 \tau ^{(0,1)}(x,t)=\eta ^{(1,0,0)}(u,x,t) \\ \eta ^{(2,0,0)}(u,x,t)=0 \\$$

Now we can easily see that η is linear in u, leading to another substitution:

eqns = DeleteCases[
Simplify[eqns /. {η :>
Function[{u, x, t}, (a1 u + a0) η[x, t]]},
c != 0 && k != 0 && a1 u + a0 != 0], True]


$$k \eta (x,t)+\eta ^{(0,2)}(x,t)=c^2 \eta ^{(2,0)}(x,t) \\ \xi ^{(0,2)}(x,t)=c^2 \left(\xi ^{(2,0)}(x,t)-2 a_1 \eta ^{(1,0)}(x,t)\right) \\ 2 a_1 \eta ^{(0,1)}(x,t)+c^2 \tau ^{(2,0)}(x,t)=\tau ^{(0,2)}(x,t) \\ \xi ^{(0,1)}(x,t)=c^2 \tau ^{(1,0)}(x,t) \\ \tau ^{(0,1)}(x,t)=\xi ^{(1,0)}(x,t) \\ a_1 \eta (x,t)=2 \tau ^{(0,1)}(x,t)$$

This is twice as many equations as we need. Each function should have one equation, explicitly or implicitly describing the highest-order time derivative at each point (therefore fully defining the evolution of the system). This means that your system is actually overdetermined.

Basically, your system is trying to specify f'[t] and f''[t]: since the latter already describes how the former changes with time, the system is overdetermined. In general there will be no nontrivial solutions. (The case where all functions are identically zero is a solution.)

If you're confidant that these equations are consistent, then we can go ahead and extract the highest-order ones:

Select[eqns, MemberQ[#, Derivative[0, 2][_][__], Infinity] &]


$$k \eta (x,t)+\eta ^{(0,2)}(x,t)=c^2 \eta ^{(2,0)}(x,t) \\ \xi ^{(0,2)}(x,t)=c^2 \left(\xi ^{(2,0)}(x,t)-2 a_1 \eta ^{(1,0)}(x,t)\right) \\ 2 a_1 \eta ^{(0,1)}(x,t)+c^2 \tau ^{(2,0)}(x,t)=\tau ^{(0,2)}(x,t)$$

...and solve the resulting system. Mathematica doesn't seem to be able to symbolically solve the resultant system with DSolve. You can try a numerical solution using NDsolve (remember to give initial conditions and explicit values for the constants, including the new constant a1). After you get your numerical solution, you can check how close the rest of your equations were:

residuals = Subtract @@@ eqns /. solution /. constantValues


They should all give results close to zero (i.e. within numerical error). If you want to recover your initial functions of three variables, you can do the reverse of my earlier equations, something like:

ηSolution = Function[{u, x, t}, (a1 u + a0) η[x, t] /. solution]


I hope this helps!

• Thank you very much! This helps a lot and basically answers my quesiton, thank you! :) – AXidenT Feb 22 '15 at 7:11