[Python] Problème pour un débutant

Bonjour,

Je sais que ce n'est pas forcément l'endroit approprié mais beaucoup de personnes ici mon aidée par le passé et j'ai aujourd'hui un problème de programmation en Python, un langage que je ne connais pas bien.

Mon objectif est de modéliser un mirage, à savoir la réfraction d'un rayon lumineux dû au changement d'indice en fonction de la hauteur par rapport au sol.

Nous avons décidé de ne pas faire un gradient d'indice continu mais de faire varier l'indice d'un pas appelé "pas" toutes les couches d'épaisseur e.

Le programme doit contenir trois possibilités, à savoir, le rayon se réfracte et descend vers le sol, le rayon est réfléchi totalement et le rayon remonte.

Voici une illustration du problème pour que vous compreniez mieux:

probleme info

Le code auquel j'avais pensé était celui ci, mais c'est un peu un hybrid Vba/python:

prob 1 prob 2

Mais quand j'essaye de le lancer il y a des problèmes notamment avec les listes, est ce que vous voyez une/des erreurs que j'ai faites? Savez vous à quoi ressemble mon idée en python?

Bonjour YannisB,

Je veux bien dépanner sur Python même si ce n'est pas l'endroit approprié, mais dans les tous cas, un fichier facilite beaucoup l'aide !

Merci donc de joindre ton script Python (même non fonctionnel), mais aussi de préciser ta version de Python.

À te lire,

Fatos

image

Désolé j'ai eu quelques jours chargés

Je vous ai fait un fichier, j'ai essayé de respecter au maximum la syntaxe python mais il est possible qu'il y ai des erreurs vu que je l'ai quasiment jamais utilisé.

Je n'arrive pas à envoyer le fichier .py, ça me dit qu'il n'est pas pris en charge, mais mon code est le suivant:

import matplotlib.pyplot as plt
import math
import numpy

R=0
Teta=[]
X=[]
Y=[]
teta=25
N=1
x=0
y=0
pas=0,1
e=0,5

for i in range (0,21):

    if teta >= math.asin(N/(N-pas)):
        R=1
        x=x+e*math.tan(teta)
        y=y-e
        Teta.append(teta)
        X.append(x)
        Y.append(y)
        N=N-pas

    elif R==1:
        teta=math.asin((N/(N-pas))*math.sin(teta))
        Teta.append(teta)
        y=y-e
        Y.append(y)
        x=x+e*math.tan(teta)
        X.append(x)
        N=N-pas

    else:
        teta=math.asin((N/(N+pas))*math.sin(teta))
        Teta.append(teta)
        y=y+e
        Y.append(y)
        x=x+e*math.tan(teta)
        X.append(x)
        N=N+pas
        

EDIT: Voici le fichier en archive

90projet.zip (447.00 Octets)
Rechercher des sujets similaires à "python probleme debutant"