# How to find the parametric equation of the von Mises yield function?

The von Mises yield function is given by:

$\Phi(\sigma_1,\sigma_2)=\sqrt{\sigma_{1}^{2} +\sigma_{2}^{2}-\sigma_{1} \sigma_{2}} - \sigma_y$

were $\sigma_1$ and $\sigma_2$ are the principal stresses and $\sigma_y$ is the yield stress. If $\Phi(\sigma_1, \sigma_2)=0$, $\sigma_y =200$ and using ContourPlot:

contourplot = ContourPlot[Sqrt[sig1^2 + sig2^2 - sig1 sig2] - 200 == 0, {sig1, -300,
300}, {sig2, -300, 300}]


I have:

I need to find the parametric version of $\Phi(\sigma_1,\sigma_2)$, but I'm stuck.

Still now based on this question How to plot a rotated ellipse using ParametricPlot?, I can plot a rotated parametrized ellipse (red and dashed line) obtained from this code:

        a = 300;
b = a/2;
gamma = Pi/4;
pmplot = ParametricPlot[{(a Cos[theta] Cos[gamma] - b Sin[theta] Sin[gamma]), a Cos[theta] Sin[gamma] + b Sin[theta] Cos[gamma]}, {theta, 0 ,2 Pi}, PlotStyle -> {Thick, Red, Dashed}];
Show[contourplot, pmplot]


The problem is to find the values of a and b to fit the parametric equation with the von Mises ellipse.

ClearAll[a, b, gamma]
table = Sqrt[#^2 + #2^2 - # #2] - 200 & @@@
Table[{(a Cos[theta] Cos[gamma] - b Sin[theta] Sin[gamma]),
a Cos[theta] Sin[gamma] + b Sin[theta] Cos[gamma]},
{theta, 0, Pi, Pi/4}];

{a, b, gamma} = NArgMin[{Norm @ table,  0 <= gamma <= 2 Pi}, {a, b, gamma}]


{282.843, -163.299, 0.785398}

pmplot = ParametricPlot[{(a Cos[theta] Cos[gamma] - b Sin[theta] Sin[gamma]),
a Cos[theta] Sin[gamma] + b Sin[theta] Cos[gamma]},
{theta, 0, 2 Pi}, PlotStyle -> {Thick, Red, Dashed}];
Show[contourplot, pmplot]


• great solution! Do you know if it's possible to obtain analytically these constants (a,b and gamma)? – Diogo Jun 6 '18 at 15:13
• @Diogo, for an exact solution, you can use eqns = Thread[ FullSimplify[ Norm[Sqrt[#^2 + #2^2 - # #2] - 200 & @@@ {(a Cos[theta] Cos[gamma] - b Sin[theta] Sin[gamma]), a Cos[theta] Sin[gamma] + b Sin[theta] Cos[gamma]}], Assumptions -> { a > 0, theta == #, 0 <= gamma <= Pi}] & /@ {0, Pi/2, Pi} == 0]; Reduce[Join[eqns, { 0 <= gamma <= 2 Pi}], {a, b, gamma}, Reals] . – kglr Jun 6 '18 at 16:04
• thank you. The solutions i get from your code are: a=200sqrt[2], b=200Sqrt[2] and gamma=2 ArcTan[Sqrt[2]/(2 + Sqrt[2])]. Both a and gamma are compatible with your numerical solution, but b appears to be diferent. Do you know why? – Diogo Jun 6 '18 at 16:16
• Apparently the exact solution is: a=sigmay sqrt(2), b=sigmay sqrt(2/3) and gamma =-2 ArcTan[1 - Sqrt[2]] – Diogo Jun 6 '18 at 16:26