function dotq = square_object_push_param( t, q, npoint, M, B, K, npush, A_push, push, dotpush, nfixed, A_fixed, alpha )
% 運動方程式（正方形の上部を押しているとき）
% 押している節点と床に固定されている節点に制約が生じる
    u = q(1:npoint*2);
    v = q(npoint*2+1:npoint*4);
    
    dotu = v;
    
    coef = [ M, -A_fixed, -A_push; ...
            -A_fixed', zeros(nfixed*2,nfixed*2), zeros(nfixed*2,npush*2); ...
            -A_push',  zeros(npush*2,nfixed*2),  zeros(npush*2,npush*2) ];
    vecb = push(t);
    vecdotb = dotpush(t);
    vec = [ -K*u-B*v; ...
             A_fixed'*(2*alpha*v + alpha^2*u); ...
             2*alpha*(A_push'*v-vecdotb) + alpha^2*(A_push'*u-vecb) ];
    sol = coef\vec;
    dotv = sol(1:npoint*2);
    
    dotq = [dotu; dotv];
end
