IT pass HikiWiki - [itbase2020]Fortran 実習 連立一次方程式の数値解法 練習問題 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

= 練習問題 1

講義で説明した, 下の連立一次方程式を解くプログラムを作りなさい.

2 x +  4 y +  6 z = 20
2 x +  6 y +  8 z = 16
4 x + 10 y + 10 z = 40

== ヒント

* 講義の説明に従って, 少しずつ作ってみましょう.
  * まずは行列やベクトルを用意しなければいけません.
    最初は下のようなプログラムから始めるのが良いでしょう.

      program simlineq

        implicit none

        integer, parameter :: nn = 3
        real :: matrix(nn,nn)
        real :: vector(nn)

        integer :: i
        integer :: j

        ! 左辺の行列の準備
        matrix(1,1) =  2.0
        matrix(1,2) =  4.0
        matrix(1,3) =  6.0
        matrix(2,1) =  2.0
        matrix(2,2) =  6.0
        matrix(2,3) =  8.0
        matrix(3,1) =  4.0
        matrix(3,2) = 10.0
        matrix(3,3) = 10.0

        ! 右辺のベクトルの準備
        vector(1)   = 20.0
        vector(2)   = 16.0
        vector(3)   = 40.0

        ! 行列とベクトルの表示 (確認のため)
        do i = 1, nn
          write( 6, * ) (matrix(i,j), j=1,nn), "|", vector(i)
        end do

      end program simlineq

* 自分ができるところから作っていけば良いですが, 正しく動作するプログラムを作ることができたら, 行っている処理の規則性に注意して,「繰り返し (do loop)」を使うなどして一般化する方法を考えてみましょう.


= 練習問題 2

下の連立一次方程式を解くプログラムを作りなさい.

3.1 a + 0.4 b + 0.7 c + 1.6 d = 5.0
6.9 a + 0.4 b + 6.0 c + 9.0 d = 9.7
3.6 a + 7.5 b + 5.7 c + 8.4 d = 8.8
5.3 a + 2.5 b + 7.5 c + 3.3 d = 8.2

== ヒントと答え

* 答えは下のようになる.
a = 1.59...
b = 0.60...
c = -0.22...
d = -2.25...

= 練習問題 3

講義で説明した, 下の連立一次方程式を解くプログラムを作りなさい.

2 x +  4 y +  6 z = 20
2 x +  4 y +  8 z = 16
4 x + 10 y + 10 z = 40

== 注意

* ピボット選択が必要になることに注意すること.