| grindstone 
 
 
 Anmeldungsdatum: 03.10.2010
 Beiträge: 1283
 Wohnort: Ruhrpott
 
 | 
			
				|  Verfasst am: 18.06.2014, 06: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!
 |  |