Posté le 31/07/2014 18:39
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 310 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
Citer : Posté le 02/08/2014 11:13 | #
Donc comment puis je faire pour avoir les racines de la dérivée d'une fonction en utilisant SolveN( et d/dx( dans le mode RUN ou PROG ?
Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
Tableau de variations
Equations Diophantiennes
Conversion d'un nombre décimal en fraction
Citer : Posté le 02/08/2014 14:00 | #
Faire de la dichotomie avec d/dx : tu cherche les valeurs de x telles que d(f(x))/dx = 0 : tu commence à un intervalle assez grand (donné par l'utilisateur par exemple), pour lequel tu détermine les valeurs de d(f(x))/dx suivant les valeurs de X :
Exemple avec f(x) = x^2 + 3x (donc f'(x) = 2x + 3)
Intervalle de début : [-100;100]
1) f'(-100) = -197 : f'(0) = 3 : f'(100) = 203 La racine se trouve donc entre -100 et 0
2) f'(-100) = -197 : f'(-50) = -97 : f'(0) = 3 La racine se trouve donc entre -50 et 0
3) On continue selon de principe de la dichotomie
Le seul problème avec cette méthode, c'est que ça ne fonctionne que sur des intervalles où f'(x) est monotone... Donc il te faudra analyser la fonction pour la découper en plusieurs intervalles
Citer : Posté le 02/08/2014 15:46 | #
merci !! tu m'aide grandement !! C'est super sympa de ta part !! je te dis si ça marche bien
Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
Tableau de variations
Equations Diophantiennes
Conversion d'un nombre décimal en fraction
Citer : Posté le 02/08/2014 17:56 | #
que sur des intervalles où f'(x) est monotone...
Ouais, donc ça ne sert pas tant que ça...
On peut toujours calculer la dérivée à plein de points et chercher les racines, mais ça va faire pas mal de calculs...
Timeless Remix
Super Run & Jump
Timeless
Les tests vidéo de Marmotti
Timeless Remix Airwolf
Citer : Posté le 02/08/2014 17:59 | #
C'est ce que j'allais dire à Dark Storm, ça ne marche que pour les polynômes du second degré
Quelle technique pourrait être utilisée ? j'ai essayé plein de truc mais ça bug toujours pour un oui ou pour un non ...
Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
Tableau de variations
Equations Diophantiennes
Conversion d'un nombre décimal en fraction
Citer : Posté le 02/08/2014 18:10 | #
Je pense que le mieux ce serait l'échantillonnage.
Tu testes sur un nombre donné (paramétrable) de points, sur l'intervalle de définition. Tu déduis les racines par théorème des valeurs intermédiaires (si bien sûr la fonction est continue partout), quand le signe de la dérivée s'inverse entre deux points, puis tu testes le signe de f ' en un seul point entre deux racines, et hop tu as les variations!
Timeless Remix
Super Run & Jump
Timeless
Les tests vidéo de Marmotti
Timeless Remix Airwolf
Citer : Posté le 02/08/2014 18:12 | #
hum tu peux détailler avec un peu de code histoire que je vois vraiment comment tu veux faire parce que je ne comprends pas bien ce que je dois faire là : "Tu testes sur un nombre donné (paramétrable) de points, sur l'intervalle de définition. Tu déduis les racines par théorème des valeurs intermédiaires (si bien sûr la fonction est continue partout)"
Merci pour ton aide
je vais tester et je te dirais MERCI pour ton aide !!
Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
Tableau de variations
Equations Diophantiennes
Conversion d'un nombre décimal en fraction
Citer : Posté le 02/08/2014 18:34 | #
Bon, tu fais une boucle For, en retenant le signe du précédent à chaque fois, et quand ça change tu sais qu'il y a une racine là!
Comment comptes-tu stocker les racines? Dans une liste je pense. Voilà une esquisse de code:
[gray]"Borne min"[/gray]?[b]->[/b]U
[gray]"Borne max"[/gray]?[b]->[/b]V
[gray]"Racines"[/gray][b]->[/b] List [maroon]1[/maroon][0]
0[b]->[/b]D
Abs (U-V)/1000 [b]->[/b] N
d/dx(fn1(X),U)[b]->[/b]A
[b][blue]If[/blue][/b] A<>0: [b][blue]Then[/blue][/b] A/Abs A [b]->[/b] B
[b][blue]Else[/blue][/b] D+1[b]->[/b]D
U [b]->[/b] List [maroon]1[/maroon][D]
[b][blue]IfEnd[/blue][/b]
[b][blue]For[/blue][/b] U+N[b]->[/b]W [b][blue]To[/blue][/b] V [b][blue]Step[/blue][/b] N
d/dx(fn1(X),W)[b]->[/b]A
[b][blue]If[/blue][/b] A<>0: [b][blue]Then[/blue][/b] A/Abs A [b]->[/b] C: [b][blue]IfEnd[/blue][/b]
[b][blue]If[/blue][/b] C<B: [b][blue]Then[/blue][/b] D+1 [b]->[/b] D
W [b]->[/b] List [maroon]1[/maroon][D]
[green]'Racine entre W-N et W[/green]
[b][blue]IfEnd[/blue][/b]
C [b]->[/b] B
[b][blue]Next[/blue][/b]
[green]'Test des variations[/green]
[b][blue]For[/blue][/b] [maroon]1[/maroon][b]->[/b]I [b][blue]To[/blue][/b] D
List [maroon]1[/maroon][I]-N [b]->[/b] W
d/dx(fn1(X),W)[b]->[/b]A
[green]'Variation sur le segment = Signe de A[/green]
[b][blue]Next[/blue][/b]
En gros c'est un truc comme ça... J'ai fait ça vite fait.
En prenant N suffisamment petit, on a les variations correctes. (Quand N tend vers 0 c'est vrai, par définition de continuité)
(j'abuse un peu en parlant de "racines", ce ne sont que des zéros... Les racines c'est pour les polynômes... )
Timeless Remix
Super Run & Jump
Timeless
Les tests vidéo de Marmotti
Timeless Remix Airwolf
Citer : Posté le 02/08/2014 19:02 | #
Merci beaucoup j avais compris le principe mais je n avais aucune idee de comment bien le formuler en basic grace a toi c est chose faite, je vais etudier ton code en detail pour en saiair toutes les subtilites
Un grand MERCI encore
PS: desole pour la ponctuation, j ai un clavier americain en ce moment
Ajouté le 02/08/2014 à 20:26 :
J'ai fait de nombreux test mais je n'ai que rarement un résultat correct pour les "racines" de la dérivée, je ne comprends pas d'où peut venir le problème ...
En reprenant l'exemple de la fonction f(x)=x^3-x je n'obtiens que -0,57 qui n'est que la valeur approchée de la première racine, la deuxième n'est pas donnée (0,57)
Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
Tableau de variations
Equations Diophantiennes
Conversion d'un nombre décimal en fraction
Citer : Posté le 02/08/2014 20:52 | #
Eh bien tu n'as qu'à stocker toutes les valeurs de dérivée calculer, et voir où est-ce que ça plante!
Il faut bien que la dérivée change de signe à un moment...
Au fait j'ai oublié de traiter le cas A=0 dans la boucle For, il faut le traiter comme le cas avant la boucle.
Timeless Remix
Super Run & Jump
Timeless
Les tests vidéo de Marmotti
Timeless Remix Airwolf
Citer : Posté le 03/08/2014 10:39 | #
J'ai testé ton programme avec le cas A=0 en plus ainsi que 2 programmes de mon cru utilisant d'autres méthodes mais le problème auquel je me confronte est le suivant : aucun des programmes ne donne TOUTES les "racines" sur les intervalles et leur durée d'exécution est énorme (2-3 min) !!
Je vais donc traduire en basic CASIO la partie du programme tabzz qui cherche les "racines" de la dérivée (programme qui a été crée pour Ti 82/83) car il trouve toutes les "racines" des dérivées sur l'intervalle [-50;50] en moins de 10 secondes
Si ça ne marche pas, je chercherais autre chose, mais ton programme Alex_1186 est le plus prometteur, merci encore pour ton aide !!!
Ajouté le 03/08/2014 à 11:50 :
J'ai ça maintenant mais il doit y avoir des erreurs Est ce que quelqu'un peut regarder et corriger s'il a le temps ? MERCI
Str1[b]->[/b]Y1
ClrHome
[red]Lbl[/red] [maroon]1[/maroon]
0[b]->[/b]Y
Fix [maroon]2[/maroon]
1[b]->[/b]dim(List [maroon]4[/maroon])
0.111[b]->[/b]List [maroon]4[/maroon][1]
5[b]->[/b]dim(List [maroon]1[/maroon])
Fill(0.111,List [maroon]1[/maroon])
1[b]->[/b]C
ClrHome
Menu([gray]" INTERVAL ?? ","R",Z,"DEFINIR",Y,"RETOUR"[/gray],[maroon]2[/maroon])
[red]Lbl[/red] Z
-50[b]->[/b]A
50[b]->[/b]B
[b][brown]locate[/brown][/b](2,[maroon]1[/maroon],[gray]"[df]=R"[/gray]
[red]Goto[/red] X
[red]Lbl[/red] Y
[gray]"INTERVAL [A,B] ?"[/gray]
[gray]"A ? "[/gray]?[b]->[/b]A
[gray]"B ? "[/gray]?[b]->[/b]B
DelVar F
[b][blue]If[/blue][/b] A<-50:-50[b]->[/b]A
[b][blue]If[/blue][/b] B>50:50[b]->[/b]B
[red]Lbl[/red] X
A[b]->[/b]X
A[b]->[/b]V
d/dx(Y1,X,A)[b]->[/b]F
[red]Lbl[/red] theta
X[b]->[/b]A
Fix [maroon]0[/maroon]
[b][brown]Locate[/brown][/b](3,[maroon]1[/maroon],"SCAN DE F(X)...
[b][brown]Locate[/brown][/b](5,[maroon]1[/maroon],C-1
[b][brown]Locate[/brown][/b](5,[maroon]4[/maroon],"EXTREMUMS
Fix [maroon]2[/maroon]
[b][blue]For[/blue][/b](X,A,B+1,[maroon]1[/maroon]
d/dx(Y1,X,X+0.0001)[b]->[/b]E
[b][blue]If[/blue][/b] E>=[maroon]0[/maroon] and F<0
[red]Goto[/red] C
[b][blue]If[/blue][/b] E<0 and F>=[maroon]0[/maroon]
[red]Goto[/red] C
E[b]->[/b]F
End
[red]Goto[/red] A
[red]Lbl[/red] C
X[b]->[/b]H
[b][blue]For[/blue][/b](X,H-1,H,[maroon]0[/maroon].01
d/dx(Y1,X,X+0.00001)[b]->[/b]D
[b][blue]If[/blue][/b] D<=O and D>=-O
[b][blue]Then[/blue][/b]
0.01[b]->[/b]O
X[b]->[/b]List [maroon]1[/maroon][C]
C+1[b]->[/b]C
H+1.1[b]->[/b]X
d/dx(Y1,X,H+0.00001)[b]->[/b]F
[red]Goto[/red] theta
End
End
5O[b]->[/b]O
[red]Goto[/red] C
[red]Lbl[/red] A
Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
Tableau de variations
Equations Diophantiennes
Conversion d'un nombre décimal en fraction
Citer : Posté le 03/08/2014 11:59 | #
Là t'as vraiment l'impression d'avoir tout traduit en Basic Casio ?
Locate il y a pas de parenthèse, ClrHome c'est ClrText, Delvar n'existe pas, il y a pas de parenthèse à Dim (et il faut une majuscule), il faut un Then après les if et un ifEnd, où alors tu utilise la double fleche, le For c'est pas comme ça, il faut utiliser To et Step
Et aussi, c'est pas une erreur, mais "D<=O and D>=-O", tu peux remplacer par Abs D <= O
Ajouté le 03/08/2014 à 12:01 :
Et aussi ta première ligne vuet rien dire, tu dois mettre "Fonction "?->Str 1
Tu pourrai quand même vérifier un petit peu sur ta calto
Citer : Posté le 04/08/2014 18:33 | #
Tu as raison, je suis vraiment désolé j'ai fait ça à la va vite...
J'ai corrigé, je pense que maintenant ça marchera, est ce que quelqu'un peut regarder ?
Merci
Str1→Y1
ClrText
Lbl 1
0→Y
Fix 2
1→Dim List 4
0.111→List 4[1]
5→Dim List 1
Fill(0.111,List 1)
1→C
ClrText
Menu(" INTERVAL ?? ","R",Z,"DEFINIR",Y,"RETOUR",2)
Lbl Z
-50→A
50→B
locate 2,1,"[df]=R"
Goto X
Lbl Y
"INTERVAL [A,B] ?"
"A ? "?→A
"B ? "?→B
If A<-50
Then
-50→A
IfEnd
If B>50
Then
50→B
IfEnd
Lbl X
A→X
A→V
d/dx(Y1,X,A)→F
Lbl theta
X→A
Fix 0
Locate 3,1,"SCAN DE F(X)...
Locate 5,1,C-1
Locate 5,4,"EXTREMUMS
Fix 2
For A->X To B+1
d/dx(Y1,X,X+0.0001)→E
If E >=0 and F<0
Then
Goto C
IfEnd
If E<0 and F >=0
Then
Goto C
IfEnd
E→F
Next
Goto A
Lbl C
X→H
For H-1->X To H Step 0.01
d/dx(Y1,X,X+0.00001)→D
If Abs D=<O
Then
0.01→O
X→List 1[C]
C+1→C
H+1.1→X
d/dx(Y1,X,H+0.00001)→F
Goto theta
IfEnd
Next
5*O→O
Goto C
Lbl A
Ajouté le 05/08/2014 à 13:44 :
Salut, j'ai un problème dans mon code (ci-dessus) au niveau de Menu( ... je sais que c'est faut mais je ne sais pas par quoi le remplacer pour que le programme puisse fonctionner correctement ...
Merci pour votre aide !!
Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
Tableau de variations
Equations Diophantiennes
Conversion d'un nombre décimal en fraction
Citer : Posté le 06/08/2014 17:25 | #
Tu peux aller voir par ici je pense.
Après pour tester le mieux est de lancer sur ta machine :p.
Citer : Posté le 06/08/2014 17:31 | #
Merci mais j'ai trouvé tout seul je poste un nouveau sujet !!
Je suis fan de Mathématiques et de Sciences en général (d'où mon nom ). Consultez mes programmes en rapport avec les Maths
Tableau de variations
Equations Diophantiennes
Conversion d'un nombre décimal en fraction