3. Übung - 22.03

Antworten
paperbag
Beiträge: 34
Registriert: 15.11.2007, 10:22

3. Übung - 22.03

Beitrag von paperbag »

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.d0*FUNC(A+I*dx)
END DO


TRAPEZ=TRAPEZ*0.5d0*dx
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.5d0*DSQRT(1.d0/3.d0)
d=(b+a)*0.5d0+(b-a)*0.5d0*DSQRT(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.d0*x+4.d0*x*x-15.d0*x*x*x


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

Antworten

Zurück zu „Datenverarbeitung für TPH II“