Accueil Ti-Gen Foire Aux Questions Chat sur le chan #tigcc sur IRC
Liste des membres Rechercher Aide
Bienvenue Invité !   Se connecter             Mes sujets   
Administrer
0 membre(s) et 1 visiteur(s) actif(s) durant les 5 dernières minutes Utilisateurs actifs : Aucun membre + 1 visiteur
Avant de poster sur le forum, il y a des régles de bases à respecter pour une bonne entente et un respect de tous.
Veuillez lire la charte du forum.
  :: Index » Forum Ti68K » Programmation TI-Basic » fonction de newton (20 réponse(s))
./POST DE DEPART (post n°0)   Marquer comme non lu.
collinm Ecrit le: Vendredi 15 juillet 2005 à 04:34 Déconnecté(e)    Voir le profil de collinm Envoyer un email à collinm Visiter le site WEB de collinm Envoyer un message privé à collinm  

salut

jais le code suivant dans ma ti:


newton(a,to,trop)
func
local m,xn
0->m:0->xn
loop
    m+1->m
    if(d(f(x),x)|x=a)=0 then @@@@@
        exit
    else
        a-f(a)/d(f(x),x)|x=a)->xn
        if m>= trop or abs(xn-a)<tol
            exit
        endif
    xn->a
endloop
if (d(f(x),x|x=a)=0 then
    "la methode echoue"
else
    {m,xn}
endif
endfunc

si je fais:

newton(3*x,x,4)

j'obtient

a test did not resolve to true or false

et ça m'amène à la ligne @@@@@


une idée?
www.laboiteaprog.com
    
./Post n°1   Marquer comme non lu.
Kevin Kofler Ecrit le: Vendredi 15 juillet 2005 à 04:47 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


f(x) n'est défini nulle part dans ton code.
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°2   Marquer comme non lu.
collinm Ecrit le: Vendredi 15 juillet 2005 à 05:39 Déconnecté(e)    Voir le profil de collinm Envoyer un email à collinm Visiter le site WEB de collinm Envoyer un message privé à collinm  

je remplace x par a
www.laboiteaprog.com
    
./Post n°3   Marquer comme non lu.
RHJPP Ecrit le: Vendredi 15 juillet 2005 à 11:15 Déconnecté(e)    Voir le profil de RHJPP Envoyer un email à RHJPP Envoyer un message privé à RHJPP  


Non c'est la fonction f qui n'existe pas
    
./Post n°4   Marquer comme non lu.
collinm Ecrit le: Samedi 16 juillet 2005 à 00:15 Déconnecté(e)    Voir le profil de collinm Envoyer un email à collinm Visiter le site WEB de collinm Envoyer un message privé à collinm  

en gros je veux faire comme: http://lumimath.univ-mrs.fr/~jlm/cours/analnum/node3.html

comme paramètre f(x), x0 (approximation initiale), n n'ombre d'itération


 

 newton(f(x),x0,n)
 func
 local m,xn
 0->m:0->xn
 loop
     m+1->m
     if d(f(x),x)=0 then
         exit
     else
         x-f(x)/d(f(x),x)->xn
         if m>=n trop or abs(xn-a)<x0
             exit
         endif
     xn->a
 endloop
 if  d(f(x),x)=0 then
     "la methode echoue"
 else
     {m,xn}
 endif
 endfunc


j'ai l'erreur:

Error: Argument must be a variable name
www.laboiteaprog.com
    
./Post n°5   Marquer comme non lu.
Folco Ecrit le: Samedi 16 juillet 2005 à 00:47 Déconnecté(e)    Voir le profil de Folco Envoyer un email à Folco Envoyer un message privé à Folco  


à quelle ligne?
edit-> commence à ce moment là par détruire tes variables de a à z.
-Edité le Samedi 16 juillet 2005 à 00:47 par Martial Demolins-
<<< Kernel Extremist©®™ >>>
Pas la peine d'aller là plus d'une fois tous les six mois...

"Il faut apprendre pour savoir qu'il faut apprendre pour savoir."
    
./Post n°6   Marquer comme non lu.
collinm Ecrit le: Samedi 16 juillet 2005 à 07:01 Déconnecté(e)    Voir le profil de collinm Envoyer un email à collinm Visiter le site WEB de collinm Envoyer un message privé à collinm  

si on regarde sur: http://www.bibmath.net/dico/index.php3?action=affiche&quoi=./n/newton_meth.html

ça serait la première formule (on le voit par le dessin)

c'est déjà fait
www.laboiteaprog.com
    
./Post n°7   Marquer comme non lu.
RHJPP Ecrit le: Samedi 16 juillet 2005 à 11:28 Déconnecté(e)    Voir le profil de RHJPP Envoyer un email à RHJPP Envoyer un message privé à RHJPP  


"f(x)" n'est pas un nom de variable en suite "d(f(x),x)=0" ne peut pas fonctionner.
    
./Post n°8   Marquer comme non lu.
collinm Ecrit le: Samedi 16 juillet 2005 à 23:47 Déconnecté(e)    Voir le profil de collinm Envoyer un email à collinm Visiter le site WEB de collinm Envoyer un message privé à collinm  

newton(3*x^2-x,1,3

newton(a,to,trop)
 func
 local f, m,xn
 0->m:0->xn
 a->f(x)
 loop
     m+1->m
     if(d(a,x)=0 then 
     exit
....

j'obtiens une erreur à la dérivé

a test did not resolve to true or false
www.laboiteaprog.com
    
./Post n°9   Marquer comme non lu.
RHJPP Ecrit le: Dimanche 17 juillet 2005 à 00:00 Déconnecté(e)    Voir le profil de RHJPP Envoyer un email à RHJPP Envoyer un message privé à RHJPP  


Normal, la dérivée de ta fonction dépend de x donc la calculatrice ne sait pas si ça fait 0 ou pas de plus il doit manquer ")".
Dans ta boucle rien ne dépend de m donc elle risque de ne jamais se terminer.

-Edité le Dimanche 17 juillet 2005 à 00:04 par Thepro-
    
./Post n°10   Marquer comme non lu.
collinm Ecrit le: Dimanche 17 juillet 2005 à 00:21 Déconnecté(e)    Voir le profil de collinm Envoyer un email à collinm Visiter le site WEB de collinm Envoyer un message privé à collinm  


newton(a,x0,n)
  func
  local f, m,xn
  0->m:0->xn
  a->f(x)
  loop
      m+1->m
      if(d(a,x)=0 then 
      exit
...


idem
www.laboiteaprog.com
    
./Post n°11   Marquer comme non lu.
RHJPP Ecrit le: Dimanche 17 juillet 2005 à 00:51 Déconnecté(e)    Voir le profil de RHJPP Envoyer un email à RHJPP Envoyer un message privé à RHJPP  


Regarde

"if(d(a,x)=0 then" ne peut pas fonctionner d(a,x)=a'(x) il y a toujours x qui est en trop
dans ton problème on utilise x=abscisse de la tangente (à l'ancien x) lorsque cette tangente coupe l'axe.
Il faut donc calculer cette tangent et son point d'intersection avec l'axe des abscisses.
    
./Post n°12   Marquer comme non lu.
collinm Ecrit le: Dimanche 17 juillet 2005 à 02:39 Déconnecté(e)    Voir le profil de collinm Envoyer un email à collinm Visiter le site WEB de collinm Envoyer un message privé à collinm  

pour le moment j'ai enlever le calcul de la dérivé 0... étant donné que ça cause problème...

j'ai fait un programme et la méthode de newton fonctionne j'ai fait la même chose avec une fonction.... et ça passe pu

le programme

ttt()
prgm
local f,m,xn,uu,n,x0
clrio
input "valeur ini", x0
x0->uu
1->
3->n
x^2-2->f(x)
loop
    uu-f(uu)/d(f(uu),uu))->xn
    if m>=n then
        exit
    endif
    xn->uu
    m+1->m
endloop
disp "nb ite: "&string(m),"
u(n)="&string(uu)
endprgm


j'obtient si je met 1 pour la valeur initiale:

nb ite: 3
u(n)=17/12

avec le programme

newton(x^2-2,1,3)

newton(a,x0,n)
func
clrio
local f,m,xn,uu
1->m
a->f(x)
x0->uu
loop
    uu-f(uu)/d(f(uu),uu))->xn
    if m>=n then
        exit
    endif
    xn->uu
    m+1->m
endloop
return uu
endfunc


j'obtient underf

une idée
www.laboiteaprog.com
    
./Post n°13   Marquer comme non lu.
Kevin Kofler Ecrit le: Dimanche 17 juillet 2005 à 04:37 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


a->f(x) ne fonctionnera pas, tu dois écrire expr(string(a)&"->f(x)").
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°14   Marquer comme non lu.
RHJPP Ecrit le: Dimanche 17 juillet 2005 à 13:51 Déconnecté(e)    Voir le profil de RHJPP Envoyer un email à RHJPP Envoyer un message privé à RHJPP  


Voilà ce que je ferais :

newton(a,xn,n)
Func
Local d,m
d(a,x)->d
0->m
While m<n
   xn-a/d|x=xn->xn
   m+1->m
EndWhile
Return xn
EndFunc

    
./Post n°15   Marquer comme non lu.
limmt Ecrit le: Dimanche 17 juillet 2005 à 19:19 Déconnecté(e)    Voir le profil de limmt Envoyer un email à limmt Visiter le site WEB de limmt Envoyer un message privé à limmt  


pour ton problème de if qui marche pas il faut mettre:
if d(a,x)=0 then
et non pas:
if(d(a,x)=0 then
http://www.falco-fr.com/ - http://www.jump67.com/ - http://www.msf-league.com/
    
./Post n°16   Marquer comme non lu.
RHJPP Ecrit le: Dimanche 17 juillet 2005 à 19:24 Déconnecté(e)    Voir le profil de RHJPP Envoyer un email à RHJPP Envoyer un message privé à RHJPP  


En fait limmt ya pas que ça comme problème
d(a,x) varie en fonction de x (généralement) donc on ne peut pas savoir si ça vaut 0
    
./Post n°17   Marquer comme non lu.
limmt Ecrit le: Dimanche 17 juillet 2005 à 22:32 Déconnecté(e)    Voir le profil de limmt Envoyer un email à limmt Visiter le site WEB de limmt Envoyer un message privé à limmt  


d(a,x) renverra une fonction qui peut etre nulle mais tu peut pas savoir si ca ser aégal a 0 apsque ca accepte aps la condition, tu peut tester avec des valeurs discrete smasi bon c'est aps bien comme méthode
http://www.falco-fr.com/ - http://www.jump67.com/ - http://www.msf-league.com/
    
./Post n°18   Marquer comme non lu.
Link Ecrit le: Dimanche 17 juillet 2005 à 23:16 Déconnecté(e)    Voir le profil de Link Envoyer un email à Link Visiter le site WEB de Link Envoyer un message privé à Link  

enfin, il peut toujours tester avec un when: si la fonction dépend de x, elle ne sera donc pas égale à zéro, donc:
if when(d(a, x)=0, true, false, false)  : exit

pourrait marcher.
Attention par contre, je ne vois pas trop si c'est la seule condition pour quitter la boucle, mais j'espère bien que non, car la dérivée d'un sinus ou d'un cos ne sera jamais nulle...
    
./Post n°19   Marquer comme non lu.
RHJPP Ecrit le: Dimanche 17 juillet 2005 à 23:28 Déconnecté(e)    Voir le profil de RHJPP Envoyer un email à RHJPP Envoyer un message privé à RHJPP  


De toute façon il n'a besoin que du nombre dérivé pas de la dérivée
    
  :: Index » Forum Ti68K » Programmation TI-Basic » fonction de newton (20 réponse(s))
Pages : 1/2     « [1] 2 » »|

.Répondre à ce sujet
Les boutons de code
[B]old[I]talic[U]nderline[S]trikethrough[L]ine Flip Hori[Z]ontallyFlip [V]erticallySha[D]ow[G]low[S]poilerCode [G][C]ite
Bullet [L]istList Item [K] Link [H][E]mail[P]icture SmileysHelp
Couleurs :
Saisissez votre message
Activer les smileys
     

Forum de Ti-Gen v3.0 Copyright ©2004 by Geoffrey ANNEHEIM
Webmaster: Kevin KOFLER, Content Admins: list, Server Admins: Tyler CASSIDY and Kevin KOFLER, DNS Admin: squalyl
Page générée en 49.52ms avec 18 requetes