Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » Programme Trigonometrie
Zancrow003 Hors ligne Membre Points: 24 Défis: 0 Message

Programme Trigonometrie

Posté le 10/11/2014 20:02

Bonjour a tous ,

je voulais savoir si il y'a pas un éventuel programme pour resoudre les equation du type sin a = sin b sur un intervalle.
Je pensais a faire une boucle avec la fonction solve ?

Merci de votre attention


1, 2 Suivante
-florian66- En ligne Ancien rédacteur Points: 2382 Défis: 20 Message

Citer : Posté le 10/11/2014 20:18 | #


Cherche sur le site tu trouveras peut être
In Arch, I trust ! And you ?
Zancrow003 Hors ligne Membre Points: 24 Défis: 0 Message

Citer : Posté le 10/11/2014 20:30 | #


j'ai cherche mais sans resultat convaincant ...
-florian66- En ligne Ancien rédacteur Points: 2382 Défis: 20 Message

Citer : Posté le 10/11/2014 20:31 | #


sinon la boucle for pour ton intervalle est une bonne idée
In Arch, I trust ! And you ?
Lephenixnoir En ligne Administrateur Points: 22755 Défis: 149 Message

Citer : Posté le 10/11/2014 20:42 | #


sin(a) = sin(b) ? Tu veux dire, a de R et b dans un intervalle normalisé (style -π/2;π/2) ?
Dans ce cas, tu peux facilement écrire le programme : il suffit de diminuer progressivement a jusqu'à ce qu'il soit entre 0 et π/2. Ensuite, tu as l'égalité sin(x) = sin(π-x) pour le ramener dans le "demi-intervalle".
Zancrow003 Hors ligne Membre Points: 24 Défis: 0 Message

Citer : Posté le 10/11/2014 21:15 | #


voila exactement ce que je pensais mais je bloque apres la declaration de variable ( boucle while ? ) mais y'a 2 solution a moduler non ?
Lephenixnoir En ligne Administrateur Points: 22755 Défis: 149 Message

Citer : Posté le 10/11/2014 21:23 | #


Ben, ça dépend de ton intervalle.
Prenons sur [-π/2;π/2] (une seule solution) ;
Étape 1 : récupérer a (juste a, pas le sinus) :
"a "?→A

Ensuite, ramener a dans [-π/2;3π/2] (il est forcément dedans). On commence par trouver s'il est avant ou après l'intervalle, et on utilise S comme signe :
While A<-π/2 Or A>3π/2
-1*(A<-π/2)+1*(A>3π/2)→S
A+2Sπ→A
WhileEnd

Maitenant, soit A est compris entre [-π/2;π/2] et on est content, soit il est entre [π/2;3π/2] et on ne l'est pas, donc on utilise l'autre formule :
If A>π/2
π-A→A
IfEnd

Et normalement c'est bon ! Je n'ai pas testé, mais ça devrait aller globalement.
Zancrow003 Hors ligne Membre Points: 24 Défis: 0 Message

Citer : Posté le 10/11/2014 21:29 | #


ah ok ... ca repose sur le meme principe que la dichotomie

je teste ca dans la soiree et je te tient au courant mais merci beaucoup

Ajouté le 10/11/2014 à 21:30 :
mais on peut pas l'étendre a un intervalle que l'on definit ?
Lephenixnoir En ligne Administrateur Points: 22755 Défis: 149 Message

Citer : Posté le 10/11/2014 21:30 | #


En fait non, parce que S est constant tout le long pour une même valeur de a.
Dans l'idéal, il faudrait calculer S une seule fois avant la boucle.

Ajouté le 10/11/2014 à 21:33 :
Si, on peut facilement l'étendre en modifiant les bornes que j'ai définies. Mais du coup, il peut y avoir plusieurs solutions !
J'ai pris [-π/2;π/2] parce que c'est le standard pour les sinus.

Sinon, je crois que tu as beaucoup plus simple pour ce cas particulier
arcsin sin A→A

Ça renvoie dans cet intervalle standard.
Zancrow003 Hors ligne Membre Points: 24 Défis: 0 Message

Citer : Posté le 10/11/2014 21:46 | #


je comprend plus rien la

1) on declare a et les bornes de I (x;y)
2) tant que arcsin a est inferieur a y et superieur a x on le fait moduler ? mais y'a 2 expression ?
Lephenixnoir En ligne Administrateur Points: 22755 Défis: 149 Message

Citer : Posté le 10/11/2014 21:52 | #


Non, rien à voir avec arcsin. x)

La commande suivante
arcsin sin A

renvoie l'unique b de [-π/2;π/2] tel que sin(a) = sin(b).
J'y ai pensé après coup, ça ne fonctionne que dans cet intervalle parce que c'est l'intervalle de calcul des sinus de la machine.
Zancrow003 Hors ligne Membre Points: 24 Défis: 0 Message

Citer : Posté le 10/11/2014 21:57 | #


Pourrais tu me le resumer en un programme stp ?
Totoyo Hors ligne Membre d'honneur Points: 16065 Défis: 102 Message

Citer : Posté le 10/11/2014 22:00 | #


Zancrow003 a écrit :
Pourrais tu me le resumer en un programme stp ?

Je traduis le sous-entendu : peux-tu me faire le programme stp ?

/ je sors
Zancrow003 Hors ligne Membre Points: 24 Défis: 0 Message

Citer : Posté le 10/11/2014 22:03 | #


Si c'est vraiment trop gros ne t'embete pas mais je suis pas un expert comme vous
-florian66- En ligne Ancien rédacteur Points: 2382 Défis: 20 Message

Citer : Posté le 11/11/2014 08:48 | #


Mais c'est assez simple à faire !! Lance-toi
In Arch, I trust ! And you ?
Lephenixnoir En ligne Administrateur Points: 22755 Défis: 149 Message

Citer : Posté le 11/11/2014 08:59 | #


Oui, essaye de l'écrire et dis-nous si tu n'y arrives pas, tu apprendras bien plus ainsi

Pour la deuxième méthode même pas besoin de programme !
Il suffit de taper, dans le menu RUN :
arcsin sin 370

Et il te donne la solution dans l'intervalle [-π/2;π/2].

Edit : Enfin, si t'es configuré en radians.
Zancrow003 Hors ligne Membre Points: 24 Défis: 0 Message

Citer : Posté le 11/11/2014 11:54 | #


on a sin a = sin b sur [X;Y]

"X=":?→X
"Y=":?→Y
"A=":?→A
"B=":?→B
A1→B
A2→B-π
While A1>X
A1→B+2π
WhileEnd

While A1<Y
A1→B-2π

De meme pour A2 et afficher les valeurs ?
Lephenixnoir En ligne Administrateur Points: 22755 Défis: 149 Message

Citer : Posté le 11/11/2014 12:05 | #


Quand tu veux ajouter du code dans un message, utilise la commande appropriée , c'est plus lisible.

Si tu prends sur [X;Y], tu peux avoir plusieurs solutions. Disons que le programme en donne une.
"X = "?→X
"Y = "?→Y
"A = "?→A

Faut surtout pas entrer B, puisqu'on le cherche ! Le but est justement de trouver un B appartenant à [X;Y] tel que sin(A) = sin(B).

On calcule le signe de la valeur à ajouter pour amener à dans l'intervalle [X;Y].
-(A<X)+(A≥Y)→S

Et ensuite, on ramène a dans l'intervalle. Et on fait bien attention, si on dépasse l'intervalle il n'y a pas de solution !
While A<X Or A≥Y
A+2Sπ→A
If (S=-1 And A≥Y) Or (S=1 And A<X)
Then "Pas de solution"
Stop
IfEnd
WhileEnd

Si par hasard A appartenait déjà à l'intervalle, rien ne s'est passé. Plus qu'à afficher la solution :
"Une solution est":A


Ajouté le 11/11/2014 à 12:08 :
Attention, le programme ici ne cherche que les solutions de type A+2kπ, il ignore celles de type π-(A+2kπ).
Zancrow003 Hors ligne Membre Points: 24 Défis: 0 Message

Citer : Posté le 11/11/2014 12:20 | #


mais le programme va trouver a et non b ?
pour trouver le b c'est else du 2e while ?
Lephenixnoir En ligne Administrateur Points: 22755 Défis: 149 Message

Citer : Posté le 11/11/2014 12:21 | #


En fait, je demande la valeur de A puis je la manipule, comme si pour résoudre une équation du premier degré je mettais -B/A dans A et non dans X : ça ne change rien vis-à-vis du programme.
La valeur que tu cherches est la valeur finale de A.
Zancrow003 Hors ligne Membre Points: 24 Défis: 0 Message

Citer : Posté le 11/11/2014 12:30 | #


mais y'aura qu'une seul valeur trouve pour trouver l'autre je rajoute π ?
1, 2 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2022 | Il y a 44 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd