[itbase2019]Fortran 実習 連立一次方程式の数値解法 練習問題

練習問題 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

注意

  • ピボット選択が必要になることに注意すること.
Last modified:2020/01/30 09:26:41
Keyword(s):
References:[[itbase2019]惑星学実験実習の基礎II] [[itbase2020]惑星学実験実習の基礎II]