Fortran: Fortran 95: Vektoren- und Matrizenrechnung
Erscheinungsbild
| <<< zur Fortran-Startseite | |
| << Fortran 95 | Fortran 2003 >> |
| < Zeiger | Systemroutinen > |
In Fortran95 können einige elementare Vektoren- und Matrizenoperationen sehr einfach ausgeführt werden.
Beispiel: Addition und Subtraktion von Vektoren (Matrizen)
| Fortran 90/95-Code (free source form) |
program bsp
implicit none
real, dimension(3) :: a = (/3, 2, -5/), b = (/1, -3, -1/)
write(*,*) "a+b: ", a+b
! Ausgabe: a+b: 4. -1. -6.
write(*,*) "a-b: ", a-b
! Ausgabe: a-b: 2. 5. -4.
end program bsp
|
Beispiel: Multiplikation eines Vektors (einer Matrix) mit einem Skalar
| Fortran 90/95-Code (free source form) |
program bsp
implicit none
real, dimension(3) :: a = (/3, 2, -5/)
write(*,*) "3.5*a: ", 3.5*a
! Ausgabe: 3.5*a: 10.5 7. -17.5
end program bsp
|
Beispiel: Skalarprodukt
| Fortran 90/95-Code (free source form) |
program bsp
implicit none
real, dimension(3) :: a = (/3, 2, -5/), b = (/1, -3, -1/)
real :: dot_product
write(*,*) "a.b: ", dot_product(a, b)
! Ausgabe: 2
end program bsp
|
Beispiel: Euklidische Norm eines Vektors
| Fortran 90/95-Code (free source form) |
program bsp
implicit none
real, dimension(3) :: x = (/3, 2, -5/)
real :: x_n
! Norm des Vektors x
x_n = sqrt(sum(x**2))
write(*,*) "Die Norm des Vektors (", x, ") beträgt: ", x_n
! Ausgabe: Die Norm des Vektors ( 3.0 2.0 -5.0 ) beträgt: 6.164414
end program bsp
|
Beispiel: Matrizenmultiplikation
| Fortran 90/95-Code (free source form) |
program bsp implicit none real, dimension(3,2) :: A = reshape( (/3., 2., 1., 1., 1., 2.5/), (/3, 2/) ) real, dimension(2,2) :: B = reshape( (/1., -3., -1., 5./), (/2, 2/) ) real, dimension(3,2) :: C C = matmul(A, B) write(*,*) "Matrix C =" write(*,*) C(1, :) write(*,*) C(2, :) write(*,*) C(3, :) ! Ausgabe: Matrix C = ! 0.000000 2.000000 ! -1.000000 3.000000 ! -6.500000 11.50000 end program bsp |
Beispiel: Transponierte Matrix
| Fortran 90/95-Code (free source form) |
program bsp implicit none real, dimension(2,2) :: A = reshape( (/3., 2., 1., -1.5/), (/2, 2/) ), AT AT = transpose(A) write(*,*) "A =" write(*,*) A(1, :) write(*,*) A(2, :) ! Ausgabe: A = ! 3.000000 1.000000 ! 2.000000 -1.500000 write(*,*) "AT =" write(*,*) AT(1, :) write(*,*) AT(2, :) ! Ausgabe: AT = ! 3.000000 2.000000 ! 1.000000 -1.500000 end program bsp |
| <<< zur Fortran-Startseite | |
| << Fortran 95 | Fortran 2003 >> |
| < Zeiger | Systemroutinen > |