IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Calcul scientifique Python Discussion :

Equation de la chaleur- tracer une surface


Sujet :

Calcul scientifique Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Equation de la chaleur- tracer une surface
    Bonjour, bonjour
    je suis nouveau ici et j'ai besoin de votre aide. J'ai écrit un programme Python pour résoudre une équation de la chaleur dans une barre de longueur L, le problème est que je n'arrive pas tracer la surface, pouvez vous m'aider ?
    Voici mon programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.colors as colors
    from mpl_toolkits.mplot3d import Axes3D
     
     
    # parametres de l'experience
    L = 2.
    tfin = 1
    k  = 1.
    c  = 1.
    r  = 1.
    Tinit = 20
    TextX0 = 50
    TextL = 30
     
    # pas de discretisation
    hx = 0.2
    ht = 0.05
     
    Nx = int(L/hx)
    Nt = int(tfin/ht)
    x = np.linspace(0.0,2,Nx)
    duree = np.linspace(0.0, tfin,Nt)
    X,Y = np.meshgrid(x,duree) #pour definir un pavage du plan (produit cartsien)
     
    #Contruction de la matrice A
    alpha = (-k/(hx*hx))
    beta  = ((r*c)/ht)+((2*k)/(hx*hx))
    gamma = (-k/(hx*hx))
     
    A = np.zeros([Nt+1,Nt+1],'d')
    for i in xrange (0,Nt,1):
    	A[i,i]   = beta
    	A[i,i+1] = gamma
    	A[i+1,i] = alpha
    A[Nt,Nt]     = beta
    A[Nt,Nt-1]   = alpha
     
    Ainv = np.linalg.inv(A)
     
    #Construction de la matrice T
    b0 = np.zeros([1,Nt+1],'d')
    for i in xrange(0,Nt,1):
            b0[0][i] = 20
    #b0 = [20 for k in xrange(0,Nt+1)]
    B0 = b0.transpose()
     
    t0 = np.zeros([1,Nt+1],'d')
    t0[0] = 50
    T0 = t0.transpose()
     
    T = np.zeros([Nt+1,Nt+1],'d')
    # Conditions initiales
    for i in range(0,Nx):
    	T[0][i] = 20
     
    # Conditions aux limites
    for t in range(1,Nt+1):
    	T[t][0] = 50
    	T[t][-1] = 30
     
    P = B0
    for t in range(0,Nt):
    	TT = np.dot(Ainv,P)+ np.dot(Ainv,T0)
    	TT1 = TT.transpose()
    	for i in xrange(0,Nt,1):
    		T[t+1][i] = TT1[0][i]
    	P = TT
     
    # affichage de l'evolution de la temperature
    fig = plt.figure(figsize=(14,8)) #taille de la figure
    ax = fig.add_subplot(111, projection='3d')
    ax.set_xlabel('X', fontsize = 16)		#legendes
    ax.set_ylabel('temps', fontsize = 16)		#des differents
    ax.set_zlabel('temperature', fontsize = 16)	#axes
    ax.view_init(elev=15, azim = 120)
     
    norm = colors.Normalize(Tinit,TextX0,TextL)
    p = ax.plot_surface(X,Y,T,cstride=1,linewidth=0,cmap='jet')
    cb = fig.colorbar(p,ax = ax)
     
    plt.show()
    L'équation a été mise sous la forme A*Tj = Bj-1
    Merci de votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Quand je l'exécute j'ai ce message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Traceback (most recent call last):
      File "Pb_transi_imp.py", line 80, in <module>
        p = ax.plot_surface(X,Y,T,cstride=1,linewidth=0,cmap='jet')
      File "/usr/lib/python2.7/dist-packages/mpl_toolkits/mplot3d/axes3d.py", line 1586, in plot_surface
        X, Y, Z = np.broadcast_arrays(X, Y, Z)
      File "/usr/lib/python2.7/dist-packages/numpy/lib/stride_tricks.py", line 191, in broadcast_arrays
        shape = _broadcast_shape(*args)
      File "/usr/lib/python2.7/dist-packages/numpy/lib/stride_tricks.py", line 126, in _broadcast_shape
        b = np.broadcast(*args[:32])
    ValueError: shape mismatch: objects cannot be broadcast to a single shape

  3. #3
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    20 termes pour X et Y, 21 pour T : est-ce normal ?
    Pas d'aide par mp.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Normalement oui. J'ai fait un autre programme de manière explicite et il y avait aussi des matrice de tailles différentes et ça n'a pas posé de problème

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2016
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2016
    Messages : 103
    Points : 103
    Points
    103
    Par défaut équation de la chaleur
    Bonsoir,

    voila le message que je reçois quand je lance ton programme :

    "incompatible dimensions on axis %r." % (axis,))
    ValueError: shape mismatch: two or more arrays have incompatible dimensions on axis 0

    Apperemment, y a un problème de dim ; sachant qu'on ne peut additionner de matrices de tailles équivalentes et pour le produit de matrices,

    il faut qu'elles aient la même dimension en terme de ligne et colonnes. Si A de dim axb et B de dim bxc , alors AB sera de dim axc ...

  6. #6
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    J'ai personnellement plusieurs fichiers qui traitent de la conduction de la chaleur.
    Dans ce programme, je n'y comprends pas grand-chose : inversions, ...
    Si je comprenais un plus l'algo, je m'y pencherais mais là...
    Pas d'aide par mp.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Kevin_Mylano j'ai modifié les matrices X et Y (durée) pour qu'elles aient la même dimension que T mais ça me retourne toujours la même erreur

    Projet_MCI_2010.pdf

    marco056 voilà le sujet, le programme traite la partie II 2) Méthode implicite

  8. #8
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Je n'utilise pas beaucoup la méthode implicite en principe mais je peux m'y pencher, peut-être la semaine prochaine.
    Une remarque : pourquoi travailler en 2D alors que l'énoncé précise une étude unidimensionnelle ?
    Pas d'aide par mp.

  9. #9
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Je ne sais si le pb persiste mais en tous les cas :
    les éléments X, Y et Z possèdent un nombre d'éléments (des listes) différents mais plus grave : T contient des listes de listes qui contiennent carrément pls d'éléments que dans X et Y.
    Cela ne peut pas fonctionner.
    Pas d'aide par mp.

Discussions similaires

  1. tracer une surface
    Par autocadNUL dans le forum MATLAB
    Réponses: 5
    Dernier message: 08/04/2011, 15h51
  2. Tracer une surface à partir de listes de valeurs
    Par Bebs7 dans le forum MATLAB
    Réponses: 5
    Dernier message: 17/09/2009, 14h17
  3. Réponses: 2
    Dernier message: 28/04/2007, 19h35
  4. Tracer une surface en cylindriques
    Par Kingi dans le forum MATLAB
    Réponses: 2
    Dernier message: 10/08/2006, 09h49
  5. [VB5] Tracer une surface (3D) avec un MSChart ?
    Par winnipeg dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 27/07/2006, 10h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo