Can RSolve handle 4 simultaneous 1st-Order non-linear difference equations?

Hello everyone

I couldn’t find a lot on the documentation about limitations to the RSolve functionality. In particular, I have a set of 4 simultaneous 1st-Order non-linear Difference equations and 4 initial conditions, but keep getting the message that one of my equations “appears with no arguments”. Even when I take the equation and corresponding IC away, it just returns the same code I typed, but no solution.

Here’s the code:

eqn1 = V1[t + 1] == 
        (1/2)*((-(E1*(-1)^(t + 1) - E1 - 2)*(beta1*gamma2 + beta2*gamma1)*
         Y1[t] - (-1 + (-1)^(t + 1))*(1 + E1)*(-beta1*gamma2 + beta2*gamma1)*
         V1[t] - (1 + (-1)^(t + 1))*(-beta1*gamma2 + beta2*gamma1)*
         V2[t] + beta2*(E1*(-1)^(t + 1) - E1 - 2)*
         YT*((-1 + b)*gamma1 - beta1))*
      X1[t] + (-gamma1 + beta1*(-1 + a))*
      XT*(E1*(-1)^(t + 1) - E1 - 2)*Y1 (t)*gamma2)*
   E1/((1 + E1)*(-beta2*gamma1*X1[t] + gamma2*XT*(-gamma1 + beta1*(-1 + a))));

eqn2 = V1[0] == 0;

eqn3 = V2[t + 1] == 
        (1/ 2)*(((1 + (-1)^(t + 1))*(1 + E2)*(-beta1*gamma2 + beta2*gamma1)*
             V2[t] - (E2*(-1)^(t + 1) + E2 + 2)*(beta1*gamma2 + beta2*gamma1)*
             Y1[t] + (-1 + (-1)^(t + 1))*(-beta1*gamma2 + beta2*gamma1)*
             V1[t] + YT*beta2*(E2*(-1)^(t + 1) + E2 + 2)*(b*gamma1 - beta1))*X1[t] + 
         XT*(-(1 + (-1)^(t + 1))*(1 + E2)*(-beta1*gamma2 + beta2*gamma1)*
             V2[t] + gamma2*(E2*(-1)^(t + 1) + E2 + 2)*(a*beta1 - gamma1)*
             Y1[t] - (-1 + (-1)^(t + 1))*(-beta1*gamma2 + beta2*gamma1)*
             V1[t] - ((-gamma1 + beta1*(-1 + a))*gamma2 + beta2*((-1 + b)*gamma1 - beta1))*(E2*(-1)^(t + 1) + E2 + 2)*YT))*
       E2/((1 + E2)*(-beta2*gamma1*X1[t] + gamma2*XT*(-gamma1 + beta1*(-1 + a)))) ;

 eqn4 = V2[0] == 0;

 eqn5 = X1[t + 1] ==
             -(1/2)*(1 + (-1)^(2 + t))*beta1*(((beta1*gamma2 + beta2*gamma1)*X1[t] - 
       gamma2*XT*(-gamma1 + beta1*(-1 + a)))*Y1[t] - 
       X1[t]*(beta1*gamma2 - beta2*gamma1)*V1[t] - 
       beta2*(gamma1*V2[t + 1] + ((-1 + b)*gamma1 - beta1)*YT)*X1[t] +
       gamma2*XT*(-gamma1 + beta1*(-1 + a))*
        V2[t + 1])/((-beta1*gamma2*
       Y1[t] + (beta1*gamma2 - beta2*gamma1)*V1[t] + beta2*((-1 + b)*gamma1 - beta1)*YT)*(beta1 + gamma1)) +
     (1/2)*(((-beta1*gamma2 - beta2*gamma1)*X1[t] + 
      gamma2*XT*(-gamma1 + beta1*(-1 + a)))*Y1[t] - 
      X1[t]*(beta1*gamma2 - beta2*gamma1)*V2[t] + 
      beta2*(-gamma1*V1[t + 1] + ((-1 + b)*gamma1 - beta1)*YT)*X1[t] +
      XT*(-gamma1 + beta1*(-1 + a))*V1[t + 1]*gamma2)*
      beta1*((-1)^(t + 1) + 1)/((-beta1*gamma2*Y1[t] + (-beta1*gamma2 + beta2*gamma1)*
      V2[t] + beta2*((-1 + b)*gamma1 - beta1)*YT)*(beta1 + gamma1));

 eqn6 = X1[0] == a*XT;

 eqn7 = Y1[t + 1] ==
             -(1/2)*(((2*beta1*gamma2 + 2*beta2*gamma1)*
         Y1[t] + ((-1)^(t + 1) - 1)*(beta1*gamma2 - beta2*gamma1)*
         V1[t] + ((-1)^(t + 1) + 1)*(beta1*gamma2 - beta2*gamma1)*
         V2[t] - (gamma1*(V1[t + 1] + V2[t + 1])*(-1)^(t + 1) + gamma1*V1[t + 1] - 
         gamma1*V2[t + 1] + (2*((-1 + b)*gamma1 - beta1))*YT)*beta2)*X1[t] + gamma2*(-gamma1 + 
        beta1*(-1 + a))*(-2*Y1[t] + (V1[t + 1] + V2[t + 1])*(-1)^(t + 1) + V1[t + 1] - V2[t + 1])*XT)*
       gamma1/((-beta2*gamma1*X1 (t) + gamma2*XT*(-gamma1 + beta1*(-1 + a)))*(beta1 + gamma1));

  eqn8 = Y1[0] == b*YT;

Followed by:

RSolve[{eqn1, eqn2, eqn3, eqn4, eqn5, eqn6, eqn7, eqn8}, {V1, V2, X1,Y1}, t]

To which I get “RSolve::dvnoarg: The function Y1 appears with no arguments.”

Any thoughts are appreciated. Many thanks!

Notice that you have

Y1(t)

instead of

Y1[t]

in eqn1 and

X1(t)

instead of

X1[t]

in eqn7

Thanks for that! The error disappeared, but the program still can’t solve the system…

More on a level of superstition than anything else, you might see if you could justify cross multiplying to get rid of those denominators. I have a feeling from some experience that denominators sometimes make finding solutions much more difficult.

Similar superstition, you might see if you could get all the f[1+t] neatly pushed over to the left hand side and the f[t] to the right hand side of your equations.

Would it be possible to use Simplify or Collect the same f[t] together on the right hand side and see if there is any way to simplify the forest of coefficients that you have?

Can’t get rid of the quotients and that’s as simplified as it gets, unfortunately…thanks for the suggestions though! :slight_smile: