2010年6月3日木曜日

cos = 余弦を求める - AWK

AWKの数値計算関数と関連機能 ▲
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○awk
余弦を求めます。三角関数のコサインです。

**** 書式
--------
cos( 角度 )
--------

o 角度 -- 単位はラジアン。文字列で指定する事も出来ます(例:"3.9だよ")。
o 戻り値 -- 計算結果


**** 使用例
--------
BEGIN {
  print cos(2); # -0.416147

  print "# 以下、計算結果の確認です。";
  print cos("          2"); # -0.416147
  print cos("2aaa"); # -0.416147
  print cos("aaa2"); # 1

  # cosの値は、0度の時 1(最大値)、180度の時 -1(最小値)になります。
  print cos(0); # 1 0度のラジアン値を指定
  print cos(3.141592654); # -1 約180度のラジアン値を指定
}
--------

o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。


**** 機能
o 数値であると解釈して、余弦を求めます。指定する値の単位はラジアンです。
o 計算結果が0となる辺りでは、誤差が上位桁に登場します。乗算などを行う時は要注意です。
o cosの最大値は 1です。(角度が 0度 = 0ラジアンの時)
o cosの最小値は -1です。(角度が 180度 = πラジアンの時)

o 数値は、文字列の形で指定する事も出来ます。
o 数値の後ろに文字列が続いていても、大丈夫です。
o 先頭に数値以外の文字がある場合
   + 半角空白は読み飛ばします。
   + それ以外の文字があると、0 だと解釈します。


**** 確認した処理系
o Gawk on Windows 3.1.7
o Gawk for Windows 3.1.6
o mawk MBCS (32bit版) 1.3.3
o Mawk for Windows 1.3.3
o original = the one true awk(updated May 1, 2007)


==
関連ページ:
    ▼AWKの数値計算関数と関連機能(▼ABC順)
    ▼AWKプログラムを書く(▼ABC順)
    ▼AWK
    ▼制作メモ
    > atan2 = 逆正接(arctan = アークタンジェント)を求める
    ラジアンの意味
    log = 自然対数(ln)を求める
    +
    sin = 正弦を求める
(2010年6月12日追加。オリジナルawkなどの動作)

ラジアンの意味 - AWK

AWKの数値計算関数と関連機能 ▲
角度の単位です。
o 三角関数(sinなど)を使う時に登場します。

**** ラジアンの意味
o 1ラジアンは、円弧(= 円周の一部)の長さ = 円の半径 となる時に、円の中心から円弧の端を結んだ時に出来る角度です。
   + 1ラジアン = 約57.3度
o π(= 約3.1416)ラジアンで、半円になります。
   + 2πラジアンで、円を1周します。
   + 大きな円を描いて、糸を使って円周の長さを測ってみると、良く分かると思います。
   + (円弧や円周の長さは、「半径の長さ * ラジアンの値」で求める事が出来ます。)


**** ラジアンの計算方法
o ラジアンを計算する時は、円の中心から円弧の端を結んだ、扇形をイメージします。
o その中心角を、「円弧の長さ / 半径の長さ」で表現したものが、ラジアンです。


**** 度数法との関係
o 360度 = 2π ラジアン (π = 円周率)
   + 60度 = (2π * 60 / 360) ラジアン = 約1.05ラジアン


**** メモ
o ラジアンは、難しい事を考えたり、計算したりする時に便利です。
  + ラジアンを使うと、物理法則を表現する時の計算式が、必要最小限になります。
  + 度数法を使うと、「度」に変換する為の、計算の本質に関係が無い部分が必要になります。
o 一方、度数法は、日常で使う時に便利です。
  + 度数法は、ラジアンよりも、直感的で分かり易いです。
  + 「30°(度)」をラジアンで表現すると、「π/6ラジアン」もしくは「約0.52ラジアン」。
  + 「2π/3の方向に線を引いて下さい」と説明を受けるよりも「120度の方向に」の方が、比較的分かり易いです。


==
関連ページ:
    ▼AWKの数値計算関数と関連機能(▼ABC順)
    ▼AWKプログラムを書く(▼ABC順)
    ▼AWK
    ▼制作メモ
    > log = 自然対数(ln)を求める
    exp = 指数関数を求める
    rand = 乱数を求める(擬似乱数)
    +
    sin = 正弦を求める
    cos = 余弦を求める
    atan2 = 逆正接(arctan = アークタンジェント)を求める
(2010年6月12日追加。ラジアンの計算方法)
(2010年6月3日追加。ラジアンと度数法の便利な所)

2010年6月2日水曜日

length = 文字列や配列の長さを調べる - AWK

AWKの文字列操作関数と関連機能 ▲
AWKの配列操作関数と関連機能 <▲>
○(文字数)Gawk on Windows ○(文字数)Gawk △(バイト数。配列不可)mawk32 △(バイト数。配列不可)Mawk ○(バイト数)awk
文字列や配列の長さを調べます。

o 数値を指定すると、文字列に変換した後の長さを調べます。
o 配列サポートは、Gawk系とOriginal(= the one true awk)特有の機能です。


**** 書式
--------
length( [調べたい文字列] )
--------

o 調べたい文字列 -- 省略した時は、変数 $0 の長さを調べます。
   + 次の処理系では、配列を指定する事も出来ます。
      + Gawk on Windows 3.1.7
      + Gawk for Windows 3.1.6
      + original = the one true awk(updated May 1, 2007)
o 戻り値 -- 文字列もしくは配列の長さ

o 文字を数える時の単位は、処理系によって異なります。
   + (漢字などの全角文字が混じっている場合、長さが変わります。)
   + Gawk系は、文字数で数えます。
      + Gawk on Windows 3.1.7
      + Gawk for Windows 3.1.6
   + その他は、バイト数で数えます。
      + mawk MBCS (32bit版) 1.3.3
      + Mawk for Windows 1.3.3
      + original = the one true awk(updated May 1, 2007)


**** 使用例
--------
BEGIN {
  print length("ミクさん。"); # 5 (or 10)

  print length("MikuSan"); # 7
  print length(39.39); # 5
  print length(); # 0。この時には、$0 は空です。
}
{
  print length(); # $0の長さ。入力した行が「39san」の時、5
}
--------

o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。


**** 機能
o 指定した文字列の長さを返します。長さの単位は処理系によって異なります。
o 処理系によっては、配列の長さ(= 要素数)を調べる事も出来ます。
o 指定を省略した時は、変数 $0 の長さを返します。

o 文字列の代わりに数値を指定すると、数値を文字列に変換してから使用します。
   + 長い整数を指定すると、最後の方の桁が0になったり、浮動小数点形式になります。
   + 実数を指定すると、6桁までに丸めたり、浮動小数点形式になります。
   + この動作は変える事も出来ます。詳しくは、「数値から文字列にする時に、実数を7桁以上表示させる方法」

** 処理系に依存する動作
o 文字を数える時の単位は、処理系によって異なります。
   + 文字数で数える処理系
      + Gawk on Windows 3.1.7
      + Gawk for Windows 3.1.6
   + バイト数で数える処理系
      + mawk MBCS (32bit版) 1.3.3
      + Mawk for Windows 1.3.3
      + original = the one true awk(updated May 1, 2007)


**** メモ
o Gawk on Windows 3.1.7は、バイト数で数えさせる事も出来ます。オプション「 -Wctype=ASCII」を追加します。
o Gawk系で、UTF-8のテキストファイルを読み込む場合、1行目に限り、$0と $1について、表示されている文字数よりも多く数える事があります。
     + Gawk on Windows 3.1.7 = 1文字多く数えます。
     + Gawk for Windows 3.1.6 = 2文字多く数えます。
   + 原因は、UTF-8で保存したファイルの先頭にあった、UNICODE特有の見えない文字(= BOM = EF BB BF)。
   + Windows XPのメモ帳で保存する時に UTF-8を指定すると、BOMが付くみたいです。
   + 対策方法は「UTF-8のファイルから、BOMを除去する方法」


**** 確認した処理系
o Gawk on Windows 3.1.7
o Gawk for Windows 3.1.6
o mawk MBCS (32bit版) 1.3.3 -- バイト数で数える。配列は非対応
o Mawk for Windows 1.3.3 -- バイト数で数える。配列は非対応
o original = the one true awk(updated May 1, 2007) -- バイト数で数える


==
関連ページ:
    ▼AWKの文字列操作関数と関連機能(▼ABC順)
    ▼AWKの配列操作関数と関連機能(▼ABC順)
    ▼AWKプログラムを書く(▼ABC順)
    ▼AWK
    ▼制作メモ
    > index = 文字列の登場位置を調べる
    match = 正規表現の登場位置を調べる
    > delete = 配列の要素を削除する
    asort = 配列の要素を並び替える(Gawk専用)
(2010年10月4日変更。Gawk on WindowsのACSIIオプションは、-Wとctypeの間を詰める)
(2010年8月24日追加。配列を指定した時の動作)
(2010年6月20日追加。Gawk on Windowsには、バイト数を数えさせる方法がある)
(2010年6月10日追加。数値を指定した時の動作)