Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(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 :
fb7a1c8342e1e07d2913cb5f308da981.png
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 :

#Fonction de Bessel Calcul des racines
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

Pied de page des forums