1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.

Q BASIC problème très élémentaire

Discussion dans 'Informatique' créé par AVN, 29 Août 2011.

  1. AVN

    AVN Ouvrier

    Messages:
    393
    Inscrit:
    19 Décembre 2009
    Localité:
    89 sud
    Q BASIC problème très élémentaire
    Bonjour
    Je sèche sur un problème sans aucun doute très élémentaire de programmation que je saurais régler sur ma HP 41 si elle fonctionnait encore mais d'abord est-ce une question correspondant à la rubrique?
    Si c'est non, on passe; si c'est oui ou peut être voici la question:
    Si on considère une courbe, telle une courbe en cloche, comment écrire le programme qui permet de trouver l'abscisse correspondant à l'ordonnée maximale et ce , en partant disons de la gauche de la figure et en prenant des valeurs d'abscisses croissantes? L'ordonnée maximale est à environ 55% de l'abscisse zéro.
    Je peux développer pour ceux qui seraient éventuellement intéressés (il s'agit d'un programme de calcul de balistique personnel assez original mais pas du tout confidentiel) et le faire sur le site (pas forcément facile) mais aussi en MP ou mail direct; c'est un truc qu'on ne trouve pas exactement dans les livres.
    Le Basic en question est le vieux QBasic de Microsoft (avec Windows 98 "Oldtools") mais qui tourne bien sur XP.
     
  2. jcma

    jcma Compagnon

    Messages:
    1 658
    Inscrit:
    2 Novembre 2008
    Localité:
    Mulhouse - Haut-Rhin
    Q BASIC problème très élémentaire
    Bonjour,

    As-tu l'équation de ta courbe ?
    Si oui, tu peut calculer la dérivée et chercher la valeur qui annule cette dérivée. Cela te donne le point d'inflexion sur la courbe.
    Exemple avec la courbe d'une trajectoire dans le vide (parabole):
    h = V*t*sin(alpha)-(1/2)*g*t^2
    la derivée est : h' = sin(alpha)*V-g*t qui s'annule pour t = (sin(alpha)*V)/g
    En remplaçant t dans l'équation d'origine, la hauteur maxi est donc hmax = (sin(alpha)^2*V^2)/(2*g)

    Si tu n'a pas l'équation ou si elle est trop compliquée a dériver, tu peut utiliser la même méthode en cherchant ou se trouve un accroissement de hauteur = 0 (En ce point la dérivée est (h2-h1)/(t2-t1) et est égale a 0).

    Il existe aussi des méthodes d'analyse numérique pour résoudre ce genre d'équation (Runge-Kutta par exemple), il faudrais voir si c'est applicable a ta courbe.

    @+
    Jean-Charles
     
  3. f6tem

    f6tem Ouvrier

    Messages:
    466
    Inscrit:
    16 Février 2011
    Q BASIC problème très élémentaire
    Bjr Souvenirs...:wink:
    je suppose qu'il s'agit d'une distribution gaussienne.
    qqs pages peut-être utiles même si elles ne répondent pas directement (mais presque ...test à la valeur max et extraction des coordonnées) à la question ...cordialement jacques Voir la pièce jointe plot.pdf
     
  4. AVN

    AVN Ouvrier

    Messages:
    393
    Inscrit:
    19 Décembre 2009
    Localité:
    89 sud
    Q BASIC problème très élémentaire
    Merci pour ces deux premières réponses.
    Je vais rédiger une petite note manuscrite à scanner résumant le problème et son contexte. La solution dérivée fonctionne mais suppose la connaissance de l'équation de la courbe et ce n'est pas le cas pour une solution générale du problème à résoudre. Je pense que la note sera plus explicite. A tout à l'heure.
     
  5. AVN

    AVN Ouvrier

    Messages:
    393
    Inscrit:
    19 Décembre 2009
    Localité:
    89 sud
    Q BASIC problème très élémentaire
    Complément d'information.
    Le cas avec connaissance de l'équation de R (voir figure) est secondaire et effectivement soluble par annulation de la dérivée mais ce qui me soucie est la boucle Basic. Je calcule une valeur de F, j'augmente mon abscisse de 0.5%, j'ai un autre F plus grand et je poursuis jusqu'à la valeur maxi de F et là, je dois m'arrêter à ce L maxi. Pour le moment je ne sais pas le faire et vos conseils seront les bienvenus. J'offrirai volontiers une copie du programme de calcul terminé à qui me permettra de résoudre l'énigme..

    Basic DRO.jpg
     
  6. Nikass

    Nikass Modérateur

    Messages:
    2 359
    Inscrit:
    24 Mars 2009
    Localité:
    Montpellier
    Q BASIC problème très élémentaire
    Salut,

    On est bien d'accord que tu as au moins un nombre fini de couples (x,y) représentant des points de ta courbe ?

    Et pourquoi tu fais pas tout bêtement une dérivée discrète ? tu fais (delta Y/delta X) pour les points Xn et Xn+1 en augmentant n, partant de zero. Pendant un moment, ca va être positif et un jour ça devient nul ou négatif; la valeur de n à ce moment te donne le couple (et donc le x) de ce que tu cherches.

    Ou alors, j'ai rien compris au problème !!

    a+
     
  7. pascalp

    pascalp Compagnon

    Messages:
    939
    Inscrit:
    30 Août 2007
    Localité:
    Agen, Sud-Ouest
    Q BASIC problème très élémentaire
    Malgré toutes tes explications je ne suis pas sur d'avoir compris la nécessité de "s'arrêter" dès que le sommet est trouvé !

    Pour faire simple et avec seulement une itération de plus que le maxi réel.

    Incrément=0
    Boucle
    Tu incrémentes.
    Tu calcules
    Tu compares à la valeur précédemment stockée
    . Si le valeur actuelle est supérieur à l'ancienne, tu stock la valeur et l'incrément et tu boucles.
    . Si la valeur est inférieur (maxi dépassé) La valeur stockée est le maxi et tu sors de la boucle.
    FinBoucle

    Je te laisses coder !
     
  8. Nikass

    Nikass Modérateur

    Messages:
    2 359
    Inscrit:
    24 Mars 2009
    Localité:
    Montpellier
    Q BASIC problème très élémentaire
    Salut,

    Bah oui, si t'es sur que c'est une vraie cloche (un et un seul maxi, j'ai pas tout lu) c'est le plus simple :)

    a+
     
  9. jcma

    jcma Compagnon

    Messages:
    1 658
    Inscrit:
    2 Novembre 2008
    Localité:
    Mulhouse - Haut-Rhin
    Q BASIC problème très élémentaire
    Bonjour,

    Si j'ai bien compris ton enoncé, tu cherche la valeur Fc maximum pour arreter la boucle.
    Avant de calculer une nouvelle valeur Fc, tu stocke l'ancienne valeur dans une variable (A initialiser a 0 pour le premier tour).
    si (Fc - ancienFc) < 0 ou Fc > ancienFc il faut continuer la boucle, donc pour l'arreter il faut que : (Fc - ancienFc) >= 0 et Fc <= ancienFc

    @+
    Jean-Charles
     
  10. pascalp

    pascalp Compagnon

    Messages:
    939
    Inscrit:
    30 Août 2007
    Localité:
    Agen, Sud-Ouest
    Q BASIC problème très élémentaire
    Nikass,
    Dans une courbe balistique terrestre, il y a rarement plus d'un sommet (contrairement à ce que semble croire certains tireurs).
     
  11. AVN

    AVN Ouvrier

    Messages:
    393
    Inscrit:
    19 Décembre 2009
    Localité:
    89 sud
    Q BASIC problème très élémentaire
    Si j'en juge par vos contributions -dont je vous remercie-,il semblerait que je ne sois pas meilleur en donneur d'explications qu'en programmation donc, je reprends.
    Oublions d'abord tout calcul conduisant à une dérivation de fonction (celle de trajectoire en rouge) car cela implique un ajustement de courbes préalable sur des valeurs à bases expérimentales, c'est un aspect indirect de ma manoeuvre mais pas celui qui me préoccupe.
    Mon schéma est celui d'une trajectoire avec une base horizontale, une ligne de projection (du projectile),une ligne de visée à 5 cm au dessus de la base, une trajectoire en rouge qui coupe la visée en 2 points et rejoint la trajectoire au point de but. La retombée est la chute due à la gravité, proportionnelle au carré du temps de vol; un logiciel de balistique m'en donne la valeur en fonction de la distance ceci pour un unique couple de vitesse initiale et de coefficient balistique. Ceci est le décor.
    Ce que je veux obtenir et connaître à disons mieux si possible que + ou - 1 m , par des approximations successives, en accroissant d'une petite fraction (0.5%) la variable longueur Lc, c'est la valeur de cette longueur quand la flèche atteint sa valeur maximale. C'est tout.
    Je rappelle que je sais calculer ces valeurs de flèche en fonction de Lc mais ayant en mains la valeur F1 correspondant à la longueur (ou distance) Lc1, je ne sais pas la stocker pour pouvoir la comparer avec la valeur F2 correspondant à la distance Lc2.
    Je sais que ma question est de bas niveau en matière de Basic et je comprendrais qu'elle soit traitée avec une certaine condescendance: passer pour un ignorant est peu important si le problème est résolu.
    PS: ne me dites pas d'aller sur un Forum spécialisé, ces questions n'y intéressent personne.
     
  12. Nikass

    Nikass Modérateur

    Messages:
    2 359
    Inscrit:
    24 Mars 2009
    Localité:
    Montpellier
    Q BASIC problème très élémentaire
    :smt003 :smt003 :smt003

    Ca, je sais bien ! mais selon comment il écrit son programme, il a un truc spécifique ou quelque chose de plus général. C'est tout :)

    Et si c'est un missile de croisière hein :nawak:

    a+
     
  13. Nikass

    Nikass Modérateur

    Messages:
    2 359
    Inscrit:
    24 Mars 2009
    Localité:
    Montpellier
    Q BASIC problème très élémentaire
    Bon, cela dit je ne suis pas le seul à n'avoir rien compris.

    Tu peux nous réexpliquer ca en termes de maths ? Tu supposes tes fonctions connues, tu nous écris la contrainte qui définit l'équation à résoudre et on te dit comment faire en algorithme discrétisé ?

    (punaise, je me suis rouillé depuis Maths Spé moi grrrr)

    a+
     
  14. pascalp

    pascalp Compagnon

    Messages:
    939
    Inscrit:
    30 Août 2007
    Localité:
    Agen, Sud-Ouest
  15. Nikass

    Nikass Modérateur

    Messages:
    2 359
    Inscrit:
    24 Mars 2009
    Localité:
    Montpellier
    Q BASIC problème très élémentaire
    D'ailleurs il y avait marqué :nawak:

    :mrgreen:

    a+
     
Chargement...
Articles en relation
  1. Num
    Réponses:
    12
    Affichages:
    403
  2. Num
    Réponses:
    23
    Affichages:
    2 478
  3. v tec
    Réponses:
    4
    Affichages:
    145
  4. chabercha
    Réponses:
    39
    Affichages:
    985
  5. AVN
    Réponses:
    8
    Affichages:
    599

Partager cette page