# -*- coding: utf-8 -*- """ Created on Tue Jun 20 16:05:43 2017 @author: grivet Exercice 2-8 : calcul de argth(x) d'après la fraction continue et l'algorithme de Wallis """ from pylab import * TOL = 1.0e-12; NMAX = 100 anm2 = 1.0; anm1 = 0.0 bnm2 = 0.0; bnm1 = 1.0 x = float(input("valeur de x: ")) if abs(x) < 1: xx = x*x # cas n = 1; coef de la fraction: x et 1 an = anm2*x + anm1*1.0 bn = bnm2*x + bnm1*1.0 print("%12.6f\t%12.6f\t%12.6f" % (an, bn, an/bn)) anm2 = anm1; bnm2 = bnm1 anm1 = an; bnm1 = bn #cas général n = 2 while n <= NMAX: an = -anm2*xx*(n-1)**2 + anm1*(2*n-1) bn = -bnm2*xx*(n-1)**2 + bnm1*(2*n-1) anm2 = anm1/bn; bnm2 = bnm1/bn anm1 = an/bn; bnm1 = 1 print("%12.6f\t%12.6f\t%12.6f" % (an, bn, an/bn)) if (abs(anm1/bnm1 - anm2/bnm2) <= TOL): break n = n+1 print("après %d itérations, argth(%8.4f) vaut: %15.10f" % (n-1, x, an/bn)) print("valeur donnée par Numpy: %15.10f" % arctanh(x) ) else: print("la fonction argth n'est pas définie pour cette valeur de la variable")