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).

Répondre

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Ecrire en lettres le nombre suivant : 2

Retour

Résumé de la discussion (messages les plus récents en premier)

Terces
19-03-2017 21:43:33

Salut,

j'ai eu des problèmes mais ayant maintenant spyder qui fonctionne très bien je n'ai pas besoin de les résoudre.
J'ai réussi à faire le squelette du programme que je voulais, maintenant je dois le finaliser.

@+

yoshi
11-03-2017 06:17:33

Salut,

J'ai eu un problème avec l’installation de numpy et les autres, je les ai trouvé dans le lien que tu m'as indiqué mais mon pc ne savait pas avec quel logiciel les ouvrir et moi non plus ...

Tu as eu ou tu as encore ?
La procédure d'installation est spécifique : si on la respecte ça marche bien...
Quant à Anaconda c'est une variante de Python avec une surcouche dont Spyder qui est un IDLE amélioré...
Par contre, j'ignore s'il n'a pas été rajouté dans Anaconda d'autres fonctions, méthodes, classes, mots-clés qui ne figurent pas dans le python d'origine...
Voilà un peu de lecture :
http://eric.univ-lyon2.fr/~ricco/cours/ … aconda.pdf
J'ai survolé rapidement, ça a l'air bien fait, mais je ne sais pas si ce doc contient la réponse à mon questionnement ci-dessus.

@+

Terces
11-03-2017 00:27:07

Re :)
J'ai eu un problème avec l’installation de numpy et les autres, je les ai trouvé dans le lien que tu m'as indiqué mais mon pc ne savait pas avec quel logiciel les ouvrir et moi non plus ...

Enfin bref j'ai téléchargé "Anaconda" : https://www.continuum.io/downloads
Et dedans il y a un truc qui s’appelle "Spyder" sur lequel on peut coder et j'ai testé, on peut import numpy et matplotlib et sans doute d'autres librairies.

Voila a quoi ca ressemble :
424461spyder.png

Terces
28-12-2016 13:21:19

Hello yoshi ^^
Je ne sais pas mais je le ferais un jour, tu n'as pas écrit pour rien ;)
@+

yoshi
27-12-2016 10:12:17

Re,

Hello Terces ???
Tu installes quand numpy, scipy, matplotlib and co ?

@+

yoshi
07-12-2016 11:47:52

Salut,

Non, ce programme a été écrit en Python 2.6 : le print n'était pas encore une fonction.
Quant à la méthode des tangentes, j'avais oublié 11 ans plus tard...
Je vais revérifié ce que j'ai fait, parce que à la lumière de ce document :
http://math.univ-lyon1.fr/capes/IMG/pdf/integrales.pdf  voir 2e
j'ai l'impression bizarre que ce que j'ai fait est faux... Pourtant la valeur de [tex]\pi[/tex] colle...
Prog modifié pour tourner en 3.x:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from decimal import Decimal
import decimal as d


def titre():
    print()
    print()
    print()
    print ("                  *******************************************")
    print ("                  *     +-+ APPROXIMATIONS de Pi +-+        *")
    print ("                  *******************************************")
    print()
    print()
    print()
    print ("Calcul de la valeur approchée de l'intégrale de 0 à 1")
    print ("de f(x)=4/(1+x^2) par :")

def affiche_resultat(p,s):
    print ("\n\n")
    print ("-------------------------------------------------------")
    print()
    print ("            *****************************")
    print ("   **********    Résultat du calcul      ***********")
    print ("            *****************************")
    print ()
    print ("Valeur calculée de Pi :",s, "avec un pas de",p)
    print ("Valeur  connue  de Pi : 3.1415926535897932384626...")
    print()
    print ("-------------------------------------------------------\n\n")
   
   
def sortie():
    print()
    print()
    print ("   Au revoir !")

def incorrect():
    print ("           ...Désolé, valeur incorrecte. Veuillez recommencer ...")

def pas_nb():
    print ("             ... Ce n'est pas un nombre. Veuillez recommencer...")    

def message(cx):
    ch={0:'       ... Pour retourner au menu,',
        1:'... Pour la suite,',2:'... '}
    print()
    print ("       ",ch[cx],"Presser ENTREE ...")
    input("")

def pas():
    ok=0
    print ("\n\n")
    while not ok:
        try:
            chp=input("Choisissez un pas (0.1, 0.01, 0.001...) : ")
            l=len(chp)
            p=float(chp)
            if p>0 and p<1:
                if chp=="0."+(l-3)*"0"+"1" :
                    ok=1
                else:
                    incorrect()
                    message(2)
            else:
                incorrect()
                message(2)          
        except ValueError:
            pas_nb()
            message(1)
    return p
         
def rectangles():
    # Somme des aires des rectangles de largeur x-p/2 ; x+p/2
    p=0
    p=pas()
    nt,x,s=int(1/p),p/2,0
    for k in range(nt):
        s+=4/(1+(x+k*p)**2)*p
    affiche_resultat(p,s)

def trapezes():
    s=0
    p=pas()
    nt,x,s=int(1/p),p/2,0
    for k in range(nt):
        s+=4*(1/(1+(k*p)**2)+1/(1+((k+1)*p)**2))/2
    s=s*p
    affiche_resultat(p,s)

def tangentes():
    s=0
    p=pas()
    nt,x=int(1/p),p/2
    for k in range(nt):
        s+=4/(1+(x+k*p)**2)
    s=s*p
    affiche_resultat(p,s)

def simpson():
    d.getcontext().prec = 30
    s,a,b=0,0,1
    p=pas()
    nt=int(1/p)
    for k in range(1,nt):
       s+=Decimal(4*(1+k%2))/Decimal(str(1+(a+k*p)**2))
    s=Decimal(str(p))/Decimal(3)*(Decimal(4)/Decimal(1+a**2)+Decimal(4)/Decimal(1+b**2)+Decimal(str(2*s)))
    affiche_resultat(p,s)
   
fin=5
while fin>0:
    titre()
    print ("      1.la méthode des rectangles")
    print ("      2.la méthode des trapèzes")
    print ("      3.la méthode des tangentes")
    print ("      4.la formule de Simpson composée")  
    print ()
    print (" 0. Sortie du programme\n")
    chx_menu='5'
    while chx_menu=='5':
        chx_menu=input(" Votre choix : ")
        try:
            fin = int(chx_menu)
            choix2 = {'1': rectangles,
                      '2': trapezes,
                      '3': tangentes,
                      '4': simpson,
                      '0': sortie}
            if not fin in [0,1,2,3,4]:
                chx_menu='5'
                incorrect()
        except ValueError:
            pas_nb()
            chx_menu='5'
    choix2[chx_menu]()

@+

Terces
06-12-2016 21:16:39

Re,

Dans ton programme le print n'avait pas besoin de parenthèses en 2005 ?
Je n'ai pas entendu parlé de la méthodes des tangentes(tu peux me dire rapidement le principe ? j'ai pas trouvé grand chose sur le net), j'ai suivi ce lien avant de programmer : http://userpages.irap.omp.eu/~rbelmont/ … ration.pdf
La "méthode de Gauss-Legendre" a apparemment une très bonne précision, mais je ne sais pas si je pourrais la programmer, à voir.

yoshi
06-12-2016 19:51:26

Bonsoir,

Méthode Monte Carlo : voila qui est intéressant ! Je m'étais penché dessus un jour, et j'avais laissé tomber, je vais donc pouivoir m'y remettre...
Ce jour-là, j'avais écrit ce petit programme de calcul de $\pi$ via plusieurs méthodes :
http://www.bibmath.net/forums/viewtopic … 968#p21968

@+

Terces
06-12-2016 19:35:18

Re^^

Ben je ne pensais pas qu'il faudrait "faire tout ca", je le verrais pendant les vacances je penses.
En attendant j'ai fait un truc sur python (et turtle) pour intégrer avec les rectangles/trapèzes/simpson/Monte Carlo   ca marche très bien mais j'ai un peu galérer pour obtenir une représentation visuelle (changement d’échelle et tout ca...).


Voila le code si ca t’intéresse^^ ("Im", "Ip" les bornes d'intégration "pt" pour le nombre de points que tu prends(impair à cause de simpson) et "pt" à la fin pour monte carlo)
L'inconveniant c'est que si ton ecran n'a pas les mêmes dimensions que le mien tu vas avoir un mauvais rendu.
J'essayerais de le refaire ces vacances avec matplotlib.





from math import*
from turtle import*
from random import uniform
bgcolor()
def f(x) :
    return sin(x)
Im=0
Ip=pi/2
pt=9


ht()
tracer(5)
def axe():
    up()
    goto(0,-700*(maxa+mina)/(2*(abs(maxa)+abs(mina))))
    down()
    fd(2000)
    fd(-4000)
    up()
    goto(-1400*(Ip+Im)/(2*(abs(Ip)+abs(Im))),0)
    rt(90)
    down()
    fd(1000)
    fd(-2000)   


maxa=f(Ip)
for i in range(0,1000):
    if f(Im+i*(Ip-Im)/1000) > maxa :
        maxa=f(Im+i*(Ip-Im)/1000)

mina=f(Im)
for i in range(1,1001):
    if f(Im+i*(Ip-Im)/1000) < mina :
        mina=f(Im+i*(Ip-Im)/1000)

axe()

up()
goto(-1400*(Ip+Im)/(2*(abs(Ip)+abs(Im)))-90,-350+10)
down()
write(mina)
up()
goto(-1400*(Ip+Im)/(2*(abs(Ip)+abs(Im)))-90,350)
down()
write(maxa)
up()
goto(-700+5,-700*(maxa+mina)/(2*(abs(maxa)+abs(mina)))-15)
down()
write(Im)
up()
goto(700,-700*(maxa+mina)/(2*(abs(maxa)+abs(mina)))-15)
down()
write(Ip)
up()
color('blue')
for i in range(0,1400):
    goto(-700+i,-350+(f(Im+(i+1)*(Ip-Im)/1400)-mina)*(700/(maxa-mina)))
    down()
color('black')
up()



   
############################
## Méthode des Réctangles ##
############################

##p=10
##pt=p

s=0
for i in range(0,pt-1):
    x1=Im+(Ip-Im)*i/(pt-1)
    x2=Im+(Ip-Im)*(i+1)/(pt-1)
    y1=f(Im+(Ip-Im)*i/(pt-1))
    a=y1
    s+=a*x2-a*x1

    #tt
    x_1=(x1-Im)*(1400/(Ip-Im))
    x_2=(x_1-Im)*(1400/(Ip-Im))
    y_1=(y1-mina)*(700/(maxa-mina))
    aa=y_1
    up()
    for j in range(int(1400*i/(pt-1)),int(1400*(i+1)/(pt-1))):
        goto(-700+j,-350+aa)
        down()
    goto(-700+j,-700*(maxa+mina)/(2*(abs(maxa)+abs(mina))))
    goto(-700+j,-350+(f(Im+j*(Ip-Im)/1400)-mina)*(700/(maxa-mina)))

print("rectangle : ",s)


##########################
## Méthode des Trapèzes ##
##########################

##p=10
##pt=p+1

s=0
for i in range(0,pt-1):
    x1=Im+(Ip-Im)*i/(pt-1)
    x2=Im+(Ip-Im)*(i+1)/(pt-1)
    y1=f(Im+(Ip-Im)*i/(pt-1))
    y2=f(Im+(Ip-Im)*(i+1)/(pt-1))
    a=(y1-y2)/(x1-x2)
    b=(x1*y2-x2*y1)/(x1-x2)
    s+=(a*x2**2)/2+b*x2-((a*x1**2)/2+b*x1)

    #tt
    x_1=(x1-Im)*(1400/(Ip-Im))
    x_2=(x2-Im)*(1400/(Ip-Im))
    y_1=(y1-mina)*(700/(maxa-mina))
    y_2=(y2-mina)*(700/(maxa-mina))
    aa=(y_1-y_2)/(x_1-x_2)
    bb=(x_1*y_2-x_2*y_1)/(x_1-x_2)
    up()

    for j in range(int(1400*i/(pt-1)),int(1400*(i+1)/(pt-1))):
        goto(-700+j,-350+aa*j+bb)
        down()

print("Trapèze : ",s)


########################
## Méthode de Simpson ##
########################

##p=3
##pt=2*p+1

s=0
for i in range(0,pt-2,2):
    x1=Im+(Ip-Im)*i/(pt-1)
    x2=Im+(Ip-Im)*(i+1)/(pt-1)
    x3=Im+(Ip-Im)*(i+2)/(pt-1)
    y1=f(Im+(Ip-Im)*i/(pt-1))
    y2=f(Im+(Ip-Im)*(i+1)/(pt-1))
    y3=f(Im+(Ip-Im)*(i+2)/(pt-1))
    a=(-(x1*(y2-y3)-x2*(y1-y3)+x3*(y1-y2)))/((x1**2-x1*(x2+x3)+x2*x3)*(x2-x3))
    b=(x1**2*(y2-y3)-x2**2*(y1-y3)+x3**2*(y1-y2))/((x1**2-x1*(x2+x3)+x2*x3)*(x2-x3))
    c=(x1**2*(x2*y3-x3*y2)-x1*(x2**2*y3-x3**2*y2)+x2*(x2-x3)*x3*y1)/((x1**2-x1*(x2+x3)+x2*x3)*(x2-x3))
    s+=(a*x3**3)/3 + (b*x3**2)/2 + c*x3 -((a*x1**3)/3 + (b*x1**2)/2 + c*x1)

    #tt
    x_1=(x1-Im)*(1400/(Ip-Im))
    x_2=(x2-Im)*(1400/(Ip-Im))
    x_3=(x3-Im)*(1400/(Ip-Im))
    y_1=(y1-mina)*(700/(maxa-mina))
    y_2=(y2-mina)*(700/(maxa-mina))
    y_3=(y3-mina)*(700/(maxa-mina))
    aa=(-(x_1*(y_2-y_3)-x_2*(y_1-y_3)+x_3*(y_1-y_2)))/((x_1**2-x_1*(x_2+x_3)+x_2*x_3)*(x_2-x_3))
    bb=(x_1**2*(y_2-y_3)-x_2**2*(y_1-y_3)+x_3**2*(y_1-y_2))/((x_1**2-x_1*(x_2+x_3)+x_2*x_3)*(x_2-x_3))
    cc=(x_1**2*(x_2*y_3-x_3*y_2)-x_1*(x_2**2*y_3-x_3**2*y_2)+x_2*(x_2-x_3)*x_3*y_1)/((x_1**2-x_1*(x_2+x_3)+x_2*x_3)*(x_2-x_3))
    up()
    for j in range(int(1400*i/(pt-1)),int(1400*(i+2)/(pt-1))):
        goto(-700+j,-350+aa*j**2+bb*j+cc)
        down()
## tt

print("Simpson : ",s)


############################
## Méthode de Monte Carlo ##
############################

pt=10000
tracer(pt)
c=0
for i in range(0,pt):
    color('green')
    a=uniform(Im,Ip)
    b=uniform(mina,maxa)
    up()
    goto(-700+(a-Im)*1400/(Ip-Im),-350+(b-mina)*700/(maxa-mina))
    down()
    if f(a)>b and b>0:
        color('red')
        c+=1
    if f(a)<b and b<0:
        color('red')
        c-=1
    dot(3)

if mina>0:
    print("Monte Carlo : ",(Ip-Im)*(maxa-mina)*(c/pt)+mina*(Ip-Im))
elif maxa<0:
    print("Monte Carlo : ",(Ip-Im)*(maxa-mina)*(c/pt)+maxa*(Ip-Im))
else:
    print("Monte Carlo : ",(Ip-Im)*(maxa-mina)*(c/pt))

yoshi
06-12-2016 14:36:10

Re,

Et alors, on en est où ?

@+

yoshi
03-12-2016 09:39:27

Re,

Ben là, il te faut la totale : numpy+scipy et matplotlib pour les dessins.
Je te conseille de désinstaller ton Python 32 bits pour télécharger à la place la version 64 bits mieux adaptée : ton Python gérera mieux le processeur, ses ressources et ta RAM. Et installe "pour tout le monde" quand on te pose kla question il le mettra à la racine de C:\, sinon, il va le planquer dans C:\Utilisateurs\TonNom\... et encore un ou deux sous-dossiers
En 32 bits Python ne pourra accéder qu'à environ 2,7 Go de mémoire vive. En général les systèmes 64 bits embarquent 8 Go de RAM !
A titre de comparaison : j'avais 1 barrette de 8 Go, je l'ai remplacée par 4 barrettes de 4 : Windows  7 est à l'aise et marche comme un avion et  Python est à l'aise aussi.
Téléchargement
https://www.python.org/ftp/python/3.5.2 … -amd64.exe

Puis télécharger ici : http://www.lfd.uci.edu/~gohlke/pythonlibs/
*  "mkl+numpy" Chercher dans la liste Numpy (en gras) puis cliquer sur la 3e ligne avant la fin de la liste numpy :
     numpy‑1.12.0b1+mkl‑cp35‑cp35m‑win_amd64.whl

* Scipy.  Chercher dans la liste Scipy (en gras) puis cliquer sur la 3e ligne avant la fin de la liste Scipy :
  Il sera écrit :
   SciPy is software for mathematics, science, and engineering.
   Requires numpy+mkl.
   Install numpy+mkl before installing scipy
   Cliquer en dessous 3e ligne avant la fin de la liste Scipy :
   scipy‑0.18.1‑cp35‑cp35m‑win_amd64.whl

*  Et enfin Matplotlib (Remonter par rapport à Scipy) Il sera écrit :
Requires numpy, dateutil, pytz, pyparsing, cycler, setuptools, and optionally pillow, pycairo, tornado, wxpython, pyside, pyqt4, ghostscript, miktex, ffmpeg, mencoder, avconv, or imagemagick.
Rassure-toi : avec numpy seul, ça marche très bien (j'ai testé chez moi)
    clique sur la ligne (4e avant la fin de la liste Matplotlib)
    matplotlib‑2.0.0b4‑cp35‑cp35m‑win_amd64.whl

Quand tu auras chargé tout ça et installé le Python 3.5, dis-le moi, je te dirai où les poser dans Python puis lancer pip pour l'installation (j'avais galéré pour ça et j'avais dû demander de l'aide)...

Repère bien le nom de ton dossier Python et où il est exactement...

Tout ce que fait Numpy : https://docs.scipy.org/doc/numpy/reference/
Tout ce que fait Scipy : https://docs.scipy.org/doc/scipy/reference/
Tout ce que fait Matplotlib  : http://matplotlib.org/
Je vois que la doc officielle demande installation, préalablement à matplotlib, de setuptools... Moi, je ne l'ai pas fait (pas vu !) et ça marche quand même (je n'ai peut-être pas toutes les fonctionnalités dispo)...
Là, c'est toi qui voit...

@+

Terces
02-12-2016 22:33:55

Re,

Merci pour l’intérêt que tu porte à mon problème :)
Alors j'ai python 3.5  32 bit
Windows 10 (64 bit)

J'aimerais faire des programmes à propos du calcul numérique / interpolation, cette année en binôme on doit donner un cours sur ca, je crois qu'au final on va devoir parler des courbes brachistochrone ou tautochrone ou quelque chose dans le genre.

Tu penses que c'est quel module qui serait le plus adapté pour étudier ca numériquement ?

yoshi
02-12-2016 19:02:57

Salut jeune-homme,

Alors, non, numpy n'est pas fait pour tracer des courbes c'est une extension mathématique qui combinée à Scipy permet de faire des calculs dingues...
Les courbes, c'est le domaine de matplotlib...Si tu es encore en version 2.x, je te conseille d'installer la version 3.5.2.
Sauf erreur les versions 3.x sont livrées avec pip (Dans la 3.5, c'est sûr) puisque quand j'ai changé de disque dur je me suis servi de pip pourb installer mkl+numpy, scipy et ensuite matplotlib.
Si j'ai bien compris mkl, est un accélérateur indispensable pour scipy...

Avant toute chose donc :
- version Python ?
- Windows 7, 8 ou 10 ? (En principe ce sont des versions 64 bits qui sont préinstallées sur les bécanes)
- 32 bits ou 64 bits ? (En principe ce sont des versions 64 bits qui sont préinstallées sur les bécanes)
  Pour Windows 7 --> clic gauche bouton Démarrer, puis clic droit sur ordinateur, puis gauche sur Propriétés et tu pourras répondre 32/64 bits...

Moi, j'ai  windows 7 64 bits et donc Python 3.5.2 64 bits...
Les programmeqs 32 bits peuvent tourner sur les systèmes 64 bits (c'est du gâchis), le contraire, non.
Selon ta réponse, j'ai gardé les fichiers que j'ai téléchargés et la façon de les installer, je pourrai te les faire parvenir...
N-B : les fichiers numpy,scipy,matplotlib sont maintenant des roues : extension .whl...

Tiens, regarde un peu ce qu'on peut faire avec matplotlib...
http://matplotlib.org/gallery.html


A te lire

Terces
02-12-2016 18:22:11

Bonsoir/bonjour

J'aimerais tracer des courbes sur python, j'ai cru comprendre qu'il fallait installer Numpy.
En fait c'est pas aussi simple que d'installer un simple programme :(
J'ai cru comprendre qu'une "bonne solution" était d'installer pip pour ensuite simplement faire "pip install numpy" dans l'interface python.
Mais même pip, je n'y suis pas arrivé, je suis allé sur ce lien : https://pypi.python.org/pypi/pip#downloads
mais quand ca ne marche pas, quand je clic sur "download" ca descend juste la page et puis je ne sais plus quoi faire.

Vous souvenez vous de comment vous avez fait ?

Pied de page des forums