線形代数を勉強したことがある人なら「マトリクス」という言葉は聞いたことがあると思います。カッコの中に数字が詰まったやつです。なぜ、マトリクス表示をして計算をするのかというと、 わざわざ連立方程式を1つ1つたてるよりも計算スピードが速いし効率的だからです。また、プログラムでマトリクスを表現すると式がシンプルになって理解もしやすいと思います。このマトリクスを表現する 概念が「配列」です。Fortranで配列はデータ型より宣言できるので難しくはありませんが、概念を理解しましょう。
まず、マトリクスとは図のような
ものを言います。
プログラミング言語で書くとどうなるか。
このようなマトリクスを表現する場合、Fortranだけに限らず配列という概念を用います。
「二次元の3×3のaというマトリクス」→「a(3,3)」
これだけです。配列は宣言すれば良いだけなので、本来ならデータ型も宣言して「real a(3,3)」といったような記述になります。 これで、3行3列の箱ができました。この箱にどのような数字を入れるかは自分で決めることができます。例えば、
a(1,3)=2
とすれば1行、3列目に2という値が入ることを意味しています。同様に
a(1,1)=1
であれば1行、1列目に1という値が入ることを意味しています。
早速、Fortranで書いてみる。
さて、ダウンロードしたエディタ(僕はTerapad)を開いてプログラムを書いてみます。 まだコンパイラしていません。とりあえず、「Terapad」を利用している方は
「名前をつけて保存」→保存形式を「全てのファイル」として→「○○.f90」と保存してください。
そうすると、F90ファイルが生成されます。書いたプログラムはこんな感じ。
mtrix.f90のソースコード
! 配列を理解するプログラム
program hairetu
implicit none
real a(3,3)
a(1,1)=1
a(1,2)=2
a(1,3)=3
a(2,1)=4
a(2,2)=5
a(2,3)=6
a(3,1)=7
a(3,2)=8
a(3,3)=9
Write(*,*) ' a(3,3) =',a
stop
end program hairetu
mtrix.f90の説明
3行目の「real a(3,3)」の宣言が配列の全てを示しています。つまり、aというマトリクスが二次元の3行3列の行列であることを表しています。
5~13行目の「a(1,1)=1」等で、それぞれの対応する行列に数値を入力しています。
14行目の「Write(*,*) ' a(3,3) =',a」で気をつけたいのは、3行目でaというマトリクスを宣言しているので、「a(3,3) =',a」で良いということです。間違えやすいミスは、3行3列のマトリクスだから「a(3,3) =',a(3,3)」 と書いてしまうことです。これでは、3行3列目の値のみを出力してしまいますね。
if2.f90をコンパイラしてみる
さて、コンパイラしてみましょう。デスクトップにある「Fortran」フォルダを開いてください。開いたらコマンドプロンプトのショートカットをクリックします。 コマンドプロンプトの画面に「g95.exe ○○○.f90」と入力してEnterキ―を押します。 これまた何のエラーもなくコンパイラできました!すると、フォルダ内に「a.exe」という実行ファイルが生成されます。コマンドプロンプトに「a.exe」と入力すると、
コマンドプロンプトに1~9の値が表示されたのなら成功です。
さて、皆さん根気よく勉強してきました。条件文、繰り返し文、配列が理解できたなら解析テクニックは十分です。次は時刻歴応答解析に用いる「ニューマークのβ法」をFortranでつくりましょう。 次は→「ステップ外力の理論解」
有料メルマガを無料で見てみませんか?⇒ 忙しい社会人、学生のためのビルディング・アップデート