calcul formel

Utilisation de Xcas

Modérateur : xcasadmin

Alek
Messages : 111
Inscription : jeu. oct. 28, 2010 1:20 pm

calcul formel

Message par Alek » jeu. janv. 10, 2013 7:53 am

Connaissez-vous un exemple (un exercice) montrant l'intérêt de calcul formel (exact) par rapport au calcul numérique 'float' ?
La question peut paraître provocatrice, mais en fait elle est motivée par une leçon de capes; elle me semble aussi intéressante dans le contexte d'évolution de certains programmes http://xcas.e.ujf-grenoble.fr/XCAS/view ... f=1&t=1216

En fait, on a toujours besoin de calculer la dérivée ou une primitive; mais cela n'est pas envisageable avec un calcul numérique. Je cherche un truc que l'on peut faire de deux manières, exacte et approchée, et que la méthode exacte soit "supérieure".

J'ai une liste d'exemples montrant la 'face cachée' des floats, des phénomènes plus au moins amusants provenant de la représentation approchée et d'erreurs d'arrondi. Mais dans aucun cas un calcul exact ne ferait vraiment mieux.
Et j'ai un simple exemple qui montre plutôt l'intérêt de calcul approché :
soit x_(n+1) = 4*x_n*(1-x_n) (la fameuse suite logistique);
En partant de x = 0.23 on obtient rapidement une valeur approchée de x_100 (en augmentant suffisamment la précision de calcul, sinon le résultat est faux !)
Or, en partant de x = 23/100 on n'obtient rien du tout au delà de n=30 (le dénominateur de x "explose" et le calcul est interminable).

J'aurais donc tendance à dire que le calcul numérique (là où il a un sens) est plutôt préférable par rapport au calcul formel/exact.
Avez vous des exemples allant dans l'autre sens ?

A.

frederic han
Messages : 1137
Inscription : dim. mai 20, 2007 7:09 am
Localisation : Paris
Contact :

Re: calcul formel

Message par frederic han » jeu. janv. 10, 2013 9:28 am

Peut etre par exemple en algebre lineaire il y a surement pas mal d'exemples du genre:


prenons une decomposition: A=D+N avec DN=ND , D diagonalisable et N nilpotent non nulle de norme pas forcement petite. Alors A'=A+une petite perturbation devient avec toutes ses vp distinctes donc diagonalisable donc:

la decomposition devient A'=A'+0 avec ||O-N|| pas forcement petite du tout.

Fred

parisse
Messages : 5743
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: calcul formel

Message par parisse » jeu. janv. 10, 2013 3:01 pm

Dans l'exemple d'Alek, je pense que le plus approprie est d'utiliser des flottants multi-precision (qu'on ne trouve en general pas dans les softs a vocation numerique).
Le calcul de determinant est un domaine ou le calcul exact peut servir, d'ailleurs lapack n'a pas de routine de calcul de determinant (le calcul etant trop souvent mal conditionne).
La recherche de racines de polynomes est un exemple ou on peut gagner a utiliser du calcul exact, via l'isolation de racines (suites de Sturm ou algorithme d'isolation de Vincent-Akritas) puis la dichotomie. En particulier s'il y a des racines proches. Meme la methode de Newton peut y gagner, parce que quand on s'approche de la racine, il y a forcement une compensation de flottants qui rend impossible de calculer en grande precision, on peut alors calculer en exact la valeur de f(x) puis l'arrondir.
La geometrie est aussi un domaine ou le calcul exact permet de donner des preuves de theoreme alors que le calcul approche ne permet que des conjectures.
Mais evidemment, l'interet du calcul formel est surtout intrinseque (et c'est probablement aussi pourquoi il a tant de mal a etre aime par beaucoup d'enseignants de maths)

Alek
Messages : 111
Inscription : jeu. oct. 28, 2010 1:20 pm

Re: calcul formel

Message par Alek » ven. janv. 11, 2013 6:01 pm

Merci pour vos suggestions !
Entre temps, j'ai trouvé encore un exemple assez élémentaire (mais il me semble quelque peu académique) :

Code : Tout sélectionner

u := [11/2, 61/11]:;
pour n de 1 jusque 40 faire
  u := append(u, 111 - 1130/u[n] + 3000 / ( u[n] * u[n-1]))
fpour:;
listplot(u)
La suite converge vers 6 (c'est un point fixe).
Mais si on commence avec
u := evalf([11/2, 61/11])
la suite trouve une autre limite (100, un autre point fixe).
Si on augmente la précision, la suite bascule vers l'autre point fixe plus tard (or le calcul exacte reste stable et efficace).

A.

Répondre