assume(x>0);
simplify(atan(1/x)+atan(x));
assume(x<0);
simplify(atan(1/x)+atan(x));
assume(a>0); assume(b>0); assume(c>0);
simplify(subs(atan(1/(a+b))+atan(1/(a+c)),c=(1+a^2)/b))
simplify(atan(1/(a+1))+atan(1/(a^2+a+1)))
- La fonction suivante utilise
apply pour transformer les
listes:
Machin(n):={
local a,l,j,x;
a:=[1]; l:=a;
for (j:=0;j<n;j++)
{
l:=apply(x->x+1,a);
a:=apply(x->x^2+x+1,a);
a:=append(a,op(l));
}
return(a);
};
Voici une fonction récursive, qui retourne une séquence.
Machin(a,n):={
local b,c;
b:=a+1;
c:=a^2+a+1;
if (n==1) return b,c;
return machin1(b,n-1),machin1(c,n-1);
}
:;
l:=Machin(3)
simplify(sum(apply(x->atan(1/x),l)))
taylor_atan(n):=convert(taylor(atan(x),x=0,2*n+1),polynom);
ou
taylor_atan(n):=truncate(taylor(atan(x),x=0,2*n+1),2*n+1);
ou
taylor_atan(n):={
local s,P;
s:=series(atan(x),x,0,2*n+1);
P:=convert(s,polynom);
return(P);
}:;
P14:=unapply(taylor_atan(14),x);
s1:=sum(apply(x->P14(1/x),l));
Digits:=25;
evalf(pi/4-s1);
simplify(atan(1)-4*atan(1/5)+atan(1/239));
u:=1+5*i; arg(u);
v:=1+239*i); arg(v);
-4*arg(u)+arg(v);
simplify(arg(u^{-4}*v));
Les deux calculs d'argument donnent la même valeur :
.
- De la formule
obtenue à la question précédente, on passe à la formule de
Machin par
(question 1).
s2:=4*P14(1/5)-P14(1/239)
evalf(pi/4-s2)
c:=[44,7,-12,24]; v:=[57,239,682,12943];
simplify(c*apply(x->atan(1/x),v));
s3:=c*apply(x->P14(1/x),v);
Digits:=60;
evalf(pi/4-s3);
c:=[12,32,-5,12]; v:=[49,57,239,110443];
simplify(c*apply(x->atan(1/x),v));
s4:=c*apply(x->P14(1/x),v);
evalf(pi/4-s4);