M. Pester - LV im SS 2017
Arbeit mit Unterprogrammen

(als PDF-Datei mit lesbaren Formeln)

  1. Es ist ein Funktionsunterprogramm zur numerischen Integration (z.B. mittels Simpson-Regel) einer beliebigen Funktion f(x) zu schreiben. Dem Funktionsunterprogramm sind als Parameter die Integrationsgrenzen a,b, die Funktion f und die Anzahl n der zu verwendenden Teilintervalle von [a,b] zu übergeben, d.h.
          Real Function SIMPSON (a,b,n,f)
    
    
    soll folgendes berechnen:
    b

    a 
    f(x) dx ≈  h

    6
    2n

    k=0 
    ck f(xk),       mit

    h=  (b-a)

    n
    ,    xk=a+k  h

    2
    ,    ck = {
    1,
     k=0 bzw. k=2n
    4,
     k=1,3,…,2n−1
    2,
     k=2,4,…,2n−2
    Der so bestimmte Näherungswert des Integrals ist als Funktionswert der Funktion SIMPSON zurückzugeben.
    Die beliebige Funktion f(x) wird als Parameter f an das Programm übergeben. Als Testbeispiel sind mehrere FUNCTION-Unterprogramme zu schreiben (siehe unten), deren jeweils aktueller Funktionsname an die Funktion SIMPSON übergeben wird.
  2. Dazu gehört ein Hauptprogramm, mit dem diese Funktion getestet werden kann. Ausgabe als ,,Tabelle'' für n=1,…,10 jeweils die berechneten Näherungswerte für die Integrale
    π/2

    −π/2 
    sin2 x dx,       π/2

    −π/2 
    cosx dx,        π/2

    −π/2 


     

    1+cos2 x
     
     dx,        …
    Funktionen

    Hinweis: Pi_halbe = ATAN2(1.,0.)
    Ergebnisse:  π/2,   2,   3.820197789027712

  3. Beachte: Im Hauptprogramm, das die Funktion SIMPSON mit einer aktuellen Funktion F1 aufrufen soll, muss der Name F1 des als FUNCTION geschriebenen Unterprogramms als EXTERNAL vereinbart werden, z.B. für ein Funktionsunterprogramm
          REAL FUNCTION MyTestFunc(x)
          ...
    
    ist im Hauptprogramm zu vereinbaren
          REAL      MyTestFunc
          EXTERNAL  MyTestFunc
    oder
          
          REAL, EXTERNAL :: MyTestFunc
    Wenn Standardfunktionen (z.B. COS) als Parameter übergeben werden sollen, ist der typgerechte Name der Funktion mit der Vereinbarung
          INTRINSIC COS   bzw.    INTRINSIC DCOS
    
    
    für REAL bzw. DOUBLEPRECISION zu verwenden.

    Bsp.:

          REAL      Simpson,F1,F3
          EXTERNAL  F1,F3
          INTRINSIC COS
          ...
          write(*,*) n,Simpson(a1,b1,n,F1),Simpson(a2,b2,n,COS),...
          ...
    



File translated from TEX by TTH, version 3.08.