2017年11月28日火曜日

C# 数学4 「統計-2」「偏差値、標準化、分散と不偏分散、標準偏差と不偏標準偏差、平均値中央値最頻値」

C# 統計・微分積分・線形代数への道
目次→http://1studying.blogspot.jp/2017/08/senkei-index.html#kuw04

「統計の基本」
メモっておく。

ここでは、
「×」を「*」
「÷」や「分数」を「/」
で表現します。



「偏差値」の計算


「偏差値」とは…
「偏差値」を使えば、
テストなどで「全体の平均点」を「偏差値50」とした場合、
自分の点数が相対的にどれ位高いのか、もしくは低いのかを分析できます。
「偏差値」の定義は以下のような物です。
  ・「正規分布」に「全ての要素」の数値(テストの点数など)を当てはめる
  ・「平均」を「偏差値50」に固定
  ・「標準偏差σ(バラツキ度)」1つ分を「偏差値10の変化」、
  として変換して求めた数値が
  「偏差値」となります。
「正規分布」では以下のイメージとなります。
  
これを「偏差値」を求める計算式に直すと
  
となります。


計算例:(偏差値)
「x」の要素がそれぞれ
  「x=2」「x=4」「x=8」「x=12」
として、
まずは「平均(average)」を計算します。
  
よって、「平均(average)」が「6.5」と分かりました。
次に「標準偏差σ」を計算します。
  
よって、「標準偏差σ」が「3.840572874…」と分かりました。
ここから、
「x=12」の「偏差値」を計算して見ましょう。
  
よって、
  「x=12」の「偏差値T」は「約64.32」
となります。

「偏差値計算」
参考→http://keisan.casio.jp/exec/system/1308268612


「偏差値」の「各要素の分布」が「正規分布」にならないとき
「正規分布」に従って「偏差値」を考えた時、
ある偏差値以上の人のいる割合は何パーセントか(「各要素の出現率」)
つまり、
「その偏差値は上位約何%か」の目安は以下のような形となります。
  ・偏差値「各要素の出現率」
  80(0.13%)、75(0.6%)、70(2.2%)、65(6.6%)、
  60(15.8%)、55(30.8%)、50(50%)、45(69.2%)、40(84.2%)、
  35(93.4%)、30(97.8%)、25(99.4%)、20(99.87%)
「正規分布」に従うと
  「偏差値75」の人は「上位約0.6%」の人間
と判断できます。

但しこの判断は、
  「各要素の分布」が「正規分布」(ベル型)に近い形状である場合に限る
  「正規分布」に従った場合に限る
事に注意して下さい。
「偏差値」のような「平均を50とした時の相対値」を重視する数値では、
「各要素の分布」が「正規分布」(ベル型)と違う「偏った分布」であっても
許容してそのまま計算を行います。
その場合「偏差値」としては正しい数値と言えるのですが、
理想的な分布では無い為、
当然「正規分布」(ベル型)の「各要素の出現率」による判断に当てはまらなくなります。
繰り返しになりますが、
  「偏差値」とは平均の時を50とした場合を指標として、
  平均からどれだけ離れているのかを分析する為の値
  「正規分布」とは各要素の分布か確率的に収束するべきである理想的な分布の形
です。
「偏差値」は「正規分布」の形を理想とした値ではありますが、
「正規分布」の形でなくても「偏差値」は「偏差値」です。



基準値、標準値(基準化、標準化)


「基準値(基準化)」「標準値(標準化)」
「基準値」「標準値」は同じ意味の言葉です。
「複数の要素の数値」を「基準値に変換、標準値に変換」する事を
「基準化する、標準化する」と呼ぶのですが、
ここでは、
  「標準値に変換」「標準化する」
の言い方に統一して説明を行って行きます。


「標準値、標準化」とは
  「標準化」とは「複数の要素の数値群」を
    「平均を0、標準偏差σを1(分散を1)」
  となるように調整して変換する事です
変換後の値が「標準値」となります。
「標準化」により「標準値」を得る事により、
  集合(配列)の数値の中の1つの数値が
  その集合(配列)の平均を0とした時に
  相対的にどの位置にいるのか
を知る事が出来ます。

「標準値」を求める計算式は以下のようになります。
  
  「平均 = 0、標準偏差σ = 1、分散 = 1」とした場合の
  1要素の値「標準値」が求まります。
ちなみに「標準値」に「*10倍して50を足した」のが「偏差値」です。


計算例:(標準値、標準化)
「x」の要素がそれぞれ
  「x=2」「x=4」「x=8」「x=12」
として、
まずは「平均(average)」を計算します。
  
よって、「平均(average)」が「6.5」と分かりました。
次に「分散」と「標準偏差σ」を計算します。
  
よって、
  「分散」が「14.75」
  「標準偏差σ」が「3.840572874…」
と分かりました。
ここから、
「x=12」の「標準値」を計算して見ましょう。
  
このようにして、
「x」〜「x」の「標準値」を計算した結果が以下の表です。
  
  「標準化」した「x」〜「x」から
    「平均」を求めると「平均=0」
    「分散」を求めると「分散=1」
    「標準偏差σ」を求めると「標準偏差σ=1」
  である事が分かります。
「標準化」すると
  「平均」が「標準値が0」となり
  「平均」より要素の値が低いと「標準値が−マイナス」
  「平均」より要素の値が高いと「標準値が+プラス」
となります。

「標準化」した「正規分布」は以下のイメージとなります。
  
「偏差値」の「正規分布」イメージと見比べてみて下さい。
  
「標準化」した「正規分布」に「*10倍して50を足した」のが「偏差値」です。
  


「分散と不偏分散」「標準偏差と不偏標準偏差」


「標準偏差や分散」で「母」「標本」「不偏」などが頭に付いたときや、
それらを表すアルファベット記号の違いが混乱しやすく感じます。
「不偏分散u2」「不偏標準偏差u」について学ぶついでに整理していきます。


「母集団」と「標本」(推測統計とは)
「母集団」は「要素全体」を指します。
「標本」は「母集団の中から抽出した一部の要素全体」を指します。
「標本」から「母集団」の状態を推測する事を「推測統計」と言います。
  「母集団」…「標本」の例
  「 全ジャンプ読者」…「 ジャンプ読者内でアンケートはがきを送った人々」
  「 全TV視聴者の世帯」…「 TVの視聴率調査に協力している世帯」
  「全世界の高校3年生の偏差値」…「日本全国の高校3年生の偏差値」
  「 日本全国の高校3年生の偏差値」… 「高校3年生1クラス内の偏差値」
実際、
何を「母集団」として、その中のどの範囲を「標本」と捉えるかは判断により変わり、
この判断によっては後の計算結果の信頼度にも影響します。
選挙の出口調査や政党支持率予想、アンケートなどで母集団の「推測」を行っても、
調査機関や調査方法により推測と実体が違ってしまう事があるのはこの為です。
「標本(サンプル)」の取捨選択はプロの調査機関でも判断が難しい問題なのです。


「母平均μ」「標本平均x
「母集団」の平均が「母平均μ(ミュー)」、
「標本」の平均が「標本平均x」です。

「母平均」と「標本平均x」は同じ計算式で良い決まりです。
「母集団」の平均と「標本」の平均では値が近くなる為です。
  
これを踏まえて「分散」の説明をします。


「母分散σ2」と「標本分散s2」と「不偏分散u2
「分散」とは各要素の「バラツキ度」の事です。
本来「分散」は「母分散σ2」を使用して計算を行うのが正しいのですが、
「統計」では常に「母集合」全ての値を取得できる状態では無い場合や、
全てを計算するコストを掛けられない事がよくあります。
そのような時は複数の「標本(サンプル)」要素から計算して、
「母分散σ2」を推測する必要が出てきます。
まず、式の違いを見て下さい。
「母分散σ2
  全ての要素を元にして「分散」を計算する為の式です。
  
  現実の状況に即した最良の「分散」の値が取得できます。

「標本分散s2
  「sample variance、標本のバランス」のイニシャル「s」を使用。
  「標本分散s2」は「母分散σ2」と同じ式です。
  
  「標本となる要素数」が十分多ければ誤差は少ないのですが、
  「標本となる要素数」が少なくなる程「母分散σ2」に比べて、
  答えとなるバラツキ度の数値が小さく見積もられる特徴があります。

「不偏分散u2(標本不偏分散u2)
  「unbiased variance、公平なバランス」のイニシャル「u」を使用。
  「不偏分散u2」は「標本分散s2」に「−1」の「補正」が入ったものです。
  
  以下のような書き方もできます
  
  「標本となる要素数」が少なくても「標本分散s2」に比べて、
  より「母分散σ2」に近い値が取得できます。

「分散V[X]」
  「確率変数X」の分散「分散V[X]」については
  「統計-基本3」以降の「確率と期待値」について解説する時に説明します。

「母分散」の「標本(サンプル)」である「標本分散s2」は、
「標本となる要素数」が少ないと「母分散σ2」より数値が小さくなります。
これを、より「母分散σ2」に近づける為に
分母に「−1」の「補正」を加えたのが「不偏分散u2」です。

ここからがややこしいのですが、
一部の書物やWebでは
「不偏分散u2」の式を「標本分散s2」として紹介や表記する事例をよく目にします。
厳密にはこの定義式の表記方法でも間違えではないのですが、
  「補正」の入っていない「標本分散s2
  「補正」の入った「不偏分散u2
は区別して理解しておいた方が後々混乱しにくいと思います。
この形で覚えておいた方が良いでしょう。
その上で混同使用される事があるという現状を知っておいて下さい。
また、
「標本分散s2」や「不偏分散u2」の式を「標本(サンプル)」として扱わないで、
最初から「母分散σ2」に見立てた前提で「分散σ2」と記述を行って
説明される事がよくあります。
これらを踏まえて「標準偏差」の説明をします。


「母標準偏差σ」と「標本標準偏差s」と「不偏標準偏差u」
「標準偏差」とは「√分散」の計算を行った「バラツキ度」の事です。
本来「標準偏差」は「母分散σ2」を使い「母標準偏差σ」を計算するのが正しいのですが、
それがままならない時は「標本分散s2」や「不偏分散u2」から「標準偏差」を推測します。
式の違いを見て下さい。
「母標準偏差σ」
  全ての要素を元にして「標準偏差」を計算する為の式です。
  
  現実の状況に即した最良の「標準偏差」の値が取得出来ます。

「標本標準偏差s」(標本偏差s)
  「sample variance、標本のバランス」のイニシャル「s」を使用。
  「標本標準偏差s」は「母標準偏差σ」と同じ式です。
  
  「標本となる要素数」が十分多ければ誤差は少なくなりますが、
  「標本となる要素数」が少なくなる程「母標準偏差σ」に比べて、
  答えとなるバラツキ度の数値が小さく見積もられる特徴があります。

「不偏標準偏差u」(不偏標本標準偏差u)
  「unbiased variance、公平なバランス」のイニシャル「u」を使用。
  「不偏標準偏差u」は「標本標準偏差s」に「−1」の「補正」が入ったものです。
  
  以下のような書き方もできます
  
  「標本となる要素数」が少なくても「標本標準偏差s」に比べて、
  より「母標準偏差σ」に近い値が取得できます。

「母標準偏差σ」「標本標準偏差s」「不偏標準偏差u」の違いは
「母分散σ2」「標本分散s2」「不偏分散u2」の違いに準じる形となり、
結果、以下のような事が言えます。

「母標準偏差σ」の「標本(サンプル)」である「標本標準偏差s」は
「標本となる要素数」が少ないと「母標準偏差σ」より数値が小さくなります。
これを、より「母標準偏差σ」に近づける為に
分母に「−1」の「補正」を加えたのが「不偏標準偏差u」です。
(「補正」とは分母の観測個数nから1を引く事を指します)

「分散」の時と同様に「標準偏差」でも以下の使われ方をする事があります。
  「不偏標準偏差u」を「標本標準偏差s」として「補正」折り込み済みで
  紹介や表記する事例がある。
  「標本標準偏差s」や「不偏標準偏差u」の式を「母標準偏差σ」と見立てて
  「標準偏差σ」として説明する事がある。
混乱しやすい部分なので気をつけて下さい。


「平均値(アベレージ)、中央値(メジアン)、最頻値(モード)」


「平均値(アベレージ)」「中央値(メジアン)」「最頻値(モード)」
「平均値、算術平均」(アベレージ)
  「全部の要素の数字を足してから要素の数で割ったもの」
  が「平均値」です。「算術平均」とも言われます。
    「{1, 2, 3, 4, 5, 6}」
  から「平均値」を求める場合
    「(1+2+3+4+5+6)/6 = 3.5」
  よって、「平均値 = 3.5」

「中央値」(メジアン)
  「昇順か降順に要素の数字を並べた時、中心に来る値」
  が「中央値」です。
    「{1, 2, 2, 3, 4, 5, 6}」
  から「中央値」を求める場合「真ん中の3が中央値」となります。
  よって、「中央値 = 3」

    「{1, 2, 3, 34, 5, 6, 7}」
  のように「要素の数が偶数」の場合、
  「真ん中の2つの要素を足して2で割った数が中央値」となります。
    「(3+4)/2 = 3.5」
  よって、「中央値 = 3.5」

「最頻値」(モード)
  「一番出現回数の多い要素の数値」もしくは「一番出現回数の多い範囲」
  が「最頻値」です。
「最頻値」
    「{1, 2, 3, 3, 4, 5, 5, 5}」
  から「最頻値」を求める場合「出現回数が一番多い5が最頻値」となります。
  よって、「最頻値 = 5」

「最頻値が定まらない」
    「{1, 2, 3, 4, 5, 6}」
  のように「最頻値が定まらない」事があります。
  よって、「最頻値 = 定まらない」

「二峰性により最頻値が定まらない」
    「{1, 2, 2, 3, 4, 4, 5}」
  「出現回数が一番多いのが2と4」と2カ所出現する事を
  「二峰性(にほうせい)」と言います。
  「最頻値が複数あり、定まらない」状態です。
  よって、「最頻値 = 定まらない」

「多峰性により最頻値が定まらない」
    「{1, 2, 2, 3, 4, 4, 5, 6, 6}」
  「出現回数が一番多いのが2と4と6」と複数存在する事を
  「多峰性(たほうせい)」と言います。
  これも「最頻値が複数あり、定まらない」状態です。
  よって、「最頻値 = 定まらない」
  (「出現回数が一番多い所」が1カ所と定まる事は「単峰性」と言う。)

「最頻値が定まらない時の解決方法」
  「最頻値」が「定まらない」場合は、
  「特定の範囲で要素が何度が現れるか」で分けるとうまく行く事があります。
    「{1, 3, 5, 11, 13, 24}」
    ↓範囲分け
    「1〜10は3度、11〜20は2度、21〜30は1度」
  よって、「最頻値 = 1〜10」


分布図による「平均値、中央値、最頻値」のパターン
分布図の形によって、
「平均値(アベレージ)」「中央値(メジアン)」「最頻値(モード)」に
大体以下の違いが出ます。
・中央が盛り上がった山型の分布図
  
  「平均値、中央値、最頻値」が山の中心付近に集まる特性がある。
  「正規分布」の理想的な形(ベル型)です。

・片側に盛り上がった山型の分布図
  
  山の峰から「最頻値、中央値、平均値」の順に並びやすい特性がある。




C# 統計・微分積分・線形代数への道
次へ→http://1studying.blogspot.jp/2017/08/senkei-index.html#kuw05





以下のサイトを参考にしました。

標準正規確率表(σの確率表)
http://aoki2.si.gunma-u.ac.jp/lecture/Bunpu/normdist/hyojunka.html#tab1

偏差値とは何かをおさらい!意味・求め方・正規分布との関係性のまとめ
https://atarimae.biz/archives/9109

分散の求め方と公式。その有用性について
https://atarimae.biz/archives/8782

不偏標準偏差の出し方
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11148040646

統計学における分散と不偏分散 例題でわかりやすく解説
https://to-kei.net/basic/glossary/variance/

不偏標本分散の意味とn-1で割ることの証明
https://mathtrain.jp/huhenbunsan

勘違いしやすい統計用語の定義。標本の大きさと標本数・母数・不偏標準偏差など
https://atarimae.biz/archives/10319

統計のウソ
http://ronri2.web.fc2.com/tokei.html
http://ronri2.web.fc2.com/tokei04.html

「12-5. 確率変数の分散」
https://bellcurve.jp/statistics/course/6716.html

さまざまな確率分布
http://www.biwako.shiga-u.ac.jp/sensei/mnaka/ut/statdist.html

統計web:統計学の時間
https://bellcurve.jp/statistics/course/

数学記号の表
https://ja.wikipedia.org/wiki/%E6%95%B0%E5%AD%A6%E8%A8%98%E5%8F%B7%E3%81%AE%E8%A1%A8

数式記号の読み方・表し方
http://izumi-math.jp/sanae/report/suusiki/suusiki.htm



2017年11月16日木曜日

C# 数学6 「関数f(x)と関数yとx」(等式 不等式 恒等式 方程式 関数 次数次式 元)

C# 統計・微分積分・線形代数への道
目次→http://1studying.blogspot.jp/2017/08/senkei-index.html#kuw06

「関数の基礎」メモっておく。

ここでは、
「×」を「*」
「÷」や「分数」を「/」
で表現します。



「関数f(x)と関数yとx」


「関数f(x)」とは(f(x)はxの関数)
「f(x)」は「エフエックス」と読み「関数」を指します。
「f」は「function」(関数)の略です。
係性のある(入力)値と(出力)値」の繋がり事を「関数」と呼びます。
  「f(x)はxの関数」のとき「関数f(x)」は
  「入力」を「x」、「出力」を「f(x)」と見立てた「関数」となります
  
  「関数f(x)」へ入力する数値となる「変数x」を「説明変数x」と呼びます。

「関数y」とは(yはxの関数)
  「入力値xの値」により、1つの「出力値yの値」が決まるとき
    「yは、xの関数」
  と言い、
    「y=f(x)」(←入力xの値を「f(x)」が処理した結果を「y」とする)
  と記述します
  
  「関数y」として扱う「変数y」を「目的変数y」と呼びます。


「関数f(x)」と「関数y」のグラフ
  「f(x)=x+2」
  「y=x+2」
のような「関数の式」では必ず、
「xの数値」が決定すると「f(x)やy」が1つの数値に確定します。
(「x」の数値の確定により「f(x)やy」の数値が1つの値に確定しない場合は
「関数」とは言えません)
この「関数」の「入力値と出力値の関係性」を「グラフ」にした物が
「関数グラフ」です。
  
  「関数の式」を「関数グラフ」にする事によって、
  「入力数値」がいくつのとき「出力数値」がいくつになるかの関係性が
  見た目にとてもわかりやすくなります。  


「関数、関数グラフ」の注意点(方程式のグラフ)
「関数の式」とは、
  「xに何か値を入れると必ずf(x)やyの値が1つに決まる
  (「x」に値が入ると「関数f(x)や関数y」が1つの値に確定する)
ような関係性の式を指します。
なので、
  「関数f(x)、関数y」から出力される数値は必ず1つ
でなければいけません。
関数式である「f(x)=x」「y=x
  

関数式ではない「f(x)=√xまたは−√x」「y=√xまたは−√x」
  

「方程式のグラフ、円の方程式のグラフ」(陰関数)
  



1次式2次式3次式とは(次数と次式と元)
この後で「方程式」と「関数」についてを学ぶためには、
「n次数」と「n次式」についての理解が必要となりますので説明します。
式の中で
  「実数」の部分を「0次数」
  「変数(xやyなど)」が「単独」で使われた部分を「1次数」
  「変数(xやyなど)」同士をn回「掛けた」部分を「n次数」
と表現して、
  その式の中で使われる一番大きな次数の数をnとすると、
  その式は「n次式」の式と言えます。
式の中で使われた最大の「次数」が
  「0次数」なら「0次数」
  「1次数」なら「1次式」
  「2次数」なら「2次式」

「次式」の判断例を幾つか見てみましょう。
「1+2*3」→「0次式」
  「1」は0次数、「2*3」は0次数
  この式の「最大次数は0」の為「0次式」です。
「x+1」→「1次式」
  「x」は1次数、「1」は0次数
  この式の「最大次数は1」の為「1次式」です。
「x」→「2次式」
  「x」は2次式
  この式の「最大次数は2」の為「2次式」です。
「x−abc+4d3e+2」→「3次式」
  「x」は2次式、「abc」は3次式、「4d3e」は2次式、「2」は0次式
  この式の「最大次数は3」の為「3次式」です。

「元」について…
「式」の中にある「変数の種類」の総数を「元」と言います。
  「6x+4x−10」→「1元2次式」
  「6x+4y−10z」→「3元2次式」
  「6xyz+2y」→「3元3次式」
  「6xz+2y」→「3元6次式」
後述の「方程式」の時は以下のような呼び方ができます。(この例の右辺数値は適当です)
  「6x+4x−10=0」→「1元2次方程式」
  「6x+4y−10z=1」→「3元2次方程式」
  「6x+xyz=2」→「3元3次方程式」


「等式」と「不等式」と「恒等式」と「方程式」と「関数」の違い
「恒等式」と「方程式」と「関数」があやふやだと困るので、
ここでそれぞれの違いを軽くまとめておきます。
「等式」とは
「=」(イコール)で結ばれた式の事です。
  「(式A)=(式B)」
  「2+3 = 4+1」や「a+b = c+d」など
  「左の式」と「右の式」のバランスが等しい。
「=」(イコール)の事を「等号」と言います。

「不等式」とは
「≧や≦」「>や<」「≠」(不等号)などで結ばれた式の事です。
  「(式A)<(式B)」
  「1+2 < 3+4」や「a+b < b+d」など
  「左の式」と「右の式」のバランスが等しくない(不等である)。
「≧≦><≠」の記号の事を「不等号」と言います。
「変数(xやyなど)」が指す「答えの範囲を解くため」に不等式を使います。
(「方程式は変数の指す値」「不等式は変数の指す範囲」を求める事が出来ます)

「恒等式」とは(「等式」の一部)
「公式、定理、定義、法則」などと呼ばれる
「=」で結ばれた「証明する為の等式」は全て「恒等式」です。
  「(式A)= (式B)」
  「1 = 1.0」や「x2 = x*x」や
  「(x + y)2 = x + 2xy + y」など
  式で使われた「変数(xやyなど)」にどんな値が入っても
  「左の式」と「右の式」のバランスが等しくなり式が成立する。
  (「証明する為の等式」であれば、変数が式になくても良い)
「恒等式」は「等式」の中の一部です。

「方程式」とは(一次方程式 二次方程式 三次方程式)
「答えを解く為に存在する問題となる等式」つまり、
「答えを解く為の等式」の事を「方程式」と呼びます。
  「(式A)=(式B)」
  「2x+1 = 7」や「x+3x−4 = 0」など
  「変数(xやyなど)」の「答えを解く為の等式」。
「方程式」は「等式」の中の一部です。

「方程式」では式が「1次式、2次式、3次式」かによって、
「一次方程式、二次方程式、三次方程式」と呼び方が変わります。
「方程式」は変数「xやy」などの、分からない変数の解を求める為に使う式です。
  「一次方程式」の例(1次式)
    「2x−2 = 0」は「x = 1」が答え。
    「2x+1 = 7」は「x = 3」が答え。
    参考→http://keisan.casio.jp/exec/system/1215392483
  「二次方程式」の例(2次式)
    「x+3x−4 = 0」は因数分解(因数分解は後ほど習います)すると
    「(x+4)*(x−1) = 0」となり「x=−4とx=1」が答え。
    参考→http://keisan.casio.jp/exec/system/1161228770
  「三次方程式」の例(3次式)
    「x−2x−11x+12 = 0」は「x=−3とx=1とx=4」が答え。
    参考→http://keisan.casio.jp/exec/system/1256966554
「方程式」では「恒等式」を使用して答えを解きます。

「関数」とは(1次関数2次関数3次関数)
「関数式」は「グラフ化」した物とセットでよく扱われます。
  「xに何か値を入れると必ずf(x)やyの値が1つに決まる
ような関係性の式を「関数式」と言います。
「関数」の中で行われている計算を式として表す時、
「=の右側の式」は
  「変数」に値が入った時に変換するルールとなる式
となります。
  「(関数)=(変換ルール式)」
  これに従い「関数式」
    「f(x) = x+2」
    「y = x+2」
  のように記述できます。
  この際「関数」の出力は、
    「関数f(x) =x+2」では「f(1) = 3」
    「関数y=x+2」では「x=1のときy=3」
  のようになります。
「関数式」で使用する「=」は「等式」とは違い「変換ルール式」を指定するものです。

注意:
  「関数」同士の「等式」や「方程式」の事を
  「関数等式」や「関数方程式」と言います。
    「f(x+y) = f(x)+f(y)」
  のように記述します。
  ここでの「=」は「等式」を意味します。
  「関数式」で使用する「=」は「変換ルール式」を指定します。
  違いに注意して下さい。

「関数」では「=の右側の式」が「1次式、2次式、3次式」かによって、
「1次関数、2次関数、3次関数」と呼び方が変わります。
「関数」は「変数」に様々な数値を入れた時の「解の値の変化」を知る為に使う式です。
  「1次関数」の例(1次式)
    「f(x)=2x−2」
    「y=2x−2」
    参考→http://www.wolframalpha.com/input/?i=f(x)%3D+2x-2
  「2次関数」の例(2次式)
    「f(x)=x+3x−4」
    「y=x+3x−4」
    参考→http://www.wolframalpha.com/input/?i=f(x)%3Dx%5E2%2B3x-4
  「3次関数」の例(3次式)
    「f(x)=x−2x−11x+12」
    「y=x−2x−11x+12」
    参考→http://www.wolframalpha.com/input/?i=f(x)+%3D+x%5E3%E2%88%922x%5E2%E2%88%9211x%EF%BC%8B12


1次関数2次関数3次関数のグラフ
「1次関数」「2次関数」「3次関数」の式を「グラフ」にするとそれぞれ、
  「1次関数グラフ」は「直線」
  「2次関数グラフ」は「放物線」
  「3次関数グラフ」は「曲線」
の「グラフ」になります。
  
  「1次関数」直線グラフ、「2次関数」放物線グラフ
  については「他の章」でさらに詳しく学ぶ予定です。




C# 統計・微分積分・線形代数への道
次へ→http://1studying.blogspot.jp/2017/08/senkei-index.html#kuw07





以下のサイトを参考にしました。

【2次関数】f (x)の意味
http://kou.benesse.co.jp/nigate/math/a14m0205.html

関数f(x)[意味・使い方・読み方]
http://manapedia.jp/text/2501

恒等式と等式の違いは何ですか?
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1348651388

方程式と恒等式の違い
https://mathtrain.jp/equ_iden

【二次関数】
http://wakarimath.net/explanation/q.php?pID=E00010

3次関数はどうなる?
http://mtf.z-abc.com/?eid=829022

グラフィカルに数式を表示できる
http://www.wolframalpha.com/input/?i=y%3D-x

数学記号の表
https://ja.wikipedia.org/wiki/%E6%95%B0%E5%AD%A6%E8%A8%98%E5%8F%B7%E3%81%AE%E8%A1%A8

数式記号の読み方・表し方
http://izumi-math.jp/sanae/report/suusiki/suusiki.htm

2017年11月8日水曜日

C# 数学17 「常用対数、ネイピア数e-基本1、自然対数-基本1」e log ln exp

C# 統計・微分積分・線形代数への道
目次→http://1studying.blogspot.jp/2017/08/senkei-index.html#kuw17

「常用対数と自然対数、exp、log、ln」について説明、メモ。


ここでは、
「×」を「*」
「÷」や「分数」を「/」
で表現します。



底、真数、指数、対数


真数と対数とは
「真数」と「対数」を求めるには以下のように計算を行います。
  
それぞれの「答え」は、
  「真数を求める = 8」(2の3乗は?、?の答えは8)
  「対数を求める = 3」(2の?乗は8、?の答えは3)
となります。

「底、真数、指数、対数」はそれぞれ以下の部分を指す名称です。
  
「指数」と「対数」は同じ意味を指す言葉ですが、
言い回しによって使い分けます。
  2の3乗の「指数」は3です。(「真数」は8です。)
  2を「底(てい)」とする(「真数」)8の「対数」は3です。
のように使い分けます。


「対数log」、常用対数について


関数電卓で「対数log」を計算
「log」は「対数」が知りたい時に使います。
  「log底真数は対数乗」(底の対数乗が真数)
と覚えます。
(「底(てい)」が何乗されて「真数」になるか=「対数」)
「関数電卓」で「対数」を求める際は、
「log」の「底(てい)」を入力しないで計算を行う事に注意して下さい。
  下図のように「logba = log(a)/log(b) = 対数」として計算します。
  
例えば
  「log28」は「ろぐ に の はち」
のように読みます。
「log28」を「関数電卓」で計算する場合、
  「log(8) / log(2) = 3」
と計算します。
結果、対数が「3」となり、
  「2を3乗すると8になる」
事が求まりました。

「log」の具体的な計算例は後述『「底の計算公式」計算例』でやるとして、
まずは、
  「関数電卓」で使われる「log()」は「常用対数log10」の省略系である
という事を説明していきます。


「常用対数」について…(log10
「常用対数log10」とは「10を底(てい)とする対数」の事です。
「関数電卓」で使用される「log」は、
「底(てい)」を指定しないと「常用対数log10」として扱います。。
つまり、
  「関数電卓」で、
  「log(1000)」と入力した場合「log101000」と同じ意味。
となります。
  ↓「log101000」のイメージ
  

「関数電卓」によっては、
「log(10,1000)」など「底(てい)」を明示入力出来る機種もありますが、
通常は「log(1000)」のように入力します。
(「常用対数log10」の他に、
「自然対数log」という「ネイピア数eを底(てい)とする対数」も存在します)

注意!
C#のプログラムでは
  「Math.Log10(8)」とすると「常用対数log108」となり、
  「Math.Log(8)」とした場合「自然対数log8」として解釈されます。
  つまり、
  「関数電卓」では「底(てい)」を省略時「常用対数log10」として扱いますが、
  「プログラム」では「底(てい)」を省略時「自然対数log」として扱います。
  「関数電卓」と「プログラム」で省略時の解釈が逆になるので注意が必要です。
後述する
  「C#で常用対数(log10)や自然対数(logeやln)を扱う」
の項でC#での記述例を記載します。


関数電卓の記述で統一
今後学ぶ「微分」などの「ネイピア数e」を頻繁に使う式では、
「自然対数log1000」の式の方を「log1000」と省略する事もあります。
この場合も「関数電卓」とは違う解釈となる為注意が必要です。
  「関数電卓」では
  「log1000」とした場合「常用対数log101000」を指す。
と、厳格に定められています。
このブログでは混乱しないように、
厳格に定められた「関数電卓」の記述方式に統一して説明を行います。



「対数log」の公式


「対数log」の公式4パターン
・定義
  「0 < a」(「a」は「底(てい)」)
  「1 ≠ a」(「a」は「底(てい)」)
  「0 < M」「0 < N」(「MやN」は「真数」)
この「定義」を前提に
「対数log」の公式を4パターン紹介します。

「logの性質」となる公式
  「loga1 = 0」
    「loga1 = log(0)/log(a) = 0/log(a) = 0」
    (答えが対数0なので、
     試しに指数0で計算してみると「a0 = 1」と逆算できます)
  「logaa = 1」
    「logaa = log(a)/log(a) = 1」

「log真数の積」から「対数logの和」への公式
  「logaMN = logaM + logaN = 対数」
  例:「log2(2*4) = log22 + log24 = 1 + 2 = 3」

「log真数の商」から「対数logの差」への公式
  「loga(M/N) = logaM − loga= 対数」
  例:「log2(16/2) = log216 − log22 = 4 − 1 = 3」

「log真数の累乗」から「実数と対数logの積」への公式
  「logaMr = r * loga= 対数」(rは実数)
  例:「log242 = 2 * log24 = 2 * 2 = 4」
    (試しに指数4でを逆算してみると、
     「真数」は「24 = 16 = 42」となります。)
  例:「log39 = log332 = 2 * log33 = 2 * 1 = 2」


「底の変換公式」
この公式は「log」を理解する上で一番重要な公式となりますので、
他の公式とは別に説明します。
定義
  「a b c」は「+の整数」
  「a ≠ 1」「c ≠ 1」(「aとc」には「底(てい)」となる数字が入る)
を前提とした時、
「対数log」から「対数logの商」への「底の変換公式」
  「logab = (logcb) / (logca) = 対数」
  例:「log28 = log48 / log42 = 1.5 / 0.5 = 3」
が成り立ちます。
理解する為にも以下の計算例を確認して下さい。


「底の変換公式」計算例
ここでは「底の変換公式」を使い「対数」を求める際、
「関数電卓」や「筆算」などを使い、具体的な計算を行う例を示します。

・計算例1
  ・「底の変換公式」
  「logab = (logcb) / (logca) = 対数」
での
  分数内の「cの底(てい)」は
  分母と分子で同じ数字で揃えれば幾つであってもかまいません。
「関数電卓」で計算してみます。
  
これと同じ式を
  「cの底(てい)」の数字を変えて計算しても同じ答えとなります
「筆算」で以下のように計算する事が可能です。
  
結果「cの底(てい)」を幾つにしようが答えは同じ、
  「log28」の対数は「3」
となる事が分かります。

・計算例2
「底(てい)」が違う「log」同士の積(掛け算)は、
以下のように「底(てい)」を揃えて分数化して計算を行います。
  
結果、
  「log63・log336」の対数は「2」
となります。
このような「底(てい)」が違う「log」同士の積(掛け算)の場合は、
「底(てい)」が明示入力できるタイプの「関数電卓」があると、
計算がとても楽ですね。


常用対数表と自然体数表
「筆算」でlogの計算を求めるのに、
「常用対数表」や「自然体数表」という表を使って調べる方法もあります。
例えば「常用対数表」で「5.02」という数値を調べれば、
「約0.701」とう答えを知る事が出来、
  「log105.02 ≒ 0.701」
と分かります。
ただ、
「関数電卓」で計算すればもっと簡単に正確な答えが出せる為、
「常用対数表」や「自然体数表」の読み方はここでは説明しません。
興味があれば下のリンク先を調べてみて下さい。
→常用対数表の使い方
https://www.khk.or.jp/activities/regalexamination_course/dl/taisuuhyou.pdf
→【対数】「対数表」の見方
http://oto-suu.seesaa.net/article/174112556.html



「ネイピア数e(exp)」、自然対数について


「ネイピア数e(exp)」
「ネイピア数e」は「自然対数e」や「自然対数の底」とも言われる
「定数」(決められた数字)です。
  ・定数「ネイピア数e」
  「e = 2.718281828…」
「ネイピア数e」は小数点がランダムで終わりが無い為「無理数」とも言います。
小数点以下の少数が書き切れないπなどと同じ扱いで、
「e」の数式記号で表記される今後結構重要となる「定数」です。
(微分積分でとても良く使われます)
「e(exp)」の由来は「exponential(指数の)」という意味から来ているそうです。


「ネイピア数e」の別の記述方法
  「e」の「x乗(指数)」を表す時、
    「e
  と記述しますが、
    「exp{ x }」
  のように記述する事も出来、
  「エクスポネンシャルx」と読みます。
    
  のように扱います。
また、
  「eを底(てい)とする対数」の事を「自然対数」と言います。
  「自然対数」は
    「log」や「ln」
  のように記述出来ます。
    「log1.648721271 ≒ 0.5」又は「ln 1.648721271 ≒ 0.5」


「自然対数」について…(log又はlnログナチュラル)
「自然対数」とは「ネイピア数eを底(てい)とする対数」の事です。
これは「log」の事を指すのですが、
「関数電卓」では省略して「ln」(ログナチュラル)を使用します。
つまり、
  「関数電卓」で、
  「ln(1)」と入力した場合「log1」と同じ意味。
となります。
  

「関数電卓」によっては、
「log(e,1)」など「底(てい)」を明示入力出来る機種もありますが通常「ln」を使います。
(「自然対数log」の他に、
「常用対数log10」という「10を底(てい)とする対数」も存在します)

注意!
C#のプログラムでは
  「Math.Log10(8)」とすると「常用対数log108」となり、
  「Math.Log(8)」とした場合「自然対数log8」として解釈されます。
  つまり、
  「関数電卓」では「底(てい)」を省略時「常用対数log10」として扱いますが、
  「プログラム」では「底(てい)」を省略時「自然対数log」として扱います。
  「関数電卓」と「プログラム」で省略時の解釈が逆になるので注意が必要です。
後述する
  「C#で常用対数(log10)や自然対数(logeやln)を扱う」
の項でC#記述例を記載します。



常用対数と自然対数の定義


「常用対数(log10)」と「自然対数(logやln)」を使用する時に
理解しておきたい定義を改めてまとめておきます。


常用対数の定義
「常用対数(log10)」の定義
  「底(てい)を10」「真数をx」「指数対数をy」とした時、
  「10y = x」
  「log(x) = log10(x) = ln(x) / ln(10) = log(x) / log(10) = y」
となります。
  


自然対数の定義
「自然対数(logやln)」の定義
  「底(てい)をネイピア数e」「真数をx」「指数対数をy」とした時、
  「ey = x」
  「ln(x) = loge(x) = log(x) / log(e) = y」
となります。
  


対数関数
自然対数 ln(x)、常用対数 log(x)、aを底とする対数 log_a(x)の対数関数を計算
参考→http://keisan.casio.jp/exec/system/1260332465



C#で常用対数(log10)や自然対数(logeやln)を扱う


C#での対数使用例
C#では
「常用対数(log10)」を使用する場合は、
  「Math.Log10(8)」や「1.0/Math.Log(10,8)」
  (「関数電卓」では「log(8)」や「log(10,8)」)
などと記述します。
「自然対数(log又はlnログナチュラル)」を使用する場合は、
  「Math.Log(8)」や「1.0/Math.Log(Math.E,8)」
  (「関数電卓」では「log(e,8)」や「ln(8)」)
などと記述します。
                //常用対数(log10)
                //Log10はそのまま使うと「常用対数」となる
                double log_10a = System.Math.Log10(8);
                //底(てい)を10と明示する(底を明示する場合必ず1.0から割り逆数にする事!)
                double log_10b = 1.0 / System.Math.Log(10, 8); // 1.0から割り逆数にする
                MessageBox.Show(log_10a.ToString()); // →「0.903089986991944」
                MessageBox.Show(log_10b.ToString()); // →「0.903089986991944」

                //自然対数(log eやln)
                //Logはそのまま使うと「自然対数」となる
                double log_e1 = System.Math.Log(8);
                //底(てい)をeと明示する(底を明示する場合必ず1.0から割り逆数にする事!)
                double log_e2 = 1.0 / System.Math.Log(System.Math.E, 8); // 1.0から割り逆数にする
                MessageBox.Show(log_e1.ToString()); // →「2.07944154167984」
                MessageBox.Show(log_e2.ToString()); // →「2.07944154167984」


C#と関数電卓でのlogの違い
「log」の解釈は「関数電卓」と「C#」で変わります。
「関数電卓」では「底(てい)」を省略時「常用対数(log10)」として扱います。
「プログラム」では「底(てい)」を省略時「自然対数(log又はln)」として扱います。
「関数電卓」と「プログラム」で省略時の解釈が逆になるので注意が必要です。
更に、
「プログラム」上で「底(てい)」を明示して計算する時は、
「1.0」から割り数値を逆数にする必要があります。
この点も注意が必要となります。
  「関数電卓」で「log(8)」→「log108」(常用対数)
  「関数電卓」で「log(e,8)」→「log8」(自然対数)
  「関数電卓」で「ln(8)」→「log8」(自然対数)
  「C#」で「Math.Log10(8)」→「log108」(常用対数)
  「C#」で「Math.Log(8)」→「log8」(自然対数)
  「C#」で「1.0/Math.Log(10,8)」→「log108」(常用対数)
  「C#」で「1.0/Math.Log(Math.E,8)」→「log8」(自然対数)



PCや関数電卓で「指数表記e」を扱う際の注意


「E」や「e」を「指数表記」として扱う!?
ちょっとややこしい話なのですが「PCや関数電卓」などでは
「E又はe」の表記を「ネイピア数e」としてではなく、
「×10」の「指数表記」として扱う事があります。

例えば
  「100000」という数字を表すのに以下のように表示します。
    「1E+5」又は「1e+5」
  ここでの「E+5又はe+5」は「×105」の事なので「1×105」となります。
  「1500000」という数字を表すのに以下のように表示します。
    「1.5E+6」又は「1.5e+6」
  ここでの「E+6又はe+6」は「×106」の事なので「1.5×106」となります。
この例のように「E又はe」が「指数表記」として扱われます。

「関数電卓」によっては「指数表記e」を「ネイピア数e」と区別する為に
  「100000」を「1×105
  「1500000」を「1.5×106
のように、
あえて「指数表記e」を使わず分かりやすく表示してくれる電卓もあります。

「C#」のプログラムでは数値と文字列を相互変換する時に、
意図せず「指数表記e」が付いたり外れたりする事があります。
明示的に「指数表記e」を付けたり外したりする為には、
以下ような記述が必要となります。
                // 指数表記を行う
                double testNum1 = 12.3456789;
                MessageBox.Show(testNum1.ToString()); // 「12.3456789」
                MessageBox.Show(testNum1.ToString("E")); // 「1.234568E+001」
                MessageBox.Show(testNum1.ToString("E3")); // 「1.235E+001」
                MessageBox.Show(testNum1.ToString("E2")); // 「1.23E+001」
                MessageBox.Show(testNum1.ToString("0.000000e+0")); // 「1.234568e+1」
                MessageBox.Show(testNum1.ToString("0.000e+0")); // 「1.235e+1」
                MessageBox.Show(testNum1.ToString("0.00e+0")); // 「1.23e+1」

                // 指数表記を外す
                double testNum2 = 0.00001; // ← 勝手に指数表記となってしまう数値
                string testStr2 = "0.######################";
                MessageBox.Show(testNum2.ToString()); // 「1E-05」
                MessageBox.Show(testNum2.ToString(testStr2)); // 「0.0000011」
                MessageBox.Show((10.0).ToString(testStr2)); // 「10」
                MessageBox.Show((12.30).ToString(testStr2)); // 「12.3」
                MessageBox.Show((0).ToString(testStr2)); // 「0」

                // 「指数表記を使用 | カンマ付きの数字文字列を使用」で
                // 文字列 → double変換
                double testNum3 = double.Parse("1.2345E+2", System.Globalization.NumberStyles.AllowExponent | System.Globalization.NumberStyles.Number);
                MessageBox.Show(testNum3.ToString()); // 「123.45」
                MessageBox.Show(testNum3.ToString("0.######################")); // 「123.45」





以下のサイトを参考にしました。

対数関数
自然対数 ln(x)、常用対数 log(x)、aを底とする対数 log_a(x)の対数関数を計算
http://keisan.casio.jp/exec/system/1260332465

対数とは何なのかとその公式・メリットについて。対数をとるとはどういう意味か?
https://atarimae.biz/archives/12581

対数(LOG)の計算と公式!これでもうバッチリ!!
http://kenyu.red/archives/3132.html

対数 log の公式と計算
https://sci-pursuit.com/math/logarithm-formulae-and-calculation.html

logの計算機での計算方法
http://support.casio.jp/answer.php?cid=004002001001&qid=26860&num=10

logとlnの違い
https://okwave.jp/qa/q224511.html

数学記号exp,ln,lgの意味
https://mathtrain.jp/explnlg

【指数・対数関数】指数と対数の関係
http://kou.benesse.co.jp/nigate/math/a14m1208.html

数学記号の表
https://ja.wikipedia.org/wiki/%E6%95%B0%E5%AD%A6%E8%A8%98%E5%8F%B7%E3%81%AE%E8%A1%A8

数式記号の読み方・表し方
http://izumi-math.jp/sanae/report/suusiki/suusiki.htm



↑Topへ