Partage
  • Partager sur Facebook
  • Partager sur Twitter

Calcul d'une norme d'un complexe

    16 janvier 2019 à 11:38:59

    Bonjour,

    Dans le cadre d'un projet maths-info, je dois calculer le taux de relfexion d'une onde em sur une surface en fonction de l'angle d'incidence.

    Ainsi, j'utilise la formule ci-jointe, avec n1=1.52 et n2=0.19591-3.2578j (indice complexe)

    Le taux de réflexion se définit par la norme au carré de cette formule.

    On considère uniquement les angles compris entre 0 et 90°.

    Cependant, pour certains angles, nous obtenons un taux de reflexion supérieur à 1 (plusieurs méthodes utilisées).

    Voici le code de ma fonction.

    from math import * 
    import numpy as np 
    
    def Taux_De_Reflexion2(theta):
    	Indice_Verre=1.52
    	Indice_Or=0.19591-3.2578j
    	
    	a=np.cos(theta)
    	b=np.sin(theta)
    	j=complex(0,1)
    
    	
    	a=np.cos(theta)
    	b=np.sin(theta)
    	numerateur = -(Indice_Or**2)*a+Indice_Verre*(Indice_Or**2-(Indice_Verre**2)*b**2)**0.5
    	denominateur = (Indice_Or**2)*a+Indice_Verre*(Indice_Or**2-(Indice_Verre**2)*b**2)**0.5
    
    	Reflexion = numerateur/denominateur
        
        #METHODE1
        
    	Reel=Reflexion.real 
    	Imaginaire=Reflexion.imag
       
    	taux_reflexion = ( (Reel**2-Imaginaire**2)**0.5 )**2
        
        #METHODE2
    	taux_reflexion2=abs(Reflexion)**2
        
        #METHODE3
    	conj=Reflexion.conjugate()
    	taux_reflexion3=Reflexion*conj
        
        
    
    
    	print(taux_reflexion,taux_reflexion2, taux_reflexion3,theta  )
    	return taux_reflexion
    



    Pouvez-vous me dire d'où vient le problème s'il vous plait?

    • Partager sur Facebook
    • Partager sur Twitter
      16 janvier 2019 à 15:07:00

      Hello,

      je pense que tu as mal implémenté ton calcul de valeur absolue. Tu écris beaucoup de code pour rien. Voici un code fonctionnel :

      import numpy as np
      import matplotlib.pyplot as plt
      
      n_gl = 1.52
      n_or = 0.19591 - 3.2578j
      
      n1 = n_gl
      n2 = n_or
      
      def tauxReflexion(theta):
          num = -n2**2*np.cos(theta1) + n1*np.sqrt(n2**2 - n1**2*np.sin(theta1)**2)
          den = n2**2*np.cos(theta1) + n1*np.sqrt(n2**2 - n1**2*np.sin(theta1)**2)
          ref = num/den
          return np.abs(ref)**2
      
      delta = np.pi/180 # 
      theta1 = np.arange(0., np.pi/2 + 0.5*delta, delta)
      plt.figure()
      plt.plot(theta1*180/np.pi, tauxReflexion(theta1))
      plt.show()



      -
      Edité par Nozio 16 janvier 2019 à 15:07:45

      • Partager sur Facebook
      • Partager sur Twitter

      Avez-vous entendu parler de Julia ? Laissez-vous tenter ...

        16 janvier 2019 à 17:59:50

        Effectivement votre code marche!

        Je vous remercie !

        Bonne soirée 

        • Partager sur Facebook
        • Partager sur Twitter

        Calcul d'une norme d'un complexe

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown