IT pass HikiWiki - [itbase2023]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
== 注意
* ピボット選択が必要になることに注意すること.
講義で説明した, 下の連立一次方程式を解くプログラムを作りなさい.
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
== 注意
* ピボット選択が必要になることに注意すること.