Nächste Seite: Aufgabe 8
Aufwärts: Lösungen
Vorherige Seite: Aufgabe 6
  Inhalt
PROGRAM C_03
IMPLICIT NONE
REAL, ALLOCATABLE :: feld(:)
REAL :: x, h, wert
REAL, EXTERNAL :: sincos
INTEGER :: i, n
WRITE (*,*) 'n, x, h = '
READ (*,*) n, x, h
ALLOCATE (feld(0:n))
CALL taylor (n, x, sincos, feld)
wert = DOT_PRODUCT(feld, (/ (h**i, i=0,n) /))
WRITE (*,*) 'sinus(x+h) = ', wert, SIN(x+h)
END PROGRAM
REAL FUNCTION sincos (x, index)
REAL :: x
INTEGER :: index
IF (MOD(index,2) == 0) THEN
sincos = sin(x) * (-1)**(index/2)
ELSE
sincos = cos(x) * (-1)**(index/2)
ENDIF
END FUNCTION
SUBROUTINE taylor (n, x, f_abl, koeff)
REAL :: koeff(0:n)
INTEGER :: fac
koeff = 0.0
koeff(0) = f_abl(x,0)
fac = 1.0
DO i = 1, n
IF (HUGE(fac)/i < fac) RETURN ! zu grosz !!
fac = fac * i
koeff(i) = f_abl(x,i) / fac
ENDDO
END SUBROUTINE
Reinfried O. Peter
2001-09-07