Tricktresorsche Glockenkurve
Eine kleine Fingerübung im old-style, die aus einem Denkansatz heraus abgefallen ist: Eine kleine “grafische” Spielerei zur Darstellung der Gauß-Funktion/ Glockenkurve/ Normalverteilung.
Da dies für mich bereits höhere Mathematik ist, bin ich besonders stolz auf diese kleine Spielerei. Eine schönere Möglichkeit wäre sicherlich die Darstellung im GFW-Framework, aber ich wollte nur schnell sehen, ob die berechneten Werte irgendwie stimmig sind.
GFW-Framework
Bei Interesse schau dir die Demoprogramme GFW_PROG* und GFW_DEMO* einmal an:
GFW_DEMO_HIER3 GFW: Demonstration einer Hierarchie-/Präsentationsgrafik (Drag&Drop)
GFW_DEMO_PRES GFW: Demonstration von GFW mit sichtbarem Datencontainer
GFW_DEMO_PRES1 GFW: Demonstration von Präsentationsgrafiken mit GFW
GFW_DEMO_PRES_MAIN class with application logic of example report “GFW_DEMO_PRES”
GFW_PROG_BAR GFW: Programmierbeispiel für ein Balkendiagramm
GFW_PROG_COLUMNS_AND_TIME_AXIS GFW: Programmierbeispiel für ein Balkendiagramm mit Zeitachse
GFW_PROG_CREATE_CUSTOMIZING GFW: Programmierbeisp. für einfachen Gebrauch von Customizing-Bündeln
GFW_PROG_DC_PERFORMANCE GFW: Programmierbeispiel für die schnelle Datencontainerverwendung
GFW_PROG_GET_CU_BUNDLE GFW: Programmierbeispiel mit Methode if_graphic_proxy~get_cu_bundle
GFW_PROG_HISTOGRAM GFW: Programmierbeispiel für ein Histogramm
GFW_PROG_LABELS GFW: Programmierbeispiel für dieselben Beschriftungen, lange Beschr.
GFW_PROG_MTA GFW: Programmierbeispiel für eine Meilensteintrendanalyse
GFW_PROG_PIE GFW: Programmierbeispiel für ein Kreisdiagramm
GFW_PROG_POINT_WITH_LABEL GFW: Programmierbeispiel für Diagramm mit gekennzeichnetem Punkt
GFW_PROG_PORTFOLIO GFW: Programmierbeispiel für ein Balkendiagramm
GFW_PROG_SPEEDOMETER GFW: Programmierbeispiel für ein Balkendiagramm
GFW_PROG_TIME_AXIS GFW: Programmierbeispiel für ein Punktdiagramm mit Zeitachse
GFW_PROG_TUTORIAL GFW: Programmierbeispiel für eine einfache PräsGrafik = GFW-Tutorial
Code
REPORT zz_gauss_timer_demo NO STANDARD PAGE HEADING LINE-SIZE 1000. CLASS main DEFINITION. PUBLIC SECTION. METHODS start. PROTECTED SECTION. DATA sigma TYPE f VALUE '0.1'. DATA my TYPE f VALUE 0. DATA count TYPE i. METHODS gauss. DATA timer TYPE REF TO cl_gui_timer. METHODS finished FOR EVENT finished OF cl_gui_timer. METHODS clear_screen. ENDCLASS. CLASS main IMPLEMENTATION. METHOD start. gauss( ). timer = NEW #( ). SET HANDLER finished FOR timer. timer->interval = 1. timer->run( ). ENDMETHOD. METHOD finished. gauss( ). ADD 1 TO count. IF count < 10. timer->run( ). ELSE. SKIP TO LINE 28. POSITION 120. WRITE 'FINISHED'. ENDIF. ENDMETHOD. METHOD gauss. DATA e TYPE f VALUE '2.718281828459'. DATA pi TYPE f VALUE '3.14159265359'. DATA x TYPE f. DATA erg TYPE f. DATA anz TYPE i VALUE 51. DATA l TYPE i. "value for result (scaled) clear_screen( ). SKIP TO LINE 3. ADD '0.02' TO sigma. x = -1. DO anz TIMES. "calculate gauss erg = ( 1 / sigma * sqrt( 2 * pi ) ) * e ** ( '0.5-' * ( ( x - my ) / ( sigma ) ) ** 2 ) . "write result WRITE: / x EXPONENT 0 DECIMALS 2, erg EXPONENT 0 DECIMALS 5. "scale result l = erg * 4. "write graph DO l TIMES. WRITE sym_checkbox as SYMBOL NO-GAP. * WRITE icon_bw_apd_source as icon NO-GAP. ENDDO. "add step x = x + 1 / ( ( anz - 1 ) / 2 ) . ENDDO. ENDMETHOD. METHOD clear_screen. SKIP TO LINE 1. write: /20 'x-value result; sigma=', sigma EXPONENT 0 DECIMALS 3 LEFT-JUSTIFIED, 'my=', my EXPONENT 0 DECIMALS 3 LEFT-JUSTIFIED. SET BLANK LINES ON. DO 50 TIMES. DO sy-linsz TIMES. WRITE space NO-GAP. ENDDO. ENDDO. ENDMETHOD. ENDCLASS. START-OF-SELECTION. NEW main( )->start( ).
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024