3. Übung - 22.03

Hey,

hier unsere versionen der ersten 3 bsp. von der 3. übung (bitte nicht 1:1 übernehmen):











PROGRAM TRAPEZZ
IMPLICIT NONE

DOUBLE PRECISION a,b,e, ex, f, ref, MyInt, Myfunc, Trapez, delta
INTEGER i
EXTERNAL myfunc

a=0.d0
b=4.d0*DATAN(1.d0)
e=0.0000000001d0
!Referenzvariable->startwert ohne abbruch
ref=1000.d0
!Delta=A(i)-A(i+1) soll kleiner als Schranke sein
!Startwert so hoch, dass kein abbruch passiert
delta=10000.d0




i=1
do
!Tapezregel anwenden und FLächen berechnen
F=TRAPEZ(MYFUNC,a,b,i)
delta=DABS(F-ref)
ref=F

!Abbruchbedingung
if(delta.LT.e) exit
!Ausgabe: Anzahl der Stützstellen / Integralwert / Fehler
print*, i,F,delta
i=2*i
END DO


STOP
END

! cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
! Implementation der Funktion:
DOUBLE PRECISION FUNCTION myfunc(X)
DOUBLE PRECISION X
! Rueckgabewert := Name der Funktion !!

MYFUNC = DEXP(X)*DCOS(X)


RETURN
END
! cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
DOUBLE PRECISION FUNCTION TRAPEZ(FUNC,A,B,N)
DOUBLE PRECISION A,B,dx, func
EXTERNAL FUNC
! Rueckgabewert := Name der Funktion !!

dx=(b-a)/N
TRAPEZ=FUNC(A)+FUNC(B)

DO I=1,N-1
TRAPEZ=TRAPEZ+2.d0FUNC(A+Idx)
END DO


TRAPEZ=TRAPEZ0.5d0dx
RETURN
END










!!!

PROGRAM GL
IMPLICIT NONE

DOUBLE PRECISION a,b,c,d,i,func

a=0.0d0
b=4.d0
c=(b+a)*0.5d0-(b-a)0.5d0DSQRT(1.d0/3.d0)
d=(b+a)0.5d0+(b-a)0.5d0DSQRT(1.d0/3.d0)
i=(b-a)0.5d0(func(c)+func(d))
print
, i
END

! cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

DOUBLE PRECISION FUNCTION func(X)
DOUBLE PRECISION X


func = 1.d0-3.d0x+4.d0xx-15.d0xxx


RETURN
END
! cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc








!!!



PROGRAM GL
IMPLICIT NONE

DOUBLE PRECISION a,b,i,func,x,error

external func
!Integralgrenzen:
a=1.d0
b=5.d0

!Funktionsaufruf:
CALL DADAPT(func,a,b,1,1.0d-4,1.d-8,i,error)

!Ausgabe: Integral und Fehler

print*, i,error
END

! cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

DOUBLE PRECISION FUNCTION func(X)
DOUBLE PRECISION X

func = LOG(x)

RETURN
END
! cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc