# Solving a system of PDEs in Mathematica

I am trying to find all the solutions for the following system: This is typed into Mathematica as follows:

DSolve[{(VDC/(2*lrf))*
D[Ψ[irq, ird, isq, isd, igq, igd, VDC, iLq, iLd, Vcq,
Vcd, ωr, ωturb, δturb],
irq] - (3*irq/(2*C))*
D[Ψ[irq, ird, isq, isd, igq, igd, VDC, iLq, iLd, Vcq,
Vcd, ωr, ωturb, δturb], VDC] ==
0, (VDC/(2*lrf))*
D[Ψ[irq, ird, isq, isd, igq, igd, VDC, iLq, iLd, Vcq,
Vcd, ωr, ωturb, δturb],
ird] - (3*ird/(2*C))*
D[Ψ[irq, ird, isq, isd, igq, igd, VDC, iLq, iLd, Vcq,
Vcd, ωr, ωturb, δturb], VDC] ==
0}, Ψ[irq, ird, isq, isd, igq, igd, VDC, iLq, iLd, Vcq,
Vcd, ωr, ωturb, δturb], {irq, ird, isq, isd,
igq, igd, VDC, iLq, iLd, Vcq,
Vcd, ωr, ωturb, δturb}]


But still Dsolve does not give a solution to this system. The output I am getting is: From observation it is easy to see that trivial solutions are: i_sd, i_sq, ωr, ωturb, δturb etc. But mathematica isnt giving these either..

Any help would be much appreciated

• "Ive checked my code" Humm... What about (V_DC/(2*l_rf)) ? and i_rd Does this look right for you? and do not use subscripts. They are terrible. Use normal variables. – Nasser Jun 8 '18 at 2:28
• Thank you for pointing that out. I completely missed it. I updated my question with clearer code – CKCK Jun 8 '18 at 4:09
• I reformatted your code so it does not have \[...] stuff in it. Also, you could delete the old wrong code as it is not needed – Nasser Jun 8 '18 at 4:18
• Thanks @Nasser. Updated. – CKCK Jun 8 '18 at 4:23
• Maple also, he can't solve. But equations give by user Akku14 can solve :).Solution is ${\it CapitalPsi} \left( {\it irq},{\it ird},{\it VDC} \right) ={\it _F1} \left( {\frac {C{{\it VDC}}^{2}+3\,{{\it ird}}^{2}{\it lrf}+3\,{ \it lrf}\,{{\it irq}}^{2}}{C}} \right)$ where F1 is arbitary function. – Mariusz Iwaniuk Jun 8 '18 at 11:26

Akku14 is correct that the rather complicated looking pair of equations in the question actually has only three independent variables and one dependent variable. The rest are parameters that can be dropped from the equations to simplify notation. These two equations do have a solution that can be obtained using DSolve, although with an inordinate amount of human assistance. Begin with the left sides of the two PDEs,

eq = {(VDC/(2*lrf))*D[CapitalPsi[irq, ird, VDC], irq] -
(3*irq/(2*C))*D[CapitalPsi[irq, ird, VDC], VDC],
(VDC/(2*lrf))*D[CapitalPsi[irq, ird, VDC], ird] -
(3*ird/(2*C))*D[CapitalPsi[irq, ird, VDC], VDC]};


and simplify their appearance by

Simplify[eq 2 C/(3 VDC)] /. C/(3 lrf) -> coef;
eq1 = {%[]/irq, %[]/ird} // Apart
(* {- D[CapitalPsi[irq, ird, VDC], VDC]/VDC +
coef*D[CapitalPsi[irq, ird, VDC], irq]/irq,
- D[CapitalPsi[irq, ird, VDC], VDC]/VDC +
coef*D[CapitalPsi[irq, ird, VDC], ird]/ird} *)


where coef == C/(3 lrf). Next, integrate the difference of the two equations.

DSolve[Subtract @@ eq1 == 0, CapitalPsi, {irq, ird, VDC}] // Flatten
(* {CapitalPsi -> Function[{irq, ird, VDC}, C[VDC][1/2 (ird^2 + irq^2)]]} *)


Now, it would be nice, if this solution could be substituted as is into either of eq1, but the complicated argument structure of C confuses Mathematica. So, instead use the equivalent

eq1[] /. {CapitalPsi -> Function[{irq, ird, VDC}, c1[VDC, 1/2 (ird^2 + irq^2)]]}
(* coef*Derivative[0, 1][c1][VDC, (ird^2 + irq^2)/2] -
Derivative[1, 0][c1][VDC, (ird^2 + irq^2)/2]/VDC *)


which also can be integrated, if 1/2 (ird^2 + irq^2 is replaced temporarily by a single variable, say irsq.

DSolveValue[0 == % /. 1/2 (ird^2 + irq^2) -> irsq, c1[VDC, irsq], {VDC, irsq}]
/. irsq -> 1/2 (ird^2 + irq^2) // Flatten
(* C[1/2 (ird^2 + irq^2 + coef VDC^2)] *)


where the (new) C is an arbitrary function of ird^2 + irq^2 + coef VDC^2. The validity of these manipulations can be verified by

eq1 /. CapitalPsi -> Function[{ird, irq, VDC}, C[1/2 (ird^2 + irq^2 + coef VDC^2)]]
(* {0, 0} *)


Several instances of simple systems of first-order PDEs that cannot be integrated by DSolve without human assistance can be found on this site.

This is not an answer, but it couldn't reasonably fit in a comment. Here's a start towards better variables:

DSolve[{
(VDC/(2*lrf))*
D[Ψ1[irq, ird, isq, isd, igq, igd, VDC, iLq, iLd, Vcq, Vcd, ωr, ωturb, δturb], irq] -
(3*irq/(2*C))*
D[Ψ1[irq, ird, isq, isd, igq, igd, VDC, iLq, iLd, Vcq, Vcd, ωr, ωturb, δturb], VDC] == 0,
(VDC/(2*lrf))*
D[Ψ1[irq, ird, isq, isd, igq, igd, VDC, iLq, iLd, Vcq, Vcd, ωr, ωturb, δturb], ird] -
(3*ird/(2*C))*
D[Ψ1[irq, ird, isq, isd, igq, igd, VDC, iLq, iLd, Vcq, Vcd, ωr, ωturb, δturb], VDC] == 0},
Ψ1[irq, ird, isq, isd, igq, igd, VDC, iLq, iLd, Vcq, Vcd, ωr, ωturb, δturb],
{irq, ird, isq, isd, igq, igd, VDC, iLq, iLd, Vcq, Vcd, ωr, ωturb, δturb}
]


No errors, but still no answer from DSolve though. You should really check that it still represents your equations faithfully, since it was a "machine translation" of your code. If you have any reason to expect an analytical solution, you should state it in the question.

Let me cancel all the stuff, that is not needed.

It schows, you have two equations, but three variables. How can you expect a solution?

DSolve[

{(VDC/(2*lrf))*D[CapitalPsi[irq, ird, VDC], irq] - (3*irq/(2*C))*
D[CapitalPsi[irq, ird, VDC], VDC] == 0,

(VDC/(2*lrf))*D[CapitalPsi[irq, ird, VDC], ird] - (3*ird/(2*C))*
D[CapitalPsi[irq, ird, VDC], VDC] == 0},

CapitalPsi,

{irq, ird, VDC}]

• Im looking for a Ψ that satisfies the given conditions. Ψ is a function of irq, ird, isq, isd, igq, igd, VDC, iLq, iLd, Vcq, Vcd, ωr, ωturb, δturb. So i dont think you can simplify it like that. please correct me if im wrong. – CKCK Jun 8 '18 at 9:53