Optimisez la forme d'une came
Dessinez la forme d'une came convexe pour maximiser la zone de l'ouverture de la vanne pour une rotation de la came, avec des contraintes sur les rayons de la came.
Cela suppose la forme de la came soit circulaire sur un angle de o de sa circonférence avec un rayon rmin et est de forme symétrique sur le reste
.

Les variables de dessin ,
,
,
,
, représentent le rayon de la came aux angles équidistants
distribués sur un angle de
, la moitié supérieure de la partie non circulaire de la came.

n = 100; vars = Array[r, n];
Chaque rayon est contraint de tomber dans l'intervalle
.

rmin = 1; rmax = 2;
varbounds = Table[rmin <= r[i] <= rmax, {i, 1, n}];
Entrez l'angle défini ci-dessus.

\[Theta] = 2 Pi/(5 (n + 1));
Les contraintes de convexité sont exprimés par le système des inégalités.

convexconstri = (1/2) r[i - 1] r[i + 1] Sin[2 \[Theta]] <=
(1/2) r[i - 1] r[i] Sin[\[Theta]] + (1/2) r[i] r[
i + 1] Sin[\[Theta]];
En utilisant , le système peut être réexprimé comme suit. Notez que
est le rayon du point sur la partie circulaire de la came et donc égal à
.

convexconstr =
Table[2 r[i - 1] r[i + 1] Cos[\[Theta]] <=
r[i] (r[i - 1] + r[i + 1]), {i, 0, n}] /. {r[-1] -> rmin,
r[0] -> rmin, r[n + 1] -> rmax};
Une contrainte sur le taux de variation du rayon est exprimé en termes du paramètre comme
.

\[Alpha] = 1.5; rchangeconstr =
Table[-\[Alpha] <= (r[i + 1] - r[i])/\[Theta] <= \[Alpha], {i, 0,
n}] /. {r[0] -> rmin, r[n + 1] -> rmax};
La fonction objective (aire d'ouverture de la came), est supposée avoir une relation linéaire simple avec les variable de dessin donné comme
, où
is est une constante liée à la géométrie de la came.

rv = 1;
objfun = Pi rv^2 (1/n) Sum[r[i], {i, 1, n}];
Choisissez les points initiaux pour les variables.

initpts = Table[.5 (rmin + rmax), {i, 1, n}];
Résolvez le problème de maximisation.

sol = FindMaximum[
Join[{objfun}, varbounds, convexconstr, rchangeconstr],
Thread[vars, initpts]];
Notez que plusieurs des plus grands rayons sont au maximum .

Table[r[i], {i, 95, 100}] /. sol[[2]]

Tracez la solution.
