• 検索結果がありません。

2次元配列の取り扱い (1)– ガウスの消去法 – 数値計算講義第6回行列の計算

N/A
N/A
Protected

Academic year: 2021

シェア "2次元配列の取り扱い (1)– ガウスの消去法 – 数値計算講義第6回行列の計算"

Copied!
20
0
0

読み込み中.... (全文を見る)

全文

(1)

数値計算講義 第6 回

行列の計算 (1) – ガウ スの消去法 – 2 次元配列の取り 扱い

カ ーネン コ

金 子

ア レ ク セイ

[email protected] [email protected]

http://www.kanenko.com/

(2)

巨大行列の計算は数値計算の大部分を 占める 1 巨大行列は微分方程式の離散化によ り 生ずる 例: 2 階線型常微分方程式の境界値問題

− d

2

u

dx

2

+ q(x)u = f on [a, b],

u(a) = u(b) = 0 a x

i−1

x x

i i+1

b

区間 [a, b] を N 等分し , h = b − a

N , x

i

= a + hi, i = 0, 1, 2, . . . , N と 置く . 分点での値に u

i

= u(x

i

), q

i

= q(x

i

), f

i

= f (x

i

) と いう 記号を 用いる . 各点 x

i

における 2 階微分を 2 階の中心差分で置き 換え る と ,

(

− u

i1

+ u

i+1

− 2u

i

h

2

+ q

i

u

i

= f

i

, i = 1, 2, . . . , N − 1, u

0

= u

N

= 0

こ れは未知数 u

i

に関する 次のよ う な連立一次方程式と なる .

2

h2

+

q1

h12

0 · · · 0

h12 h22

+

q2

h12

. .. .. .

0 . .. . .. . .. 0

.. . . .. −

h12 h22

+

qN−2

h12

0 · · · 0 −

h12 h22

+

qN−1

 u

1

u

2

.. . u

N2

u

N1

=

 f

1

f

2

.. . f

N2

f

N−1

(3)

行列のプロ グラ ミ ン グ 2

ベク ト ルは1 次元配列である . こ れは簡単.

行列は2 次元配列である . FORTRAN では

DOUBLE PRECISION A(5,5) , X(5), Y(5) こ れは次と 同じ

IMPLICIT DOUBLE PRECISION (A-H,O-Z) DIMENSION A(5,5), X(5), Y(5)

C では

double a[5][5], x[5], y[5];

行列と ベク ト ルの掛け算 Y=AX は

DO 200 I=1,5 ! 外側のループで各成分につき 計算

Y(I)=0 ! 内側のループは級数の和の要領で

DO 100 J=1,5

Y(I)=Y(I)+A(I,J)*X(J) 100 CONTINUE

200 CONTINUE

FORTRAN では X(5) と 宣言する と X(1) ∼ X(5) が使え る が,

C では x[5] と 宣言し たと き に使え る のは x[0] ∼ x[4] と なる .

 y

1

y

2

y

3

y

4

y

5

=

a

11

a

12

a

13

a

14

a

15

a

21

a

22

a

23

a

24

a

25

a

31

a

32

a

33

a

34

a

35

a

41

a

42

a

43

a

44

a

45

a

51

a

52

a

53

a

54

a

55

 x

1

x

2

x

3

x

4

x

5

(4)

行列のメ モリ ーイ メ ージ 3

( 実験プロ グラ ム num6-1.f, num6-1.c)

2 次元配列と 言え ど も メ モリ ーの中ではリ ニアに並んでいる . し かし , FORTRAN と C では並び方に重大な差が生ずる .

FORTRAN で

DOUBLE PRECISION A(3,5) と 宣言し たと き は

A(1,1) A(2,1) A(3,1) A(1,2) A(2,2) A(3,2) A(1,3) A(2,3) ...

C で

double A[3][5];

と 宣言し たと き は

A[0][0] A[0][1] ... A[0][4] A[1][0] ... A[1][4] A[2][0] ...

並び方の違いは普通は気にし なく て よ いが, アク セススピード に関係する . ( 本日の課題 6-1 参照. )

ま た , 大き めに取っ た2 次元配列の一部だけを 使う と き は特に注意が必要.

(5)

配列の扱いに関する 注意 – 1 4

添え 字の範囲: C では 0 から サイ ズ −1 ま での範囲と なる . FORTRAN ではデフ ォ ールト で 1 から サイ ズま での範囲と なる が,

A(-1:1,0:4)

と 宣言すれば, 同じ 寸法で添字の範囲を −1 ≤ i ≤ 1, 0 ≤ j ≤ 4 にずら せる . 初期化: C では全要素に 0 がセッ ト さ れる が,

FORTRAN は必ず自分でク リ アする 必要がある .

配列名を 引数にする と , C 言語でも 参照渡し と なり , サブルーチン で引数の行列の基本変形など を する と ,

呼び出し たプロ グラ ムでその行列の内容が壊さ れる . 必要なら バッ ク アッ プを . メ イ ン と サブで配列の寸法が合っ て いないと 悲劇が起こ る .

main で

INTEGER A(3,4) を 宣言し , 0 に初期化し た後 CALL SUB(A) を する

sub で

INTEGER A(2,2) を 宣言し

A(1,1)=11; A(2,1)=21; A(1,2)=12; A(2,2)=22 と セッ ト

し たと き , メ イ ン に戻っ たと き の A の中身はど う なっ て いる か?

(6)

2 次元配列を 引数と し たと き の注意 num6-2.f, num6-2.c 5 A(1,1)=11 A(1,2)=12 A(1,3)=0 A(1,4)=0 A(2,1)=21 A(2,2)=22 A(2,3)=0 A(2,4)=0 A(3,1)=0 A(3,2)=0 A(3,3)=0 A(3,4)=0

と なっ て く れる こ と が期待さ れる が, 実際にやっ て みる と (num6-2.f) A(1,1)=11 A(1,2)=22 A(1,3)=0 A(1,4)=0

A(2,1)=21 A(2,2)=0 A(2,3)=0 A(2,4)=0 A(3,1)=12 A(3,2)=0 A(3,3)=0 A(3,4)=0 と なる . 何故か?

2 次元配列と 言え ど も , メ モリ ーには1 次元的に並んでいる こ と , サブルーチン への参照渡し は先頭のアド レ スだけである こ と . の2 点から , こ う なる こ と が理解でき る :

メ イ ン での並び方:

A(1,1) A(2,1) A(3,1) A(1,2) A(2,2) A(3,2) A(1,3) ...

サブでの並び方:

A(1,1) A(2,1) A(1,2) A(2,2)

同じ こ と を C でやっ たら ど う なる か? も う 分かる ね . (num6-2.c)

(7)

連立一次方程式を 解く 消去法 6

ではいよ いよ , 連立一次方程式を 解いて みよ う . 連立一次方程式

 

 

a

11

x

1

+ a

12

x

2

+ · · · + a

1n

x

n

= b

1

, a

21

x

1

+ a

22

x

2

+ · · · + a

2n

x

n

= b

2

,

.. .

a

n1

x

1

+ a

n2

x

2

+ · · · + a

nn

x

n

= b

n

は, 行列表現で

(1)

a

11

a

12

· · · a

1n

a

21

a

22

· · · a

2n

.. . .. . . .. ...

a

n1

a

n2

· · · a

nn

 x

1

x

2

.. . x

n

 =

 b

1

b

2

.. . b

n

と なる . ど ち ら でも 同じ なので, 以下後者でやる . 要は, 行基本変形で

(2)

a

11

a

12

· · · a

1n

0 a

22

a

2n

.. . . .. ... ...

0 · · · 0 a

nn

 x

1

x

2

.. . x

n

=

 b

1

b

2

.. . b

n

の形 ( 上三角型 ) に帰着し , 下の方から 順に求めて 行く . (1) を (2) に帰着さ せる 計算を 前進消去と 呼ぶ.

(2) から x

n

,. . . ,x

2

, x

1

を 求める 計算を 後退代入と 呼ぶ.

(8)

前進消去の際の注意 7 ピボッ ト ( 枢軸 ) 選択

純粋数学なら , (1) で a

11

6= 0 のと き , 各 i = 2, . . . , n に対し (1) の第1 行の a

i1

a

11

倍を 第 i 行から 引けば, 第1 列を 0 にでき る :

a

11

a

12

· · · a

1n

a

21

a

22

· · · a

2n

.. . .. . . .. ...

a

n1

a

n2

· · · a

nn

b

1

b

2

.. . b

n

= ⇒

a

11

a

12

· · · a

1n

0 a

22

· · · a

2n

.. . .. . . .. ...

0 a

n2

· · · a

nn

b

1

b

2

.. . b

n

し かし , 数値計算では, たと い a

11

6= 0 であっ て も , a

i1

, i = 1, . . . , n の中から 絶対値最大のも のを 探し 出し , その行を 第1 行と 入れ換え て から , 上の計算を する .

その理由は, 桁落ち の起こ る 可能性を なる べく 排除する ため.

(9)

例: 次のよ う な単精度の実行列は, そのま ま 行基本変形する と 8 1.000000 1.000000 −2.000000

1.000001 1.000000 −1.000000 2.000000 1.000000 −1.000000

1.000000 1.000000 0.000000

!

= ⇒ 1.000000 1.000000 −2.000000 0 −0.000001 1.000002 0 −1.000000 3.000000

1.000000

−0.000001

−2.000000

!

2 行目で桁落ち が起き て いる ので, 以後の精度が1 桁になっ て し ま う . 行の入れ換え を し て から やる と

2.000000 1.000000 −1.000000 1.000001 1.000000 −1.000000 1.000000 1.000000 −2.000000

0.000000 1.000000 1.000000

!

= ⇒ 2.000000 1.000000 −1.000000 0 0.4999995 −0.4999995 0 0.500000 −1.500000

0.000000 1.000000 1.000000

!

= ⇒ 2.000000 1.000000 −1.000000 0 0.500000 −1.500000 0 0.4999995 −0.4999995

0.000000 1.000000 1.000000

!

= ⇒ 2.000000 1.000000 −1.000000 0 0.500000 −1.500000

0 0 0.9999990

0.000000 1.000000 0.000001

!

相変わら ず x

3

の値で桁落ち が生じ て おり , 有効数字1 桁になる が,

今度はそれが x

2

や x

1

の有効桁数に影響し ないので,

固定小数点の立場から 見て 3 変数一組での精度が保証さ れて いる .

( 例え ば, ベク ト ルの長さ など は精度が落ち な いで計算でき る . )

(10)

消去法のプロ グラ ムの書き 方 num6-3.f 9 SUBROUTINE SOLVE(A,B,X,N)

DOUBLE PRECISION A(N,N),B(N),X(N),FACTOR C 前進消去

DO 300 I=1,N IMAX=I

DO 50 K=I+1,N ! ピボッ ト 選択

IF (DABS(A(IMAX,I)).LT.DABS(A(K,I))) IMAX=K 50 CONTINUE

IF (IMAX.GT.I) CALL SWAP(A,B,I,IMAX,N) ! 行交換 DO 200 J=I+1,N

FACTOR=A(J,I)/A(I,I) DO 100 K=I+1,N

A(J,K)=A(J,K)-A(I,K)*FACTOR 100 CONTINUE

B(J)=B(J)-B(I)*FACTOR

200 CONTINUE ! A(J,I)=0, J>I はやる 必要無し 300 CONTINUE

C 後退代入

DO 600 I=N,1,-1 X(I)=B(I) DO 500 J=I+1,N

X(I)=X(I)-X(J)*A(I,J) 500 CONTINUE

X(I)=X(I)/A(I,I) 600 CONTINUE

RETURN END

a

11

a

12

· · · a

1n

a

21

a

22

· · · a

2n

.. . .. . . .. ...

a

n1

a

n2

· · · a

nn

b

1

b

2

.. . b

n

= ⇒

a

11

a

12

· · · a

1n

0 a

22

· · · a

2n

.. . . .. ... ...

0 · · · 0 a

nn

b

1

b

2

.. . b

n

ピボッ ト に選んだ行を 先頭成分で割り 算し て から 他の行を 消去し て も よ い.

こ の場合は上三角行列の対角成分がすべて 1 に帰着さ れる .

同時に

b

の成分も 割る ので, 割り 算の回数が減る わけではない.

(11)

計算量の見積も り 10

簡単のため , 行の入れ換え は無いも のと する . 前進消去は O(N

3

):

比較 (N − 1) + (N − 2) + · · · + 1 = N (N − 1) 2 除算 (N − 1) + (N − 2) + · · · + 1 = N (N − 1)

乗算と 差 {(N − 1)

2

+ (N − 2)

2

+ · · · + 1} 2 + {(N − 1) + (N − 2) + · · · + 1}

= N (N − 1)(2N − 1)

6 + N (N − 1)

後退代入は O(N

2

): 2

乗算と 差 (N − 1) + (N − 2) + · · · + 1 = N (N − 1) 除算 N 2

つま り , 前進消去の方が律速 ( 速度に対する 影響を 支配する ) であり ,

:::::::

全体で

::::::::

O(N

3

)

::::::::::

の計算量と なっ て いる . よ く ある 勘違い:

同じ 方法で O(N

3

) で A の逆行列 C が求ま る . 方程式の解は

X = CB で計算すればよ いではないか?

(12)

行列と ベク ト ルの積の計算量は 11

乗算 N × N = N

2

, 和 N × (N − 1) で O(N

2

) である . DO 100 I=1,N

Y(I)=0

DO 100 J=1,N

Y(I)=Y(I)+A(I,J)*X(J) 100 CONTINUE

し かし , 実用でよ く 現れる 行列は , 非零成分が主対角線の近く だけに 存在する 帯状行列である こ と が多い . i.e. A(I, J) = 0 for |I − J | > b b はバン ド 幅と 呼ばれ , N に依存し ない定数 ( 普通, 空間の次元に依存 ).

こ の場合 , 前進消去・ 後退代入と も に計算量は O(N ) に減少する が , 逆行列は帯状行列になら ない ( 密行列 full matrix).

こ う いう 場合は , 逆行列を 掛ける 方が計算量が大き く な る .

a

11

a

12

0 · · · 0 a

21

a

22

a

23

. .. .. . 0 . .. ... ... 0

.. . . .. ... ... a

n1,n

0 · · · 0 a

n,n1

a

nn

b

1

b

2

.. . .. . b

n

= ⇒

a

11

a

12

0 · · · 0 0 a

22

a

23

. .. .. . 0 . .. ... ... 0

.. . . .. ... ... a

n1,n

0 · · · 0 0 a

nn

b

1

b

2

.. . .. . b

n

帯状行列は正方配列ではなく 長方形の配列 A(N,-B:B) に格納する .

B はバン ド 幅で, 対称行列なら , A(N,0:B) でよ い.

(13)

LR 分解 (LU 分解 ) 12

前進消去は行列に左から 下三角型行列を 掛ける こ と で達成さ れる . LA = R は上三角型と なる ので, A = L

1

R, 従っ て A

1

= R

1

L

前進消去は右辺のベク ト ル

b

L を 掛ける 操作に相当,

後退代入はその結果 L

b

R

1

を 掛ける 操作に相当.

A が帯状行列なら , L, R は帯状の下, 上三角型行列と なる ので , こ の場合は A

1

でなく , L, R を 記憶し て 使え ば,

O(N ) で方程式が解ける .

三角型帯状行列も 逆行列を と る と , 同じ 三角型の密行列と なる ので,

R

1

を 記憶し て し ま う と , 積の計算量は O(N

2

) になっ て し ま う . R を 記憶し , 後退代入で R

1b

を 計算し なければなら ない.

○ 上三角型行列の逆行列は, 上三角型

○ 下三角型行列の逆行列は, 下三角型

○ 対角型行列の逆行列は, 対角型

× 帯状行列の逆行列は, 帯状行列

× 上三角型帯状行列の逆行列は, 上三角型帯状行列

× 下三角型帯状行列の逆行列は, 下三角型帯状行列

(14)

配列のサイ ズを 合わせる 工夫 –1 13

FORTRAN の場合: 整合配列が使え る . SUBROUTINE SUB(A,B,N)

DOUBLE PRECISION A(N,N), B(N) ...

サブルーチン の引数になっ て いる 配列に限り ,

変数の寸法パラ メ ータ N で宣言する こ と ができ る ( 整合配列と いう ) . ある いは, サイ ズを 良い加減にし て 書く . A(1,1) など ( 偽寸法配列と いう ) . ( 後者はコ ン パイ ラ によ っ て は通ら な いこ と も 有る . )

特定のサブルーチン 内だけで使用する 作業領域用配列のサイ ズは,

定数で宣言し なければなら ない.

こ の制約に対する 実用的対処法:

LAPACK や大型計算機のラ イ ブラ リ では, 作業領域用配列も

メ イ ン で宣言し , 各サブルーチン に引数で渡すこ と で,

全体でのメ モリ ー節約を はかっ て いる .

共通仕様の PARAMETER 文で全体のサイ ズを 統一する こ と も でき る . し かし , C のよ う に大域変数・ 定数の定義も 無いので,

各サブルーチン の中で宣言が必要と な り , 直す箇所が検索し やすい と いう 程度の効果し か無い.

C のよ う に #include 宣言が無いので, 分割コ ン パイ ルの場合は更に面倒.

(−→ FORTRAN 90 では改良さ れた .)

(15)

配列のサイ ズを 合わせる 工夫 –2 14 C の場合:

配列のサイ ズを 大域定数にする : const int N=1000; ま たは

#define N 1000

分割コ ン パイ ルする 場合は, こ れを ヘッ ダフ ァ イ ル hoge.h に書き , 各フ ァ イ ルで #include "hoge.h" によ り イ ン ク ルード する .

1 次元配列を 自分で2 次元に使う . double A[1000000];

と し て おき ,

void sub(double *A, int M, int N){

int i,j;

A(M*i+j); /* A[i][j] を アク セス */

}

こ の場合は, malloc と 組み合わせ, 実際に必要なサイ ズが分かっ た段階で 1 次元の配列を 確保する と 更に効果的:

double *B;

B=(double *)malloc(sizeof(double)*M*N);

....

free(B) /* 使い終わっ た作業領域のメ モリ ーを 開放 */

使い終わっ た作業領域は開放し ないと メ モリ ーリ ーク が起こ る .

(16)

実践例と データ の取り 方 num6-4.f 15

最初に挙げた Sturm-Liouville 型2 階常微分方程式の 斉次 Dirichlet 境界値問題

−u

′′

+ q(x)u = f (x), u(0) = u(1) = 0 の数値解を 求めて みる .

用意する 函数: q(x), f (x)

プロ グラ ムはなる べく 汎用的に書く . 動作を 解が解析的に求ま る 例で確認する . 例: q(x) = 0, f = 1 のと き , 解析的な解は u = 1

2 x(1 − x)

計算結果は, 標準出力に出る . こ れを リ ダイ レ ク ト によ り フ ァ イ ルに落し , gnuplot を 用いて グラ フ に描いて みる のが, 標準的手順:

$ g77 num6-4.f -o num6-4

$ ./num6-4 > hoge.dat % こ の > はリ ダイ レ ク ト

$ gnuplot % こ こ から 先の > は gnuplot のプロ ン プト

$ gnuplot > plot "hoge.dat" with linespoints

$ gnuplot > quit   o

Q o num6-5.f は Kerosoft 社のグラ フ ィッ ク ラ イ ブラ リ で直接描画し て いる .

(17)

計算結果のフ ァ イ ルへの書き 込み方 ( 続き ) 16

リ ダイ レ ク ト で, 出力がコ ン ソ ールにも 出る よ う にする には , ./num6-4 | tee hoge.dat

コ ン ソ ールへの出力を 同時にフ ァ イ ルに書き 込むよ う に プロ グラ ムを 作る .

( 引数が与え ら れたと き に限り , そのフ ァ イ ルを 開く よ う にも でき る . ) C でのフ ァ イ ルの開き 方の復習:

FILE *file;

file = fopen("hoge.dat","w");

...

fprintf(file,"%22.15lf ",X[i]);

...

fclose(file);

FORTRAN でのフ ァ イ ルの開き 方:

OPEN(2,FILE=’hoge.dat’,ACCESS=’SEQUENTIAL’) ....

WRITE(2,200) (X(I),I=1,N) ...

CLOSE(2)

200 FORMAT(1H ,4F18.15)

(18)

おま け: 行列式と 逆行列の計算 num6-6.f 17

決定形の連立一次方程式のプロ グラ ム を 少し 変更すればでき る ので,

ついでに作っ て おく と 後で何かと 便利である .

行列式: 上三角型にし て , 全て の主対角成分の積を 返す函数と すればよ い.

ピボッ ト 選択で行交換し たら , 符号を 変え る のを 忘れないよ う に (^^;

逆行列: B(N ) を B(N, N ) に変え , 行基本変形を B の全て の行に A と 同時に適用する .

こ の場合は , A が上三角型になっ た後で, 後退代入の代わり に,

A の対角線から 上の成分を 消去する 操作で, B を 行変形し , 最後に B の各行を A の対角成分で割る .

a

11

a

12

· · · a

1n

a

21

a

22

· · · a

2n

.. . .. . . .. ...

a

n1

a

n2

· · · a

nn

1 0 · · · 0 0 1 . .. ...

.. . . .. ... 0 0 · · · 0 1

= ⇒

a

11

a

12

· · · a

1n

0 a

22

. .. ...

.. . . .. ... ...

0 · · · 0 a

nn

b

11

b

12

· · · b

1n

b

21

b

22

· · · b

2n

.. . .. . . .. ...

b

n1

b

n2

· · · b

nn

= ⇒

1 0 · · · 0 0 1 . .. ...

.. . . .. ... 0 0 · · · 0 1

b

11

b

12

· · · b

1n

b

21

b

22

· · · b

2n

.. . .. . . .. ...

b

n1

b

n2

· · · b

nn

(19)

本日の講義内容の自習課題 18

1 プロ グラ ム見本 num6-1.c, num6-1.f を コ ン パイ ルし , 実行し て みて メ モリ 内部での2 次元配列データ の並び方を 確認する .

2 プロ グラ ム見本 num6-2.c, num6-2.f を コ ン パイ ルし , 実行し て みて サイ ズの異なる 2 次元配列データ の受渡し が起こ す現象を 確認する . 3 num6-4.f と gnuplot を 使っ て

常微分方程式の境界値問題の数値解を 味わう . num6-5.f も 実行し て みる .

  o

Q o num6-5.f は Kerosoft 社のグラ フ ィッ ク ラ イ ブラ リ を リ ン ク する . コ ン パイ ルは第1 回でやっ た通り :

gcc -c xgrf.c (xgrf.o を 作る )

g77 num6-5.f xgrf.o -lX11 -L/usr/X11R6/lib -o num6-5 Cygwin のタ ーミ ナルの場合 , コ ン パイ ルの仕方は,

mizuka/F77 の下にある xgrfw.o を 自分の作業ディ レ ク ト リ にコ ピーし , g77 num6-5.f xgrfw.o -user32 -lgdi32 -o num6-5

によ り , でき た実行可能フ ァ イ ル num6-5.exe を 実行する .

(20)

本日の範囲の試験予想問題 19

問題 6.1 連立1 次方程式を ガウ スの消去法で解く と き , ピボッ ト 選択 を 行う のはなぜか? キーワ ード 「 桁落ち 」 を 用いて 説明せよ . 問題 6.2 ベク ト ル x

y

に行列 a b c d

を N 回反復し て 施し た結果を 求める プロ グラ ムを 次のよ う に書いた. 問題点を 指摘し 訂正せよ .

for (i=0;i<N;i++){

x=a*x+b*y;

y=c*x+d*y;

}

課題 6.3 2 次元配列を コ ピーする プロ グラ ム を C 言語によ り 2 重ループ を 用いて 次のよ う に書いた.

for (i=0;i<N;i++){

for (j=0;j<N;j++){

b[i][j]=a[i][j];

} }

(1) こ の書き 方は正し いか? それと も 添え字の順を 交換し た方が速く なる か?

(2) こ れに対応する プロ グラ ムを FORTRAN 77 で書け. ただし 高速に なる 順番にループを 選択せよ .

問題 6.4 N 次正方行列を 計数行列と する 連立1 次方程式を ガウ スの消去法 で解く と き , 必要と さ れる 計算量を 乗除算の回数で見積も れ. ま た,

巨大なサイ ズの連立1 次方程式の近似解を 求める のに使われる , ガウ ス

の消去法よ り も 効率的な方法を 述べよ . ( 後半は次回のテーマ です. )

参照

関連したドキュメント

の他当該行為 に関して消防活動上 必要な事項を消防署 長に届け出なければ な らない 。ただし 、第55条の3の 9第一項又は第55 条の3の10第一項

このアプリケーションノートは、降圧スイッチングレギュレータ IC 回路に必要なインダクタの選択と値の計算について説明し

第四次総合特別事業計画の概要.

現状では、3次元CAD等を利用して機器配置設計・配 管設計を行い、床面のコンクリート打設時期までにファ

16 単列 GIS配管との干渉回避 17 単列 DG連絡ダクトとの干渉回避 18~20 単列 電気・通信ケーブル,K排水路,.

越欠損金額を合併法人の所得の金額の計算上︑損金の額に算入

この場合,波浪変形計算モデルと流れ場計算モデルの2つを用いて,図 2-38

の会計処理に関する当面の取扱い 第1四半期連結会計期間より,「連結 財務諸表作成における在外子会社の会計