Bonjour à tous,
J'aurai besoin d'aide à propos d'un programme que je souhaite faire please!
Le problème est un problème physique (de thermique) mais pas besoin de raisonner dans ce domaine.
On suppose un carré (ou rectangle) initialement à 500°C et à un temps petit t>0, on impose une température de paroi de 50°C et je dois trouver l'évolution de la température sur toute la plaque au bout d'un temps infini.
(il y a bien sure un formule physique à rentrer f(T) pour trouver la température).
Mon problème est que je n'arrive pas à faire les n(=100) itérations afin de déterminer les températures finales. Voici ce que j'ai fait:
Je définit un tableau (géométrie de la plaque) de dimensions arbitraires 40*11 et je dis quelles sont les conditions de température au départ. Aux bords (sauf le bord de droite), la température imposée est de 50°C. Pour les points intérieurs à la plaque, c'est 500°C
Ensuite donc ce que je souhaite faire c'est faire d'autres itérations jusqu'un nombre 100 pour trouver la température finale en tous points de la plaque, ceci grâce à une formule physique liant la température des points voisins.
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 Dim Temp1(1 To 40, 1 To 11) As Double For i = 1 To 40 Temp1(i, 1) = 50 Temp1(i, 11) = 50 Next For j = 1 To 11 Temp1(1, j) = 50 Next For i = 2 To 40 For j = 2 To 11 Temp1(i, j) = 500 Next Next
Je définie donc un nouveau tableau, ceci afin de faire subir les changements après 100 itérations et de transférer les résultats dans ce tableau. Un tableau 40*11...puis je réimpose la température de 50°C aux parois
Mon problème vient de l'intérieur des points, en entrant ces lignes, le programme me donne simplement la température au point T22 après 100 itérations (visible grâce au debug.print). Le problème doit venir du fait que j'ai mal programmé le loop avec double indicage
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Dim Temp2(1 To 40, 1 To 11) As Double For j = 1 To 11 Temp2(1, j) = Temp1(1, j) Next For i = 1 To 40 Temp2(i, 1) = Temp1(i, 1) Temp2(i, 11) = Temp1(i, 1) Next![]()
ici j'impose la conditions d'arrêt (100 itérations)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 For i = 2 To 39 For j = 2 To 10 Temp2(i, j) = Temp1(i - 1, j) + Temp1(i + 1, j) + Temp1(i, j - 1) + Temp1(i, j + 1) + Temp1(i, j)) Next Next
Donc ce que je souhaiterai avoir c'est que le programme me calcule après 100 itérations de chaque points de la plaque la température.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Dim a As Integer a = 100 Do While a > 0 a = a - 1 For i = 2 To 39 For j = 2 To 10 Temp2(i, j) = Temp2(i - 1, j) + Temp2(i + 1, j) + Temp2(i, j - 1) + Temp2(i, j + 1) + Temp2(i, j)) Next Next Loop
T1,1
T1,2
...
T1,11
T2,1
....
T40,11
Merci par avance pour votre aide
Alexandre
Partager