Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
Discussion fermée
#1 10-03-2015 17:04:40
- matrice
- Invité
Resoudre equation de bessel
bonjour ,
je voudrais trouver les x ou s'annule cette fonction :
j'ai pensé a utiliser la methode de la dichotomie et pour remplacer l'infini utiliser un p assez grand mais je suis nul en informatique
ps je n'ai besoin que des 5 premiers elements
merci de m'aider
#2 11-03-2015 13:48:53
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 991
Re : Resoudre equation de bessel
Bonjour,
J'ai très peu de temps maintenant (une revue trimestrielle sur les bras), mais ça ira mieux la semaine prochaine...
Peux-tu patienter jusque là ?
Qu'as-tu déjà essayé à la main ?
Ça me ferait gagner du temps...
@+
Arx Tarpeia Capitoli proxima...
Hors ligne
#3 11-03-2015 20:35:28
- matrice
- Invité
Re : Resoudre equation de bessel
salut ,
merci pour ta reponse, oui je crois que cela peut attendre la semaine prochaine .
Je me suis mis a python , j'espere que d'ici le week end j'arriverai a faire ce travail tout seul mais je crois que ca va etre un peu court meme si je progresse rapidement .
Le probleme c'est surtout la dichotomie je ne connais pas les intervalles où ma fonction s'annule c'est ce qui me pose le plus de probleme et je sais aussi qu'il y a la methode de newton mais bon elle nécessite des hypotheses trop fortes . qu'en pensez vous ?
#4 11-03-2015 23:46:37
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 991
Re : Resoudre equation de bessel
Bonsoir,
Mathématiquement, je risque d'être "un peu" dépassé...
C'est gênant parce qu'informatiquement, ça va être simple : il faudrait justement essayer de simplifier l'écriture ou en utiliser une autre.
Trouve-tu ton bonheur là-dedans ou encore sur cette page de notre site ??
@+
Arx Tarpeia Capitoli proxima...
Hors ligne
#5 12-03-2015 00:41:29
- chris
- Invité
Re : Resoudre equation de bessel
salut ,
merci encore une fois , j'ai réfléchi et je me suis dit qu'au lieu de faire une dichotomie a l'aveugle il serait juducieux de tracer d'abord la courbe avec le module numpy (desolé si ce n'est pas le bon module ,je suis encore debutant ) et reperer les parties ou ma fonction s'annule et ainsi je pourrai delimiter les intervales pour la dichotomie . qu'en pensez vous ?
ps : pour etre tout à fait honnete je trouve les equations de bessels sont assez hardues et quand je veux les etudier il y a plein de trucs qui m'echappent (non encore vu en cours ...) et comme je n'ai besoin que des 5 premiers zeros je crois que ce n'est pas la peine que je "perde mon temps " à cherhcer dans la litterature mathematique .
#6 12-03-2015 12:17:07
- bam
- Invité
Re : Resoudre equation de bessel
Bonjour,
Pour les valeurs des racines, cliquer http://mathworld.wolfram.com/BesselFunctionZeros.html
Wolfram et en particulier Wolfram Alpha sont un must dans les études supérieures. (gratuit pour un minimum déjà très intéressant)
Pour encadrer les zéros dans un programme, il suffit de balayer x avec un pas approprié et de comparer les signes de f(x) consécutivement.
Si besoin de calculer en Python, j'ai un programme qui redonne les mêmes valeurs que la référence ci-dessus.
#7 12-03-2015 20:06:58
- matrice
- Invité
Re : Resoudre equation de bessel
salut ,
merci pour ta reponse , oui j'aimerai bien si possible ton programme .
merci d'avance
#8 13-03-2015 10:24:44
- bam
- Invité
Re : Resoudre equation de bessel
Bonjour, Bonne exécution de ce programme :
from math import *
def jnx(n,x):
j=(x/2)**n/factorial(n) #premier terme p=0 ; note : ** pour puissance
u,xcarré=j,(x/2)**2
umémorisé,stop=j,0
for p in range(1,pmax):
u*=-xcarré/(p*(p+n))
j+=u
return j
def signe(v):
if v>=0:
return 1
else:
return -1
def trouverracine(x1,x2,j1,j2):
while abs(x2-x1)>10**(-9): #limite de précision
x=(x1+x2)/2 #approche par dichotomie
j=jnx(n,x)
if signe(j)==signe(j1):
x1,j1=x,j
else:
x2,j2=x,j
return x
pmax=31 #limite de p dans la formule de Bessel
#Note valeur de pmax pour obtenir 4 chiffres significatifs quand n=5
#mais calcul et régulation d'erreur non fait, devrait faire partie du programme....
max=30 #limite de x dans l'encadrement des racines
n=0 #valeur de n dans la formule de Bessel
while n<6: # n de la foction de Bessel
print("n =",n,"****************")
x1,j1=1,jnx(n,1) #racines encadrées entre x1 et x2
x2,j2=2,jnx(n,2)
nombreracines=1
while nombreracines<6: #recherhe de l'encadrement d'une racine
while signe(j1)==signe(j2):
x1,j1=x2,j2
x2+=1
j2=jnx(n,x2)
print(format(trouverracine(x1,x2,j1,j2),".4f"))
nombreracines+=1
x1,j1=x2,j2 #itération pour les 5 premières racines
if x1>max: # Si les 5 premières racines n'étaient pas trouvées...
break
n+=1
# Fin du programme qui imprime en moins d'une seconde.
#9 13-03-2015 22:36:37
- yoshi
- Modo Ferox
- Inscription : 20-11-2005
- Messages : 16 991
Re : Resoudre equation de bessel
Re,
@matrice.
Petit conseil pour gagner du temps si utilises l'DLE de Python.
Copie le prog ci-dessus
Lance l'DLE de Python
Choisis File --> New File
Colles-y le contenu copié.
Tout est décalé à droite.
Sélectionne tout puis tu fais Format --> Dedent Region : tout est ramené à gauche en conservant les indentations.
Enregistrement : n'oublie pas le .py !
@bam : merci pour lui et de ma part, tu m'épargnes beaucoup de recherche.
Je vais tester ça
@+
Arx Tarpeia Capitoli proxima...
Hors ligne
#10 14-03-2015 14:32:14
- matrice
- Invité
Re : Resoudre equation de bessel
Salut à vous deux ,
merci beaucoup bam pour ton programme et à toi yoshi pour tes conseils ! (desolé je n'ai pas pu repondre hier car j'avais un petit probleme de connexion ) . Je ne suis pas chez moi malheuresement j'ai eu un petit imprevu et je ne pourrait tester le programme qu'en milieu de semaine mais dès que je le teste je vous donnerai des nouvelles .Encore une fois merci beaucoup
Pages : 1
Discussion fermée