grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1230 Wohnort: Ruhrpott
|
Verfasst am: 18.06.2014, 07:34 Titel: |
|
|
Hallo allerseits!
Nils' Verständnisschwierigkeiten kommen vermutlich daher, daß nemored in seinem Beispielprogramm zwei Schritte gleichzeitig gemacht hat, nämlich das Auszählen der Pixel und deren Bewertung. Ich habe mir daher erlaubt, das Programm so umzuschreiben, daß die beiden Schritte getrennt werden.
Code: | Screen 12
Function f(x As Double) As Double
f = Cos(x)
'f = 1
End Function
Function f2(x As Double) As Double
f2 = 1
End Function
Const pi As Double = Acos(0)*2
Dim x As Double
Dim y As Double
Dim start As Double
Dim ende As Double
Dim schritt As Double
Dim faktorX As Integer
Dim faktorY As Integer
Dim graphpixel As Integer
Dim rechteckpixel As Integer
Dim summe1 As Double
start = -pi/2
ende = pi/2
faktorX = 100
faktorY = 100
schritt = .001
Line (0, 240)-(639, 240), 2 'waagerecht
Line (320, 0)-(320, 479), 2 'senkrecht
'Graph zeichnen
For x = start To ende Step schritt
y = f(x)
PSet (320 + x*faktorX, 240 - y*faktorY),4
summe1 = summe1 + y*schritt
Next
' Graph 'scannen' und Flächeninhalt aufsummieren
For x = 0 To 639
For y = 240 To 0 Step -1
If Point (x, y) = 4 Then
graphpixel += 240 - y 'Anzahl der Pixel zwischen x-Achse und Graph
Exit For
End If
If y = 0 Then 'Lücken im Graphen markieren
Line (x,250)-(x,260)
EndIf
Next
Next
'Referenzrechteck zeichnen
Line (start * faktorX + 320,240)-(ende * faktorX + 320,240 - 1 * faktorY),14,B
'Flächeninhalt des Referenzrechtecks berechnen
rechteckpixel = Int((ende * faktorX + 320) - (start * faktorX + 320)) * faktorY
Print "Direktberechnung: "; summe1
Print "vom Graphen abgelesen: "; pi*graphpixel/rechteckpixel
Locate 20,1
Print "Pixel unter Graph: ";graphpixel
Print "Pixel im Rechteck: ";rechteckpixel
Print " Verhaeltnis:";graphpixel/rechteckpixel
Print " pi * Verhaeltnis:";pi*graphpixel/rechteckpixel
Sleep |
Zunächst einmal wird nur die Anzahl der Pixel unter dem Graphen ermittelt. Da dieses Verfahren nur funktioniert, wenn der Graph keine Lücken hat, werden solche Lücken durch einen kurzen weissen Strich unter der x-Achse gekennzeichnet. Wenn unterhalb des Graphen solche Striche auftauchen, ist das Ergebnis unbrauchbar.
In dem modifizierten Beispielprogramm befinden sich zwischen Graph und x-Achse 19920 Pixel. Das ist zunächst einmal nur eine Zahl ohne allzuviel Informationswert. Aussagekräftig wird sie erst dadurch, daß man sie zu einer geeigneten Referenzfläche ins Verhältnis setzt. In unserem Fall bietet sich die Fläche des umschließenden Rechtecks an. Das Rechteck reicht von -Pi/2 bis Pi/2, hat also eine Breite von Pi. Mit 'faktorX' multipliziert ergibt das 314 Pixel. Die Höhe beträgt 1 (Radius des Einheitskreises) mal 'faktorY', also 100 Pixel. Somit hat die Referenzfläche eine Größe von 31400 Pixeln und repräsentiert den Wert Pi (Halbkreis entsprechend 1/2 Cosinuswelle). Der Rest ist ein simpler Dreisatz: Pi * 19920 / 31400 ergibt eine bewertete Fläche unter dem Graphen von 1,9930...usw.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|