Sortie Print

Résolu
Bonjour,
je ne comprend pas pourquoi rien ne se passe



Configuration: Windows / Chrome 81.0.4044.113

2 réponses

  1. mport numpy as nt
    import matplotlib.pyplot as plt
    class FoncOptim():
    #    
        def __init__(soi,h,a,b,N):
            soi.a=a
            soi.b=b
            soi.N=N
            soi.h=h
    #
        def h(soi,x):
            y=1.0+5.0*(x**4-x**2)*nt.exp(-x**2)
            return y
    #
        def Max_min(soi,A):
            
            #
               MV=A[0]; mv=A[0] 
               n=len(A) 
            #
               for i in nt.arange(1,n):
            #    
                   if (MV < A[i]):
                        MV=A[i]
            #      
                   if (mv > A[i]):
                        mv=A[i]
            #
               return(MV,mv)
    #
        def func_opt(soi,a,b,N): 
          x=nt.zeros(N+1) 
          y=nt.zeros(N+1)  
        # 
          dx=(b-a)/N
          for i in nt.arange(0,N+1):
                   x[i]=a+i*dx
                   y[i]=h(x[i])
                   plt.plot([x[i],x[i]],[0,y[i]],'r')
        #    
          MAX,min=Max_min(y)
        #
          plt.plot(x,y,'b')
          plt.xlabel('x')  
          plt.title('Fonction étudiée')
          plt.ylabel('y')
          plt.grid() 
        #  
        #
          XMAX=[]; xmin=[]
          for j in nt.arange(0,N+1):
        #    
             if (nt.absolute(y[j]-MAX) < 0.00001):
                    XMAX.append(x[j])
        #            
             if (nt.absolute(y[j]-min) < 0.00001):
                    xmin.append(x[j])           
        #            
          print("Le total des valeurs maximales est %3d" % len(XMAX))
        #    
          for val in XMAX:
              print("La valeur maximale de %f se situe à x=%f" % (MAX,val))
        #        
          print(" \nLe total des valeurs minimales est %3d" % len(xmin))      
        # 
          for val in xmin:
              print("La valeur minimale de %f se situe à x=%f" % (min,val))
        #        
        #      
          return (MAX,min)  
    opti=FoncOptim(h,-1,5,150)
    print('a=',opti.a)
    print('b=',opti.b)
    print('N=',opti.N)
    a= -1
    b= 5
    N= 150
    ti.
    print(opti.Max_min([2,4,7,9,10,5]))
    (10, 2)
    opti.func_opt(-1,5,150)
    ---------------------------------------------------------------------------
    NameError                                 Traceback (most recent call last)
    <ipython-input-471-1156f43b0e96> in <module>
    ----> 1 opti.func_opt(-1,5,150)
    
    <ipython-input-466-a900159e460a> in func_opt(soi, a, b, N)
         37                plt.plot([x[i],x[i]],[0,y[i]],'r')
         38     #
    ---> 39       MAX,min=Max_min(y)
         40     #
         41       plt.plot(x,y,'b')
    
    NameError: name 'Max_min' is not defined
    1. Bonjour turcmax,

      "name 'Max_min' is not defined"
      le message est clair : le nom Max_min n'est pas défini

      La fonction Max_min et la fonction func_opt sont dans la même classe
      Donc, il ne faudrait pas plutôt faire ça :
      MAX,min=soi.Max_min(y) ?

      Ceci dit, je vois que tu a francisé le mot "self" en "soi", ca marche mais c'est déconseillé
      La convention est d'utiliser self comme dans les autres langages orientés objet
      C'est une convention forte reconnue par tout le monde ...