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

A

AVN

Ouvrier
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.
 
J

jcma

Compagnon
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
 
M

met6f

Guest
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
 
A

AVN

Ouvrier
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.
 
A

AVN

Ouvrier
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
 
N

Nikass

Compagnon
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+
 
P

pascalp

Compagnon
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 !
 
N

Nikass

Compagnon
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+
 
J

jcma

Compagnon
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
 
P

pascalp

Compagnon
Nikass,
Dans une courbe balistique terrestre, il y a rarement plus d'un sommet (contrairement à ce que semble croire certains tireurs).
 
A

AVN

Ouvrier
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.
 
N

Nikass

Compagnon
pascalp a dit:
Nikass,
Dans une courbe balistique terrestre, il y a rarement plus d'un sommet (contrairement à ce que semble croire certains tireurs).

: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+
 
N

Nikass

Compagnon
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+
 
P

pascalp

Compagnon
Si il est en phase propulsé, il n'est pas en trajectoire balistique.
 
J

jcma

Compagnon
Re,

C'est peut-etre ceci que tu veut. J'espere ne pas m'être planté dans la syntaxe, le quick basic c'est tres loin.

FTEST = 0
L = 0
DELTA = L0 * 0.05

REFAIRE:
calcul de R
calcul de F

IF ((F - FTEST) < 0) OR (F > FTEST) THEN
FTEST = F
L = L + DELTA
GOTO REFAIRE
END IF
' L a été trouvé

@+
Jean-Charles
 

Sujets similaires

Dudulle
Général langage MMBASIC
Réponses
8
Affichages
840
Dudulle
Dudulle
D
Réponses
0
Affichages
218
dodochef
D
Y
Réponses
16
Affichages
1 260
yo35000
Y
alex vintage parts
Réponses
15
Affichages
814
alex vintage parts
alex vintage parts
T
Réponses
8
Affichages
1 038
greg_elec
greg_elec
J
Réponses
13
Affichages
1 563
Jeannotv6
J
Y
Réponses
1
Affichages
715
Doctor_itchy
D
C
Réponses
0
Affichages
3 466
caramel
C
A
Réponses
3
Affichages
1 615
titi t16
titi t16
L
Réponses
15
Affichages
1 354
Remyje66
R
P
Réponses
33
Affichages
16 004
wika58
wika58
Haut