Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!


Ну и вообще, похоже на спор между копателем с лопатой и экскаваторщикомТолько скорее между экскаваторщиком и археологом с совочком и кисточкой. У них просто цели ковыряния в земле разные.
В большинстве случаев, если известен примерный план решения, проще преобразовывать вашу систему уравнений по шагам, оставляя СКА заниматься банальщиной. И при этом не бояться потерять где-нибудь минус.


xVal[A_,B_,a_,b_]:=ArcCos[A/Sqrt[A^2+B^2]]-ArcCos[(A^2+B^2-a^2+b^2)/(2b Sqrt[A^2+B^2])]+ArcCos[(A^2+B^2-a^2-b^2)/(2a b)];
yVal[A_,B_,a_,b_]:=-ArcCos[A/Sqrt[A^2+B^2]]+ArcCos[(A^2+B^2-a^2+b^2)/(2b Sqrt[A^2+B^2])]
point[A_,B_,a_,b_,rhs_]:=Module[{x,y},{x,y}={xVal[A,B,a,b],yVal[A,B,a,b]};
If[Element[x,Complexes]||Element[y,Complexes],Graphics3D[],
Graphics3D[{Opacity[0.8],Blue,Sphere[{xVal[A,B,a,b],yVal[A,B,a,b],0},0.1]}]]]
mathematicaSolution[A_,B_,a_,b_]=Reduce[{a Cos[x]+b Cos[y]==A,a Sin[x]-b Sin[y]==B},{x,y}];
mathematicaSolutionPoints[A_,B_,a_,b_]:=Module[{solution},solution=ToRules@Quiet@Check[Reduce[{mathematicaSolution[A,B,a,b],0<x<Pi,0<y<Pi},{x,y},Reals],False];
If[solution=!=False,(mathematicaSolutionValue=FullSimplify[{x,y}/.solution]);Graphics3D[{Opacity[0.8],Red,Sphere[{x,y,0},0.06]}]/.solution,(mathematicaSolutionValue="Нет решений";Graphics3D[])]];
Manipulate[
{A,B,a,b}=Rationalize[{A,B,a,b}];
Grid[{{Show[{Plot3D[Evaluate@{a Cos[x]+b Cos[y]-A,a Sin[x]-b Sin[y]-B,0},{x,0,Pi},{y,0,Pi},ImageSize->500,PlotPoints->100,Mesh->False,BoxRatios->Automatic,AxesLabel->{"x","y",""},PlotLegends->{a Cos[x]+b Cos[y]==A,a Sin[x]-b Sin[y]==B}],point[A,B,a,b,A],mathematicaSolutionPoints[A,B,a,b]},SphericalRegion->True]},{"Решение, полученное в Mathematica:"},{mathematicaSolutionValue},{"Решение, полученное в статье:"},{{xVal[A,B,a,b],yVal[A,B,a,b]}}}],{{A,121/200},-1,1},{{B,-(23/200)},-1,1},{{a,-(93/100)},-1,1},{{b,-(131/200)},-1,1},TrackedSymbols:>{A,B,a,b}]Возможно maisvendoo допустил какие-то ошибки при копировании полученных ответов, но полученный им ответ, к сожалению, неверен.



Mathematica превосходит Maple практически во всем
LagrangeEQs[T_, q_, r_, F_]:= Module[{ret=Range[Length[q]]},
For[i = 1, i <= Length[q], i++,
ret[[i]] = D[D[T, D[q[[i]], t]], t] - D[T, q[[i]]] == Sum[F[[k]].D[r[[k]], q[[i]]], {k, 1, Length[F]}]
];
ret
]
LagrangeEQs := proc(T, q, r, F)
local s := numelems(q);
local n := numelems(rk);
local i, k;
local T1, dT1dv;
local dTdv, dTdvdt;
local T2, dT2dq;
local dTdq;
local left_part;
local Q;
local summa;
local r1, dr1dq, drdq;
# Получение левой части уравнений движения
for i from 1 to s do
# Дифференцируем кинетическую энергию по обобщенным скоростям и времени
T1[i] := subs(diff(q[i], t) = v[i], T);
dT1dv[i] := diff(T1[i], v[i]);
dTdv[i] := subs(v[i] = diff(q[i], t), dT1dv[i]);
dTdvdt[i] := diff(dTdv[i], t);
# Дифференцируем кинетическую энергию по обобщенным координатам
T2[i] := subs(q[i] = q1[i], T);
dT2dq[i] := diff(T2[i], q1[i]);
dTdq[i] := subs(q1[i] = q[i], dT2dq[i]);
# Формируем левую часть уравнения движения
left_part[i] := expand(simplify(dTdvdt[i] - dTdq[i]));
end do;
VectorCalculus[BasisFormat](false);
# Вычисляем обобщенные силы (правая часть уравнений движения)
for i from 1 to s do
summa := 0;
for k from 1 to n do
# Дифференцируем радиус-ректор точки приложения k-й силы по i-й обобщенной координате
r1[k] := subs(q[i] = q1[i], r[k]);
dr1dq[k] := VectorCalculus[diff](r1[k], q1[i]);
drdq[k] := subs(q1[i] = q[i], dr1dq[k]);
# Скалярно перемножаем вектор силы на производную от радиус-вектора по обобщенной координате
# и накапливаем результат
summa := summa + LinearAlgebra:-DotProduct(F[k], drdq[k], conjugate = false);
end do;
Q[i] := expand(simplify(summa));
end do;
# Окончательно формируем уравнения и возвращаем результатq
return {seq(left_part[i] = Q[i], i=1..s)};
end proc:
LagrangeEQs[T_,q_,r_,F_]:=
Table[D[D[T,D[q[[i]],t]],t]-D[T,q[[i]]]==Sum[F[[k]].D[r[[k]],q[[i]]],{k,1,Length[F]}],{i,1,Length[q]}]
Системы компьютерной алгебры: блеск, нищета или почему многие задачи не решаются «в лоб»