### 6.14.3 Valeurs d’une suite récurrente ou d’un système de suites récurrentes : `rsolve`

Voir aussi `seqsolve` 6.14.2.
`rsolve` a comme argument la ou les relation(s) de récurrence, le nom des variables utilisées et les valeurs de départ de la suite.

La relation de récurrence est :

- soit une partie homogène linéaire, la partie non homogène doit être une combinaison linéaire de produit de polynôme en n par une suite géométrique en n. Par exemple un+1=2un+n3n,
- soit une fonction homographique. Par exemple un+1=un−1/un−2

`rsolve` renvoie alors une matrice dont les lignes sont les valeurs de la suite en fonctions de n.

Remarques
Contrairement à `seqsolve`, `rsolve` est plus malléable car avec `rsolve` :

- la suite ne débute pas forcément par `u(0)`,
- on peut donner plusieurs valeurs de départ par exemple `u(0)^2=1`, c’est pourquoi `rsolve` renvoie une liste,
- on écrit la relation de récurrence comme en mathématiques.

Exemples :

- Valeurs de la suite u0=3, un+1=2un+n
  On tape :
  `rsolve(u(n+1)=2u(n)+n,u(n),u(0)=3)`
  On obtient :
  `[-1+4*2^(n+1-1)-n]`
- Valeurs de la suite u12=1, un+1=2un+n
  On tape :
  `rsolve(u(n+1)=2u(n)+n,u(n),u(1)^2=1)`
  On obtient :
  `[[-1-(-3)/2*2^(n+1-1)-n,
  -1-(-1)/2*2^(n+1-1)-n]]`
- Valeurs de la suite u0=3, un+1=2un+n3n
  On tape :
  `rsolve(u(n+1)=2u(n)+(n)*3^n,u(n),u(0)=3)`
  On obtient :
  `[-3*3^(n+1-1)+6*2^(n+1-1)+n*3^(n+1-1)]`
- Valeurs de la suite u0=4, un+1=un−1/un−2
  On tape :
  `rsolve(u(n+1)=(u(n)-1)/(u(n)-2),u(n),u(0)=4)`
  On obtient :
  `[((10*sqrt(5)+30)*((sqrt(5)-3)/2)```^```n+30*sqrt(5)-70)/ (20*((sqrt(5)-3)/2)```^```n+10*sqrt(5)-30)]`
- Valeurs de la suite u0=0,u1=1, un+1=un+un−1 pour n>0.
  On tape :
  `rsolve(u(n+1)=u(n)+u(n-1),u(n),u(0)=0,u(1)=1)`
  On obtient :
  `[(5+sqrt(5))/10*((sqrt(5)+1)/2)^(n+1-1-1)+
  (5-sqrt(5))/10*((-sqrt(5)+1)/2)^(n+1-1-1)]`
- Valeurs de la suite u0=0,u1=1, un+1=2*un+un−1+n pour n>0.
  On tape :
  `rsolve(u(n+1)=2*u(n)+u(n-1)+n,u(n),u(0)=0,u(1)=1)`
  On obtient :
  `[(-1)/2-(-2-3*sqrt(2))/8*(sqrt(2)+1)^(n+1-1)-
  (-2+3*sqrt(2))/8*(-sqrt(2)+1)^(n+1-1)-1/2*n]`
  Ou on tape :
  `rsolve([u(n+1)=2*u(n)+v(n)+n,v(n+1)=u(n)],`
  `[u(n),v(n)],u(0)=0,v(0)=1)` On obtient :
  `[[(-1)/2-(-2-3*sqrt(2))/8*(sqrt(2)+1)^(n+1-1)-
  (-2+3*sqrt(2))/8*(-sqrt(2)+1)^(n+1-1)-1/2*n,
  -(-4+sqrt(2))/8*(sqrt(2)+1)^(n+1-1)-
  (-4-sqrt(2))/8*(-sqrt(2)+1)^(n+1-1)-1/2*n]]`
- Valeurs de la suite u0=0,v0=1, un+1=un+vn, vn+1=un−vn,.
  On tape :
  `rsolve([u(n+1)=u(n)+v(n),v(n+1)=u(n)-v(n)],`
  `[u(n),v(n)],[u(0)=0,v(0)=1])`
  On obtient :
  `[[1/2*2^((n-1)/2)+1/2*(-(sqrt(2)))^(n-1),
  (-1+sqrt(2))/2*2^((n-1)/2)+
  (-1-sqrt(2))/2*(-(sqrt(2)))^(n-1)]]`
- Valeurs de la suite u0=2,v0=0, un+1=4*vn+n+1, vn+1=un,.
  On tape :
  `rsolve([u(n+1)=4*v(n)+n+1,v(n+1)=u(n)],`
  `[u(n),v(n)],[u(0)=2,v(0)=0])`
  On obtient :
  `[[(-8)/9+2*2^(n+1-1)-(-8)/9*(-1)^(n+1-1)*2^(n+1-1)-
  1/3*n,(-5)/9+2^(n+1-1)-4/9*(-1)^(n+1-1)*2^(n+1-1)-
  1/3*n]]`