syms x(t) y(t) T(t) m r g
eqn1 = m*diff(x(t), 2) == T(t)/r*x(t);
eqn2 = m*diff(y(t), 2) == T(t)/r*y(t) - m*g;
eqn3 = x(t)^2 + y(t)^2 == r^2;
vars = [x(t); y(t); T(t)];
[eqns,vars] = reduceDifferentialOrder(eqns,vars)
eqns =

vars =

[DAEs,DAEvars] = reduceDAEIndex(eqns,vars)
DAEs =

DAEvars =

[DAEs,DAEvars] = reduceRedundancies(DAEs,DAEvars)
DAEs =

DAEvars =

[M,f] = massMatrixForm(DAEs,DAEvars)
M =

f =

pDAEvars = symvar(DAEvars);
extraParams = setdiff(pDAEs, pDAEvars)
extraParams = 
M = odeFunction(M, DAEvars);
f = odeFunction(f, DAEvars, g, m, r);
F = @(t, Y) f(t, Y, g, m, r);
y0est = [r*sin(pi/6); -r*cos(pi/6); 0; 0; 0; 0; 0];
opt = odeset('Mass', M, 'InitialSlope', yp0est);
implicitDAE = @(t,y,yp) M(t,y)*yp - F(t,y);
[y0, yp0] = decic(implicitDAE, 0, y0est, [], yp0est, [], opt);
opt = odeset(opt, 'InitialSlope', yp0);
[tSol,ySol] = ode15s(F, [0, 1.5], y0, opt);
plot(tSol,ySol(:,1:origVars-1))
legend(S, 'Location', 'Best');