注意点:代入する配列のサイズはn*nになっていること.メインプログラムでは同じサイズの配列を宣言しておかないとエラーになる.
subroutine GJM(b,n) implicit none double precision b(n,n),max,W, a(n,2*n) integer Work(n),i,j,n,m,k,p,q,iw do i=1,n work(i)=i enddo do i = 1, n do j = 1, n a(i,j) = b(i,j) enddo enddo do i = 1, n do j = n+1,2*n if(i == j-n) then a(i, j) = 1.D0 else a(i, j) = 0.D0 endif enddo enddo do k=1,n max=abs(A(k,k)) p=k q=k do j=k,n do i=k,n if(max.lt.abs(A(i,j))) then max=abs(A(i,j)) p=i q=j endif enddo enddo do i=1,n W=A(i,k) A(i,k)=A(i,q) A(i,q)=W enddo do j=k,n+n W=A(k,j) A(k,j)=A(p,j) A(p,j)=W enddo i=Work(k) Work(k)=Work(q) Work(q)=i do j=k+1,n+n A(k,j)=A(k,j)/A(k,k) enddo do i=1,n if(i.ne.k) then do j=k+1,n+n A(i,j)=A(i,j)-A(i,k)*A(k,j) enddo endif enddo enddo do j=n+1,n+n do i=1,n iw=Work(i) A(iw,n)=A(i,j) enddo do i=1,n A(i,j)=A(i,n) enddo enddo do i = 1, n do j = 1, n b(i,j) = a(i,j+n) enddo enddo return end
![]() |
(1) |
次の連立方程式をさきほどのサブルーチンを用いて解け.
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
(2) |
![]() |
![]() |
![]() |
プログラム中で単位行列を作成せよ.その逆行列を求めよ(答えは単位行列).行列のサイズ(n)を100, 200, 400, 800と変化させ,行列のサイズとともに,計算時間がどう変化するか観察せよ.計算時間は
time ./a.outとtimeコマンドを使用することで表示できる.横軸m, 縦軸計算時間(s)でグラフを書き,計算時間がmの何乗に依存しているか確認すること.
下の表はある駅徒歩圏内の中古マンションに関するデータである(多変量解析入門,永田・棟近共著,サイエンス社 より).このデータに基づいて,価格を広さと築年数から予測できるか? どの変数がより価格に影響を与えているか? 予測の精度はどのくらいか? などを定量的に議論する手法を重回帰分析とよぶ.以下,サンプルの番号はj (1からmまで),データの種類の番号はi(1からnまで)とする.以下の式では,yjがサンプル番号jのy,xijがデータ種類i,サンプル番号jのxとなる. この番号つけに注意してプログラムを式のとおりに作成すること.
サンプル番号j | 広さ x1 (m2) | 築年数 x2 (年) | 価格 y (一千万円) |
1 | 51 | 16 | 3.0 |
2 | 38 | 4 | 3.2 |
3 | 57 | 16 | 3.3 |
4 | 51 | 11 | 3.9 |
5 | 53 | 4 | 4.4 |
6 | 77 | 22 | 4.5 |
7 | 63 | 5 | 4.5 |
8 | 69 | 5 | 5.4 |
9 | 72 | 2 | 5.4 |
10 | 73 | 1 | 6.0 |
重回帰分析の目標は,n種類の変数xiから量yを以下の重回帰モデルで予測することである.つまり,下の式でai (i=0からn)を決定することである.
![]() |
(3) |
![]() |
(4) |
![]() |
(5) |
![]() |
(6) |
![]() |
(7) |
![]() |
(8) |
![]() |
(9) |
![]() |
(10) |
![]() |
(11) |
![]() |
(12) |
![]() |
(13) |
![]() |
(14) |
値yの分散(のm倍)Syyを変形すると
![]() |
![]() |
![]() |
|
![]() |
![]() |
(15) | |
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
(16) |
![]() |
(17) |
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
(18) |
データの標準化を行なった上で練習問題4の解析を行い,a1, a2の値の大小からどちらの要素の寄与が大きいか判定せよ.プログラムと結果を送付すること.