Opérations tableau avec double indice
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
Code:
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 |
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.
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
Code:
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 |
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:
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 |
ici j'impose la conditions d'arrêt (100 itérations)
Code:
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 |
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.
T1,1
T1,2
...
T1,11
T2,1
....
T40,11
Merci par avance pour votre aide ;)
Alexandre
Un seul problème bien précis...
Bonjour,
Et ce serait plus simple pour comprendre car je ne vois toujours pas l'erreur...
Où se produit-elle? A quel endroit du code?
Maintenant il y a des redondances dans ton code,mais celà c'est à toi de l'améliorer.
Bon courage A+