Voici les deux façons de faire :
u(n,uo,u1):={ local L,a,b; //verifier que A,B,x ne sont pas affectées [a,b]:=solve(x^2-x-1,x); L:=linsolve([A+B=uo,A*a+B*b=u1],[A,B]); return normal(L[0]*a^n+L[1]*b^n); };Lors de la compliation, Xcas dit :
assume(A,symbol); assume(B,symbol); assume(x,symbol);ou à la commande purge(A,B,x).
Remarque : pour retrouver des variables non formelles il suffira de les
affecter.
On tape :
u(n,uo,u1):={ local L,a,b,A,B,x; assume(A,symbol); assume(B,symbol); assume(x,symbol); [a,b]:=solve(x^2-x-1,x); L:=linsolve([A+B=uo,A*a+B*b=u1],[A,B]); return normal(L[0]*a^n+L[1]*b^n); };Ou on tape :
u(n,uo,u1):={ local L,a,b,A,B,x; purge(A,B,x); [a,b]:=solve(x^2-x-1,x); L:=linsolve([A+B=uo,A*a+B*b=u1],[A,B]); return normal(L[0]*a^n+L[1]*b^n); };Lors de la compliation, Xcas dit :
u(n,uo,u1):={ local L,a,b,A,B,x; print(A); assume(A,symbol); print(A); assume(B,symbol); assume(x,symbol); [a,b]:=solve(x^2-x-1,x); L:=linsolve([A+B=uo,A*a+B*b=u1],[A,B]); A:=5; print(A); return normal(L[0]*a^n+L[1]*b^n); };On tape :