分位数

Fortranによるサンプルソースコード : 使用ルーチン名:g01amf

Keyword: 分位数, 高速

概要

本サンプルは分位数を求めるFortranによるサンプルプログラムです。 本サンプルは以下に示される並べ替えのされていないベクトルについて高速のアルゴリズムを用いて特定の分位数を求め、出力します。

分位数のデータ 

※本サンプルはnAG Fortranライブラリに含まれるルーチン g01amf() のExampleコードです。本サンプル及びルーチンの詳細情報は g01amf のマニュアルページをご参照ください。
ご相談やお問い合わせはこちらまで

入力データ

(本ルーチンの詳細はg01amf のマニュアルページを参照)
1
2
3
4

このデータをダウンロード
G01AMF Example Program Data
11 3                                        : N and NQ
4.9 7.0 3.9 9.5 1.3 3.1 9.7 0.3 8.5 0.6 6.2 : The N data values
0.25 0.5 1.0                                : The NQ required quantiles

  • 1行目はタイトル行で読み飛ばされます。
  • 2行目にベクトルの要素の数(n)と分位数の数(nq)を指定しています。
  • 3行目にベクトルの要素(rv)を指定しています。
  • 4行目に3個の分位(q)を指定しています。

出力結果

(本ルーチンの詳細はg01amf のマニュアルページを参照)
1
2
3
4
5
6
7
8
9
10

この出力例をダウンロード
 G01AMF Example Program Results

 Data Values:
    4.90   7.00   3.90   9.50   1.30   3.10   9.70   0.30   8.50   0.60   6.20

 Quantile     Result

    0.25       2.20
    0.50       4.90
    1.00       9.70

  • 4行目にベクトルの要素が出力されています。
  • 8から10行目に分位と分位数の値が出力されています。

ソースコード

(本ルーチンの詳細はg01amf のマニュアルページを参照)

※本サンプルソースコードは科学技術・統計計算ライブラリである「nAG Fortranライブラリ」のルーチンを呼び出します。
サンプルのコンパイル及び実行方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

このソースコードをダウンロード
    PROGRAM g01amfe

!      G01AMF Example Program Text

!      Mark 23 Release. nAG Copyright 2011.

!      .. Use Statements ..
       USE nag_library, ONLY : g01amf, nag_wp
!      .. Implicit None Statement ..
       IMPLICIT NONE
!      .. Parameters ..
       INTEGER, PARAMETER              :: nin = 5, nout = 6
!      .. Local Scalars ..
       INTEGER                         :: i, ifail, n, nq
!      .. Local Arrays ..
       REAL (KIND=nag_wp), ALLOCATABLE :: q(:), qv(:), rv(:)
!      .. Executable Statements ..
       WRITE (nout,*) 'G01AMF Example Program Results'
       WRITE (nout,*)

!      Skip heading in data file
       READ (nin,*)

!      Read in the problem size
       READ (nin,*) n, nq

       ALLOCATE (q(nq),qv(nq),rv(n))

!      Read in data
       READ (nin,*) rv(1:n)

!      Read in the required quantiles
       READ (nin,*) q(1:nq)

!      Display data
       WRITE (nout,*) 'Data Values:'
       WRITE (nout,99998) rv(1:n)
       WRITE (nout,*)

!      Calculate the quantiles
       ifail = 0
       CALL g01amf(n,rv,nq,q,qv,ifail)

!      Display results
       WRITE (nout,*) 'Quantile     Result'
       WRITE (nout,*)
       WRITE (nout,99999) (q(i),qv(i),i=1,nq)

99999  FORMAT (1X,F7.2,4X,F7.2)
99998  FORMAT (1X,20F7.2)
    END PROGRAM g01amfe


関連情報
© 日本ニューメリカルアルゴリズムズグループ株式会社 2025
Privacy Policy  /  Trademarks