TU Chemnitz, Fakultät für Mathematik, 09107 Chemnitz
Copyright © 2024 by TU Chemnitz. Alle Rechte vorbehalten.
https://www-user.tu-chemnitz.de/~pester/Lehre/LV/fortran/uebung.php?nr=9 - 18. Mai 2024 10:29
Arbeit mit Unterprogrammen |
(als PDF-Datei mit lesbaren Formeln)
- 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
∫
af(x) dx ≈ h 62n
∑
k=0ck f(xk), mit
Der so bestimmte Näherungswert des Integrals ist als Funktionswert der Funktion SIMPSON zurückzugeben.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
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. - 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
∫
−π/2sin2 x dx, π/2
∫
−π/2cosx dx, π/2
∫
−π/2
√
1+cos2 xdx, Hinweis: Pi_halbe = ATAN2(1.,0.)
Ergebnisse: π/2, 2, 3.820197789027712 - 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 vereinbarenREAL MyTestFunc EXTERNAL MyTestFunc
oderREAL, EXTERNAL :: MyTestFunc
Wenn Standardfunktionen (z.B. COS) als Parameter übergeben werden sollen, ist der typgerechte Name der Funktion mit der VereinbarungINTRINSIC 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.