I am looking for examples of numerically finding eigenvalues/eigenfunctions of coupled DEs. If anyone is able to point me towards any examples, preferably with code included, it would be much appreciated.


A while back I wrote a few such examples over at https://mathematica.stackexchange.com. You can find them here, here and here. The last link is probably the best to understand - even though that is not for coupled PDEs; but there is not much difference. There also examples at the reference page of Mathematicas' function NDEigensystem which does what you want.

Let me reproduce a small example here, that is more suited to an audience that may not be as familiar with the language.

To model the modes of a beam we define a plane stress operator (coupled PDE):

planeStress = {
 Div[{{0, -((Y*ν)/(1 -ν^2))}, {-(Y*(1 -ν))/(2*(1 - ν^2)), 0}}.Grad[v[t, x, y], {x, y}], {x, y}] + Div[{{-(Y/(1 - ν^2)),  0}, {0, -(Y*(1 - ν))/(2*(1 - ν^2))}}.Grad[u[t, x, y], {x, y}], {x, y}], 
 Div[{{0, -(Y*(1 - ν))/(2*(1 - ν^2))}, {-((Y*ν)/(1 - ν^2)), 0}}.Grad[u[t, x, y], {x, y}], {x, y}] + Div[{{-(Y*(1 -ν))/(2*(1 -ν^2)), 0}, {0, -(Y/(1 - ν^2))}}.Grad[v[t, x, y], {x, y}], {x, y}]
} /. {Y -> 210 10^9, ν -> 33/100};

We hold the left hand side of the beam fixed.

(*held fixed at left*)
bcs = DirichletCondition[{u[t, x, y] == 0, v[t, x, y] == 0}, x == 0];

And call the numerical differential eigensolver:

\[Rho] = 7850; length = 10; height = 0.7;
{vals, funs} = 
  NDEigensystem[{Thread[\[Rho]*D[{u[t, x, y], v[t, x, y]}, {t, 1}] == 
    DirichletCondition[{u[t, x, y] == 0., v[t, x, y] == 0.}, 
     x == 0]}, {u[t, x, y], v[t, x, y]}, 
   t, {x, y} \[Element] Rectangle[{0, 0}, {length, height}], 9];

This returns a list of eigenvalues and eigenfunctions. To plot them:

      GraphicsComplex[{{0, 0, 0}, {length, 0, 0}, {length, height, 
         0}, {0, height, 0}}, Line[{{1, 2, 3, 4, 1}}]]}],
     Sqrt[10000*Total[#^2]], {x, y} \[Element] 
      Rectangle[{0, 0}, {length, height}], 
     ColorFunction -> "TemperatureMap", Axes -> False, 
     Mesh -> False]}, Boxed -> False] & /@ funs

enter image description here

For more detailed information on how that works, please have a look at the posts I mentioned in the beginning.


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.