2次元平面内に位置ベクトルとがあり、それらの成分がそれぞれ(,)および(,)であるとする。
この2つのベクトルの内積を求める演算を考える。
・・・・・・・・・・・(2.2)
プログラム中では、配列を利用して、ベクトル成分を次のように表す。
, (1),(2)
, (1),(2)
矢印の右側にあるのが配列要素(array element)である。配列要素の括弧内の数値を添字( sibscript)という。数式表現されたベクトル成分の添字と同様に、はいれるに整数型変数を用いて、の値をdoループで変化させれば、内積計算は次のように書くことができる。
dotp = 0.00d0 do i = 1, 2 dotp = dotp + u(i) * v(i) end do
上記の例では、doループの終値が2であるが、仮に要素数が100になっても、2から100へ変更するだけで計算を行うことができる。
内積を計算する全体のプログラムは、list2_1.f90のように書くことができる。
program dotp1 !プログラム文 implicit none !暗黙の型宣言を無効にする。 integer i !整数型変数iの宣言 real(8) u(2), v(2), dotp !倍精度型変数の宣言 u(1) = 1.20d0 !配列Uの要素の値 u(2) = 3.40d0 ! v(1) = 4.10d0 !配列vの要素の値 v(2) = 2.60d0 ! write(*,*) (u(i),i=1, 2) ! write(*,*) (v(i),i=1, 2) ! dotp = 0.0d0 ! do i = 1, 2 !内積計算するための反復回数 dotp = dotp + u(i) * v(i) ! end do ! write(*,*) 'ベクトルの内積 = ',dotp !結果の出力 end program dotp1 !プログラム文終了
上下値を数値で指定して配列を宣言する方法
real(8) u(-1:1) !3つの倍精度実数型変数の配列要素 u(-1),u(0),u(1) integer m(0:2) !3つの整数型変数の配列要素 m(0),m(1),m(2)
u(1:2) = (/ 1.2d0, 3.40d0 /) v(1:2) = (/ 4.1d0, 2.60d0 /)