programme python
Répondre à la discussion
Affichage des résultats 1 à 19 sur 19

programme python



  1. #1
    eric keba

    programme python


    ------

    bonjour, j'ai un souci avec mon code mais je ne trouve pas l'erreur ! quelqu'un peut m'aider? et au dessus j'ai deja crée ma fonction Phi(x,i)=sin(i*pi*x/L) et aussi la fonction f(x)=7x(x-3)..... i va de 1 à N=5 et x=np.linspace(0,L,100)

    -----
    Images attachées Images attachées  

  2. #2
    JPL
    Responsable des forums

    Re : programme python

    Il faut poster le code en utilisant la balise [Code]...[/Code].
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  3. #3
    eric keba

    Re : programme python

    je n'ai pas compris! comment mettre le code dans la balise

  4. #4
    CM63

    Re : programme python

    Tu passes en mode "avancé", tu surlignes ta zone de code et ensuite tu cliques dans le bouton où il y a un dièse : #
    Quoi? Quelque chose que je ne connais pas et qui me fait l'affront d'exister?!

  5. A voir en vidéo sur Futura
  6. #5
    pm42

    Re : programme python

    Et la raison est que là, si quelqu'un veut t'aider il est obligé de recopier tout ton code à la main pour le faire tourner. Si tu le postes entre balises CODE, il peut faire un copier/coller.
    Et en plus, cela évite de poster une image pour transmettre du texte ce qui est bon pour la planète

  7. #6
    eric keba

    Re : programme python

    Code:
    import sys,os
    import numpy as np
    import scipy as sp
    import matplotlib
    import matplotlib.pyplot as plt
    
    L=3
    
    def f(x):
        
        return (7*x*(x-3))
        
    def Phi(x,i):
        '''ième fonction de base en x'''
        # YOUR CODE HERE
        return np.sin(i*np.pi*x/L)
        raise NotImplementedError()
    
    
    
    
    def smb(N):
        '''calcul 2nd membre de la FF avec N fonctions de base'''
        # YOUR CODE HERE
        B=np.zeros((N,1))
        x=np.linspace(0,L,100)
        for i in range (1,N+1):
            S=Phi(x,i)
            D=f(x)
            B[i]=quadrature(S*D,0,L)[0]
        return B[i]
    
    def solution(N):
        '''calcul solution avec N fonctions de base'''
        # YOUR CODE HERE
        for i in range (1,N+1):
            v=smb(N)
            u[i]+=(2*L*v)/((np.pi)**2 * i**2)
        return u[i]
    
    N = 5
    U = solution(N)
    print('U=',U)
    Dernière modification par eric keba ; 18/10/2021 à 16h26. Motif: voici le code en entier!

  8. #7
    eric keba

    Re : programme python

    j'ai oublié de mettre la bibliotheque
    Code:
    from scipy.integrate import quadrature

  9. #8
    pm42

    Re : programme python

    Merci pour le code utilisable.

    Sinon, tu appelles quadrature avec un tableau S*D alors qu'il attend une fonction. Ensuite, tu fais une boucle pour calculer plein de B[i] mais tu renvoies uniquement le dernier.

    La 1ère chose à faire serait donc de corriger ta méthode smb pour appeler quadrature correctement comme décrit dans sa doc ce qui devrait te simplifier massivement le code (pas besoin de linspace notamment).

  10. #9
    eric keba

    Re : programme python

    Citation Envoyé par pm42 Voir le message
    Merci pour le code utilisable.

    Sinon, tu appelles quadrature avec un tableau S*D alors qu'il attend une fonction. Ensuite, tu fais une boucle pour calculer plein de B[i] mais tu renvoies uniquement le dernier.

    La 1ère chose à faire serait donc de corriger ta méthode smb pour appeler quadrature correctement comme décrit dans sa doc ce qui devrait te simplifier massivement le code (pas besoin de linspace notamment).
    j'ai besoin de la fonction f et phi , car Bi c'est l'intégrale de f*phi. Bi est normalement un vecteur colonne

  11. #10
    eric keba

    Re : programme python

    Citation Envoyé par pm42 Voir le message
    Merci pour le code utilisable.

    Sinon, tu appelles quadrature avec un tableau S*D alors qu'il attend une fonction. Ensuite, tu fais une boucle pour calculer plein de B[i] mais tu renvoies uniquement le dernier.

    La 1ère chose à faire serait donc de corriger ta méthode smb pour appeler quadrature correctement comme décrit dans sa doc ce qui devrait te simplifier massivement le code (pas besoin de linspace notamment).
    apres correction , j'ai toujours un message d'erreur, quadrature n'accepte qu'une seule fonction, dans mon cas il faut que je multiplie deux fonction, c'est qui est impossible dans python!

  12. #11
    pm42

    Re : programme python

    Citation Envoyé par eric keba Voir le message
    dans mon cas il faut que je multiplie deux fonction, c'est qui est impossible dans python!
    Pas du tout. Tu peux parfaitement définir une nouvelle fonction qui renvoie le résultat des 2 multipliées :

    Code:
    def h(x):
      return f(x) * g(x)
    A adapter à ton cas.

  13. #12
    eric keba

    Re : programme python

    Citation Envoyé par pm42 Voir le message
    Pas du tout. Tu peux parfaitement définir une nouvelle fonction qui renvoie le résultat des 2 multipliées :

    Code:
    def h(x):
      return f(x) * g(x)
    A adapter à ton cas.
    oui, une bonne idée mais ça me renvoi que "x" ne pas definie
    def g(x,i):

    return f(x)*Phi(x,i)

  14. #13
    pm42

    Re : programme python

    Citation Envoyé par eric keba Voir le message
    oui, une bonne idée mais ça me renvoi que "x" ne pas definie
    Vu que tu n'as pas mis ton code dans les bonnes balises CODE comme dit plus haut et l'importance de l'indentation, il est impossible de savoir pourquoi.

  15. #14
    polo974

    Re : programme python

    entre autre, problème d'indice, en python, c'est de 0 à n-1...

    donc i ne peut être utilisé pour indexer sans un -1 pour l'indice (edit, ok, je me répète , mais ça donne un indice...)

    comme pm42 l'a dit, il faut rendre B et non B[i]

    pourquoi des array ((N,1)) alors que des array (N) suffisent.

    comme pm42 l'a dit, il faut donner une fonction à quadrature, donc par exemple définir dans smb une fonction SD qui rend Phi(x,i)*f(x) (edit: ou bien une lambda, mais je n'aime pas les lambda (question de goût))

    du coup, le x=np.linspace(0,L,100) ne sert à rien (oui, c'est déjà dit, mais parfois, il faut répéter).

    dans ta fonction solution, tu calcules N fois smb(N).

    en fait, dans solution, il n'y a pas besoin de boucle, il suffit d'avoir l'array rendu par smb et un np.linspace(1,N,N) pour i.
    et tu fais ton u = ... en une seule ligne (merci numpy)
    Dernière modification par polo974 ; 19/10/2021 à 10h25.
    Jusqu'ici tout va bien...

  16. #15
    pm42

    Re : programme python

    Citation Envoyé par polo974 Voir le message
    ou bien une lambda, mais je n'aime pas les lambda (question de goût))
    Ceci dit, dans son cas, quand il va vouloir passer g(x,i) à quadrature pour intégrer en fixant i, il ne va pas avoir des masses de choix à part une lambda.

  17. #16
    eric keba

    Re : programme python

    Citation Envoyé par polo974 Voir le message
    entre autre, problème d'indice, en python, c'est de 0 à n-1...

    donc i ne peut être utilisé pour indexer sans un -1 pour l'indice (edit, ok, je me répète , mais ça donne un indice...)

    comme pm42 l'a dit, il faut rendre B et non B[i]

    pourquoi des array ((N,1)) alors que des array (N) suffisent.

    comme pm42 l'a dit, il faut donner une fonction à quadrature, donc par exemple définir dans smb une fonction SD qui rend Phi(x,i)*f(x) (edit: ou bien une lambda, mais je n'aime pas les lambda (question de goût))

    du coup, le x=np.linspace(0,L,100) ne sert à rien (oui, c'est déjà dit, mais parfois, il faut répéter).

    dans ta fonction solution, tu calcules N fois smb(N).

    en fait, dans solution, il n'y a pas besoin de boucle, il suffit d'avoir l'array rendu par smb et un np.linspace(1,N,N) pour i.
    et tu fais ton u = ... en une seule ligne (merci numpy)
    merci pour ton apport mon code marche parfaitement

  18. #17
    eric keba

    Re : programme python

    Citation Envoyé par pm42 Voir le message
    Ceci dit, dans son cas, quand il va vouloir passer g(x,i) à quadrature pour intégrer en fixant i, il ne va pas avoir des masses de choix à part une lambda.
    merci, ça marche trop bien avec un lambda

  19. #18
    polo974

    Re : programme python

    Citation Envoyé par pm42 Voir le message
    Ceci dit, dans son cas, quand il va vouloir passer g(x,i) à quadrature pour intégrer en fixant i, il ne va pas avoir des masses de choix à part une lambda.
    En effet, à part déclarer une fonction "normale" avec un nom, il n'y a pas beaucoup d'autre choix...
    Jusqu'ici tout va bien...

  20. #19
    polo974

    Re : programme python

    Citation Envoyé par eric keba Voir le message
    merci pour ton apport mon code marche parfaitement
    Merci pour ton retour.
    Bonne continuation.
    Jusqu'ici tout va bien...

Discussions similaires

  1. Programme Python
    Par invite355a149a dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 08/06/2021, 09h57
  2. Programme Python
    Par invite90f74748 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 08/12/2020, 12h07
  3. [Python] Problème de lag de programme et essai de Timer python
    Par Loupsio dans le forum Programmation et langages, Algorithmique
    Réponses: 20
    Dernier message: 26/01/2018, 16h14
  4. [Python] subprocess, lancer un autre programme avec python
    Par Loupsio dans le forum Programmation et langages, Algorithmique
    Réponses: 10
    Dernier message: 30/11/2016, 19h56
  5. Programme python
    Par invite70312004 dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 20/09/2013, 22h52