====== 配列を使う基本的な演算 ======
===== ベクトルの内積を求める =====
2次元平面内に位置ベクトルuとvがあり、それらの成分がそれぞれ(u_1,~u_2)および(v_1,~v_2)であるとする。
この2つのベクトルの内積pを求める演算を考える。
p=u*v=sum{i=1}{2} {u_{i}}・{v_{i}} ・・・・・・・・・・・(2.2)
プログラム中では、配列を利用して、ベクトル成分を次のように表す。
u_1 , u_2 ~ right ~ u(1),u(2)
v_1 , v_2 ~ right ~ v(1),v(2)
矢印の右側にあるのが配列要素(array element)である。配列要素の括弧内の数値を添字(
sibscript)という。数式表現されたベクトル成分x_iの添字と同様に、はいれるに整数型変数を用いて、iの値を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 /)
====== 配列要素の値を入力ファイルから読み取る方法 ======
====== 配列の上下値を超えるアクセス ======
====== 配列とスカラ ======