zu 1) und 2)
Du benötigst die Variablen E, Ex, Ey, x(i), y(i) und die Konstante A (siehe unten)
Am Besten setzt Du x(0) != x und x(1..n) = x-Wert der Ladung i, sowie y(0) != y und y(1..n) = y-Wert der Ladung y, dann gilt für
Ex = 1/A*Summe[(x(0)-x(i))/wurzel((x(0)-x(i))^2+(y(0)-y(i))^2)]
Ey = 1/A*Summe[(y(0)-y(i))/wurzel((x(0)-x(i))^2+(y(0)-y(i))^2)]
für alle i von 1 bis n
A = 1/(4*PI*eps0*epsr), für epsr=1.0 (Vakuum) gilt für A = 1/(4*PI*8,854e-12) = 8.9876e+9
Der Betrag der Feldstärke E am Punkt x,y ist dann E = Wurzel(Ex^2+Ey^2)
Summenbildung:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| Ex := 0.0; Ey := 0.0; for i:=1 to n do begin Ex := Ex + 1/A*(x[0]-x[i])/sqrt(sqr(x[0]-x[i])+sqr(y[0]-y[i])); Ey := Ey + 1/A*(y[0]-y[i])/sqrt(sqr(x[0]-x[i])+sqr(y[0]-y[i])); end; E := sqrt(sqr(Ex)+sqr(Ey)); |
Am Anfang definierst Du A sowie die Koordinaten Deiner n Ladungen.
Auch musst Du Dir Gedanken machen, wie Du mit 0 im Nenner umgehst (Abstand zu einer Ladung = 0) Denn dort ist ja das Elektrische Feld unendlich groß, macht also wenig Sinn!
Dann musst Du Dir nur Gedanken machen, wie Du die Orte x und y in eine zweidimensionale Matrix packst und lässt die Orte sowohl in x als auch in y durchlaufen. Dann bekommst Du eine zweidimensionale Ergebnismatrix der Feldstärke. Vielleicht schreibst Du die Berechnung der Feldstärke als Funktion mit der Übergabe der Feldstärke als Ergebnis und als Parameter x und y) Dann hast Du eine zweifache Schleife zur Berechnung der gesamten Matrix des Typs:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| for x := UntergrenzeX to ObergrenzeX do begin For y := UntergrenzeY to ObergrenzeY do begin E[x,y] := Feldstaerke(xWert(x), yWert(y)) end; end; |
Funktion dann wie oben umsetzen
zu 3) Am Besten als Graustufenbild (weiß = größte Feldstärke, schwarz als niedrigste Feldstärke)
Du solltest dann das Minimum bzw. Maximum Deiner berechneten Feldstärken ermitteln und dann die Farbe c wie folgt ermitteln
Delphi-Quelltext
1: 2:
| cWert := round(255*(E[x,y]-Minimum)/(Maximum-Minimum)); c[x,y] := RGB(cWert,cWert,cWert); |
So, ich hoffe, Dir schon mal geholfen zu haben. Den Rest musst Du selber versuchen. (Die hier aufgeführten Codeschnipsel sind nicht fehlerfrei!!!)
Toleranz ist eine Grundvoraussetzung für das Leben.