Page 1 sur 1

Fonction Mathematica

Publié : 15 févr. 2010 20:54
par soxkite17
Voilà, j'aurai besoin de votre aide, en effet, mon professeur m'a demandé de rédiger une fonction en Mathematica prenant deux arguments t et q et donnant le premier entier naturel n tel que (/t/^(2n+3) / (2n+3)) =< 10^-q =< inférieur ou égal
/t/ valeur absolue de t


Si quelqu'un peut me donner car je ne vois pas du tout comment faire...

Re: Fonction Mathematica

Publié : 15 févr. 2010 21:01
par Pato
ça fait longtemps que je n'utilise plus mathematica...
Peut-être un truc du genre :

n = 0

While (/t/^(2n+3) / (2n+3)) > 10^-q
n = n+1

Enfin... voir ce que ça donne écrit en mathematica :mrgreen: désolé :oops: :roll:
Mais bon... le professeur te l'a demandé, pas à nous :mrgreen:

Petite astuce : je ne sais plus comment faire une valeur absolue sur mathematica... mais |x| = (x^2)^(1/2) :wink:

Re: Fonction Mathematica

Publié : 15 févr. 2010 22:58
par soxkite17
Oui, je voulais juste quelques indications ! Le problème c'est que l'on a fait qu'un tp du même genre et je n'avais vraiment rien compris, c'est bien pour ça que je demandais un peu d'aide ! Merci en tout cas :) !

Re: Fonction Mathematica

Publié : 15 févr. 2010 23:31
par Pato
ben... si c'est suffisant, c'est super :mrgreen:

Re: Fonction Mathematica

Publié : 16 févr. 2010 16:56
par soxkite17
Bon ben je n'y arrive pas... J'arrive pas à bien fixer mes variables... Pourtant il me semble que c'est avec While mais bon, si jamais quelqu'un avait un idée...

Re: Fonction Mathematica

Publié : 16 févr. 2010 18:04
par Pato
Méthode peu élégante sans faire intervenir de while

i = nmax

for n from 1 to nmax
if (/t/^(2n+3) / (2n+3)) > 10^-q # est-ce que ce n le vérifie ?
then
if n<i --> i=n #on ne garde que le plus petit

Je ne sais pas conclure les if et les for... mais ça marcherait aussi... pour un nmax suffisamment élevé

Re: Fonction Mathematica

Publié : 16 févr. 2010 18:18
par fakbill
Pato : hum c'est tout de même un peu bourrrrrrrrrin ;) surtout si on tombe sur un cas ou n est très grand.
soxkite17 : faire du mathematica n'empeche pas de faire des maths. Tu peux travailler un peu ton expression pour extraire t (séparer les différents cas) et ca devient alors trivial à coder (il faut juste connaitre la partie entière).

mathemtica est ultra puissant mais il ne faut pas devenir bête quand on l'utilise...ce qui n'est pas toujours facile.

Re: Fonction Mathematica

Publié : 16 févr. 2010 20:58
par Pato
fakbill a écrit :Pato : hum c'est tout de même un peu bourrrrrrrrrin ;) surtout si on tombe sur un cas ou n est très grand.
Au début j'ai proposé un avec while :mrgreen: comme je l'ai dit, avec le "for", la méthode n'est pas élégante... si nmax = 100000 et que la réponse c'est n=3... enfin, voilà :mrgreen:

Re: Fonction Mathematica

Publié : 17 févr. 2010 19:11
par V@J
Sinon, tu peux toujours faire un truc comme :
SPOILER:

Code : Tout sélectionner

f[q_, t_] := 
 Module[{a = Abs[t], b = 10^q, r}, 
  If[a == 0, r = 0, a = -Log[a]; If[a == 0, r = b, r = ProductLog[a b]/a]]; 
  If[Element[r, Reals], Max[0, Ceiling[(r - 3)/2]], \[Infinity]]]

Re: Fonction Mathematica

Publié : 18 févr. 2010 16:12
par fakbill
Ca ca tue le problème ;)
Il faut tout de même connaitre un peu de mathematica pour pondre ca ;)

Sinon oui, c'est ca qu'on te demandait soxkite17:
Résoudre l'équation à la main et coder les différents cas en mathematica.