Τρίτη, 31 Μαρτίου 2015

Εικόνες ηλεκτρικών πεδίων

Στην φυσική και στα μαθηματικά τα διανυσματικά πεδία χρησιμοποιούνται συνεχώς. Τέτοια πεδία είναι το βαρυτικό πεδίο, το ηλεκτρικό, το μαγνητικό, το πεδίο ροής ενός ρευστού κτλ. Θα αναπτύξουμε έναν αλγόριθμο που να μας δίνει μία εικόνα ενός ηλεκτρικού πεδίου σε έναν χώρο ανάλογα με τα φορτία που βρίσκονται σε αυτόν.

Για να δημιουργήσουμε τον αλγόριθμο πρέπει να δούμε ποια είναι η σχέση των συνιστωσών της έντασης ενός ηλεκτρικού πεδίου σε ένα σημείο του χώρου συναρτήσει των συντεταγμένων του σημείου αυτού και των συντεταγμένων του φορτίου. Έστω πως έχουμε ένα θετικό σημειακό φορτίο Q στο σημείο (x0,y0) και μας ενδιαφέρει να υπολογίσουμε την ένταση στο σημείο (x,y) (σχήμα 1).

σχήμα 1, ένα θετικό σημειακό φορτίο και η ένταση ηλεκτρικού πεδίου που δημιουργεί
σε ένα σημείο του χώρου.
Διανυσματικά η ένταση του ηλεκτρικού πεδίου Ε γράφεται
όπου r η απόσταση μεταξύ του φορτίου και του σημείου που μας ενδιαφέρει και r το διάνυσμα που φαίνεται στο σχήμα 1. Επίσης k είναι μία σταθερά η οποία ισούται με
Έτσι αναλύοντας την εξίσωση (1) έχουμε
όπου για τα Δx και Δy ισχύει
Έτσι οι εξισώσεις (2) και (3) γίνονται
Έτσι βρήκαμε τις συνιστώσες του πεδίου συναρτήσει των x, y, x0 και y0. Οπότε αν γνωρίζουμε την θέση ενός φορτίου μπορούμε με τις σχέσεις (4) και (5) να υπολογίσουμε τις συνιστώσες του ηλεκτρικού πεδίου για οποιοδήποτε σημείο του χώρου.

Τι γίνεται όμως αν έχουμε N φορτία; Τότε χρησιμοποιούμε την αρχή της επαλληλίας και οι ολικές συνιστώσες του ηλεκτρικού πεδίου σε ένα σημείο είναι

Βασιζόμενοι στα παραπάνω μπορούμε να γράψουμε έναν κώδικα ο οποίος θα μας δίνει εικόνες του ηλεκτρικού πεδίου. Θα θεωρήσουμε πως ο χώρος που μας ενδιαφέρει είναι ένα τετράγωνο με ακμή x. Ο κώδικας αυτός είναι ο εξής:

Private Sub Command1_Click()

'αρχική δήλωση των πινάκων που θα χρησιμοποιηθούν στον κώδικα
Dim M() As Double, g_x() As Double, g_y() As Double, x0() As Double, y0() As Double
Dim g_x_final() As Double, g_y_final() As Double, x() As Double, y() As Double

'εισαγωγή δεδομένων από την φόρμα
'diast είναι η διάσταση του χώρου που μας ενδιαφέρει
diast = Text1.Text
'n είναι ο αριθμός των φορτίων
n = Text2.Text

'άνοιγμα αρχείου για εισαγωγή των στοιχείων των φορτίων
Open "data.txt" For Input As #1
'άνοιγμα αρχείου για εξαγωγή των δεδομένων
Open "results.txt" For Output As #2

'δηλώνουμε ξανά τους πίνακες αφού πλέον γνωρίζουμε τις διαστάσεις τους
ReDim M(n) As Double, g_x(n, 101, 101) As Double, g_y(n, 101, 101) As Double, x0(n) As Double, y0(n) As Double
ReDim g_x_final(101, 101) As Double, g_y_final(101, 101) As Double, x(101) As Double, y(101) As Double

'εισαγωγή της τιμής του k
G = 8.988*10^9

'εισαγωγή των δεδομένων από το αρχείο "data.txt"
For z = 1 To n
Input #1, M(z), x0(z), y0(z)
Next z

'υπολογισμός του βήματος
step = diast / 100

'εύρεση των σημείων για τα οποία θα υπολογισθεί το ηλεκτρικό πεδίο
For j = 0 To 99
x(j + 1) = x(j) + step
y(j + 1) = y(j) + step
Next j

'υπολογισμός του ηλεκτρικού πεδίου για τα σημεία που βρέθηκαν προηγουμένως
'για τα σημεία που συμπίπτουν με θέση φορτίου το πεδίο είναι μηδενικό
For i = 1 To n
For j = 0 To 100
For k = 0 To 100
If x(j) <> x0(i) And y(k) <> y0(i) Then
g_x(i, j, k) = -G * M(i) * (x0(i) - x(j)) / (((x0(i) - x(j)) ^ 2 + (y0(i) - y(k)) ^ 2) ^ (3 / 2))
g_y(i, j, k) = -G * M(i) * (y0(i) - y(k)) / (((x0(i) - x(j)) ^ 2 + (y0(i) - y(k)) ^ 2) ^ (3 / 2))
Else
g_x(i, j, k) = 0
g_y(i, j, k) = 0
End If
Next k
Next j
Next i

'εφαρμογή της αρχής της επαλληλίας και εκτύπωση των αποτελεσμάτων στο αρχείο "results.txt"
For i = 0 To 100
For j = 0 To 100
For k = 1 To n
g_x_final(i, j) = g_x_final(i, j) + g_x(k, i, j)
g_y_final(i, j) = g_y_final(i, j) + g_y(k, i, j)
Next k
Print #2, x(i), y(j), g_x_final(i, j), g_y_final(i, j)
Next j
Next i

'κλείσιμο όλων των αρχείων
Close

End Sub

Πρέπει να τονίσουμε ότι αφού δουλεύουμε στο S.I. η ακμή πρέπει να εισαχθεί σε m στην φόρμα (εικόνα 1).
εικόνα 1, η φόρμα εισαγωγής δεδομένων στον κώδικα.
Το αρχείο data.txt φαίνεται στην εικόνα 2. Στο αρχείο αυτό εισάγουμε τα δεδομένα των φορτίων ώστε να μπορέσει να τα διαβάσει ο κώδικας.
εικόνα 2, φαίνεται η μορφή του αρχείου data.txt .
Η πρώτη στήλη του αρχείου αυτού είναι τα φορτία που θέλουμε να εισάγουμε σε C, δεύτερη στήλη οι τετμημένες τους x0 σε m και η τρίτη στήλη οι τεταγμένες τους y0 σε m.

Ας τσεκάρουμε πρώτα τον κώδικα τοποθετώντας ένα θετικό φορτίο 1 C στο κέντρο ενός τετράγωνου χώρου με ακμή 100 m. Έτσι στην φόρμα εισάγουμε για ακμή το 100 και αφού έχουμε μόνο ένα φορτίο για N το 1. Επίσης το αρχείο data.txt έχει μόνο μία γραμμή η οποία είναι η εξής:

1, 50, 50

Τρέχουμε λοιπόν τον κώδικα και δημιουργείτε το αρχείο results.txt (εικόνα 3).

εικόνα 3, η μορφή του αρχείου results.txt .
Η πρώτη στήλη είναι το x σε m των σημείων για τα οποία υπολογίσαμε το ηλεκτρικό πεδίο, η δεύτερη στήλη είναι το y τους σε m, η τρίτη το Ex σε N/C και η τέταρτη το Ey σε N/C . Τα  δεδομένα αυτά μπορούμε να τα οπτικοποιήσουμε το Surfer. Έτσι προκύπτει η εικόνα 4.

εικόνα 4, το πεδίο που δημιουργείται από θετικό φορτίο στο κέντρο της εικόνας.

Παρατηρούμε ότι το μοτίβο που προκύπτει είναι σύμφωνο με την θεωρία καθώς πρόκειται για ένα ακτινωτό πεδίο.

Ας δοκιμάσουμε τώρα να εισάγουμε δύο θετικά φορτία 1 C στις θέσεις (25,50) και (75,50). Έτσι στο αρχείο data.txt οι σειρές είναι:

1, 25, 50
1, 75, 50

Στην φόρμα εισάγουμε όπου ακμή το 100 και Ν το 2. Με το τρέξιμο του κώδικα παίρνουμε την εικόνα 5.

εικόνα 5, το ηλεκτρικό πεδίο δύο θετικών φορτίων.
Έπειτα, επιλέγουμε να τοποθετήσουμε δύο φορτία στον χώρο από τα οποία το ένα θα έχει φορτίο 1 C και το δεύτερο φορτίο -1 C. Το πρώτο θα βρίσκεται στην θέση (50,25) και το δεύτερο στην θέση (50,75). Εκτελώντας τον κώδικα παίρνουμε την εικόνα 6.


εικόνα 6, το ηλεκτρικό πεδίο ενός θετικού και ενός αρνητικού φορτίου.
Τέλος, ας δοκιμάσουμε τον κώδικα με πέντε φορτία. Τα φορτία και οι συντεταγμένες τους φαίνονται στον πίνακα παρακάτω:

2, 20, 30
-1, 30, 85
3, 90,70
2.5, 80, 10
-4, 55, 60

Προκύπτει λοιπόν η εικόνα 7.

εικόνα 7, το ηλεκτρικό πεδίο πέντε φορτίων.
Έτσι με αυτόν τον κώδικα μπορούμε να υπολογίσουμε το ηλεκτρικό πεδίο οποιουδήποτε συνδυασμού φορτίων. Πρέπει να τονισθεί ότι παραλλαγή του ίδιου κώδικα μπορεί να χρησιμοποιηθεί για τον υπολογισμό βαρυτικών πεδίων.

3 σχόλια:

  1. Ωραία η ανάρτησή σου,η ιδέα της χαρτογράφησης του πεδίου είναι παλαιά,και οφείλεται στον Michael Faraday
    http://en.wikipedia.org/wiki/Michael_Faraday
    όπου αναφέρεται ότι δεν είχε την συστηματική μαθηματική εκπαίδευση που είχαν άλλοι επιστήμονες όπως ο Maxwell.
    Την άποψη αυτή υποστήριζε και ο καθηγητής μας Κ. Μελίδης.
    Η χαρτογράφηση του πεδίου είναι ένας τρόπος να γνωρίσεις το πεδίο.
    Τρόπους χαρτογράφησης του πεδίου μπορούν να βρεθούν σε αρκετά βιβλία,όπως τον Ηλεκτρομαγνητισμό του Krauss:
    http://www.amazon.com/Electromagnetics-Application-Kraus-Daniel-Fleisch/dp/0070702403/ref=sr_1_2?s=books&ie=UTF8&qid=1427879337&sr=1-2&keywords=kraus+electromagnetics

    ΑπάντησηΔιαγραφή
    Απαντήσεις
    1. Χαίρομαι που σου αρέσει η ανάρτηση μου. Ναι το ήξερα ότι ουσιαστικά οφείλεται στο Faraday η ιδέα χαρτογράφησης του ηλεκτρικού πεδίου απλώς για να έχεις μια εποπτική εικόνα πρέπει να καταφύγεις σε αυτές τις τεχνικές. Αυτό δεν ισχύει μόνο για ηλεκτρικό πεδίο αλλά γενικά για διανυσματικά πεδία.

      Διαγραφή
  2. Ευχαριστώ για την απάντηση και τη διευκρίνηση,έχεις απόλυτο δίκιο λέγοντας ότι ισχυει για όλα τα διανυσματικά πεδία.
    Συνέχισε την πολύ καλή δουλειά σου και συγχαρητήρια!

    ΑπάντησηΔιαγραφή