Message Boards Message Boards

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

GROUPS:

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!

Answer
3 months ago

Notice that you have

Y1(t)

instead of

Y1[t]

in eqn1 and

X1(t)

instead of

X1[t]

in eqn7

POSTED BY: Bill Simpson
Answer
3 months ago

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

Answer
3 months ago

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?

POSTED BY: Bill Simpson
Answer
3 months ago

Can't get rid of the quotients and that's as simplified as it gets, unfortunately...thanks for the suggestions though! :)

Answer
3 months ago

Group Abstract Group Abstract