somme d'inverse

Bonjour,

je dois déterminer des paramètres $(n_i)_{i=1 \dots N}$ avec $n_i$ des entiers relatifs qui vérifient :

$\sum_{i=1}^{N} \frac{1}{n_i}=\alpha \in \Q^+$

En fait, dans mon cas, $\alpha$ vaut $\frac{1}{2}$.

J'ai bien une méthode au cas par cas facilement appliccable pour $N$ petit. Je m'explique :

- Quand $N=1$, il est facile de savoir si il y a des solutions ou non à l'équation.

- Sinon, je suppose que $n_1$ est le plus petit entier positif. Alors, $n_1 \leq \alpha N$.

- je traite chaque cas un par un suivant le même principe appliqué à $|\alpha-\frac{1}{n_1}|$ avec $N-1$ termes. Suivant le signe de $\alpha-\frac{1}{n_1}$, j'en déduis toutes les solutions.

Ca marche mais même pour $N=3$, c'est déjà lourd. De plus, je vais devoir traiter le cas général. Je cherche donc un moyen de décrire toutes les solutions. Si vous avez quelques idées, je suis preneur.

Merci d'avance...@++

Réponses

  • Pour "alpha" = 1/2, la solution là n'est-elle pas correcte :

    1/2= N/2N = 1/2N + 1/2N+...+1/2N (N termes) qui est bien une somme de N inverses, valant 1/2 ?
    (sinon de manière plus globale, cela doit avoir quelque chose à voir avec les fractions égyptiennes).
  • Oui, bien sûr mais je cherche à déterminer ou décrire toutes les solutions.

    On a aussi : $(2,n,-n,n,-n,...,n,-n)$ quand $N$est impair et $(2,2n,2n,-n,n,-n,...n,-n)$ quand $N$ est pair plus grand que $4$.

    Merci...@++
  • La somme des inverses des diviseurs d'un entier parfait pair (excepté 1 et 2 ) est une solution au problème.
    Pour l'heure actuelle cela ferait 41 solutions.

    Mais je sais que je ne réponds pas complètement à votre problème.

    Amicalement.

    Vincent.
  • Merci, mais qu'elle est la démonstration?
  • Un entier n est parfait si la somme de ses diviseurs vaut son double.

    Il est aisé d'établir que la somme des inverses d'un tel nombre vaut 2 par une simple réduction au même dénominateur qui n'est autre que n.
    (essayez en quelques lignes c'est fait)

    Vincent.
  • Ok, merci. C'est vrai que c'est pas trop dur.

    @++
  • J'ai écrit un programme en MAPLE pour déterminer les solutions au problème.
    J'ai mis des symbole infini lorsque alpha vaut zéro car on a alors un nombre infini de solutions ou aucune. Mais il y a un bug.

    f:=proc(alpha,N) local B,n,C,v;
    B:={};
    if N=1 then
    if is(1/alpha,integer) then B:={[1/alpha]} else B:={}; fi:
    else
    n:=1;
    while n<=floor(N/alpha) do
    if alpha-(1/n) = 0 then B:={[n,seq(infty,k=1..N-1)]};
    else
    C:=f( abs(alpha-1/n) , N-1 );
    if alpha-1/n > 0
    then
    for v in C do
    B:=B union {[n,op(v)]};
    od:
    else
    for v in C do
    B:=B union {[n,op(-v)]};
    od:
    fi:
    fi:
    n:=n+1;
    od:
    fi:
    B;
    end;

    On a f(1/2,2)={[3,6],[4,4],[2,inf]}
    or, il manque [1,-2]

    Qu'en pensez vous?

    @++ et merci de votre attention...
  • Vu de loin l'algorithme n'a pas l'air idiot. Si le probleme vient de Maple, je ne peux rien faire (je n'ai meme pas reussi a faire de copier coller pour le faire tourner chez moi...). Que donne f(1/2,1) ? Personnellement j'essairai d'inverser les deux conditions (alpha-1/n positif/negatif) pour voir si ca change quelque chose, mais c'est juste parce que je ne comprend rien a Maple...

    Sinon, je profite de l'occasion pour te saluer (si je ne me trompe pas sur ton identite). Sauras-tu me reconnaitre?
  • Je connais plusieur à Lyon. Je vois pas. T'es qui?

    @++
  • Je voulais dire : je connais plusieurs personnes suceptibles d'être à Lyon.
  • Si tu fais des probas à Lyon, je dirais que tu t'appeles JB.
  • C'etait effectivement pas facile. Des indices que j'espere suffisants : on se connait de Kerichen et j'ai fait l'ENS Lyon.
  • J'avais deviné avant, en fait. Je me doutais bien que c'était toi et google m'a conforté dans cette idée.
    Je te salue donc à mon tour. Comment vas-tu? Ta thèse avance-t-elle?

    Je crois que c'est un gros bug de MAPLE. Pourtant, j'utilise MAPLE 9.
  • Je ne peux pas t'aider sur Maple, pour le reste je suis passe en mode "courier electronique".
  • <!--latex-->Quelques essais en Maple :
    <BR>J'ai remplace ton while par un for, ca ne change rien pour lui Maple.
    <BR>J'ai supprime les tests positifs/negatifs (le resultat n'est donc plus sense etre vrai qu'au signe pres) -> ca bugue toujours.
    <BR>La boucle for, je l'ai reduite, en faisant aller n de 1 jusqu'a 1. La il me donne la solution manquante (au signe pres).
    <BR>J'ai remis les tests positifs/negatifs et ce qui va avec; n variant toujours de 1 à 1. La, il ne me donne plus aucun resultat...
    <BR>
    <BR>Bref, utilise un autre logiciel...<BR>
  • f:=proc(alpha,N) local B,n,C,v;
    B:={};
    if N=1 then
    if is(1/alpha,integer) then B:={[1/alpha]} else B:={}; fi:
    else
    n:=1;
    while n<=floor(N/alpha) do
    if alpha-(1/n) = 0 then B:={[n,seq(infty,k=1..N-1)]};

    B:=B union {[n,seq(infty,k=1..N-1)]} me parait plus adapte... :-)
  • ok, ça à l'air d'être ça l'erreur.

    J'accélère l'algorithme en supposant que n est le plus petit des entiers. Ce qui me donne l'algo suivant :

    f:=proc(alpha,N,m) local B,n,C,v;
    B:={};
    if N=1 then
    if is(1/alpha,integer) then B:={[1/alpha]} else B:={}; fi:
    else
    n:=m;
    while n<=floor(N/alpha) do
    if alpha-(1/n) = 0 then B:=B union {[n,seq(infinity,k=1..N-1)]};
    else
    C:=f( abs(alpha-1/n) , N-1, n );
    if alpha-1/n > 0
    then
    for v in C do
    B:=B union {[n,op(v)]};
    od:
    else
    for v in C do
    B:=B union {[n,op(-v)]};
    od:
    fi:
    fi:
    n:=n+1;
    od:
    fi:
    B;
    end;

    il suffit d'appeler f(alpha,N,1) pour avoir les solutions.



    Merci bien...
  • En fait, l'algo précédent ne marche pas très bien. Il ne donne pas des solution du type : 1/5+1/5+1/5+1/5+1/5-1/4-1/4

    Je reprends tout de même l'idée initiale mais au lieu de 1 paramètre supplémentaire, j'en mets 2.
    m1 et m2 sont les plus petits entiers en valeurs absolus pouvant apparaître dans la décomposition : m1 pour les entiers positifs et m2 pour les négatifs.

    f:=proc(alpha,N,m1,m2) local B,n,C,v;
    B:={};
    if N=1 then
    if is(1/alpha,integer) then B:={[1/alpha]} else B:={}; fi:
    else
    n:=m1;
    while n<=floor(N/alpha) do
    if (alpha-(1/n) = 0) then if N<>2 then B:=B union {[n,seq(infinity,k=1..N-1)]}; fi:
    else
    if alpha-1/n > 0
    then
    C:=f(alpha-1/n , N-1, n,m2 );
    for v in C do
    B:=B union {[n,op(v)]};
    od:
    else
    C:=f(1/n-alpha , N-1, m2,n );
    for v in C do
    B:=B union {[n,op(-v)]};
    od:
    fi:
    fi:
    n:=n+1;
    od:
    fi:
    B;
    end;

    Voilou...@++
Connectez-vous ou Inscrivez-vous pour répondre.