やはりプログラミングに数学はつき物です。ここではよく使われる数学について簡単に解説します。
プログラムで「函数(function)」って云うよね。数学で扱う函数から見れば異質としか言いようが無いけど、しかし、やはり函数は函数なのです。では、函数とはなんぞや。
ところで数学(者)は、厳密な論理を重視し、高度な抽象化を行い、命題を導くことを目的とします。一見堅苦しい作業に思えるのですが、厳密に且つ抽象的に処理を行うことが、驚異的柔軟性を導いてくれます。譬えば「線型接続」の素晴らしさは、柔軟さゆえの事でしょう。
つまり、函数を抽象化してやると、「任意の値に関する答えを返してくれる処理」とも考えられるわけで、プログラムの処理も「函数」に該当するわけ。これもまあ柔軟と云えばそう。
プログラムだと、動けばいいやと思ってしまえば、動画変換のプログラムは何でもいいことになる。でも実際はそうじゃない、なるべく効率的で高速な物を考え、実現する。プログラムと同じように、数学にも効率化する方法がある。結論として、数学における効率化は「厳密な論理」と「抽象化」と僅かばかりの発明からくる「柔軟性」であって、何が云いたいかと云うと、「何でこんなことイチイチ確認するんだ」と謂う場合、そこに驚くべき本質があるからだと思って欲しいので、毛嫌いせずに見てやって欲しいと謂う事です。
Wikipedia の数学記事とかみてると、表記に圧倒される。さっぱりわからない。そのことは論理式や集合論の表記に起因してるような気がする。特別な表記法は、その分野を学ぼうと志せば、意識せずとも真っ先に確認するだろうし、導入部分にも注意されてるけど、共通語になってる部分はそうでもない。また、(些か方言的ではあるが)略記が成されることもあるので、留意されたい。
結構断り無く使用される演算子とか。「∥(平行)」「⊥(垂直)」「∴(結論;故に)」「∵(理由・根拠;〜から、なので)」とかは問題ないですかね。
後ですね、「∮」とかどうでしょう。「∮」は積分記号「∫」の一種で、周回積分(閉路積分/経路積分)と謂う概念を表します。しかるべき場所で確認されると良いかと。
列挙してある条件で、「P,Q,R」とあると、「かつ」か「または」かを見極める必要があったりする。とくに解説なし
十分条件と必要十分条件って奴。「⇔」は命題における等号ともとれる。
最初は兎も角、最後二つは悪名高い概念かと。「∈」と「R」を先に確認しているとして、「∀」「∃」の例を挙げてみます。
「∀x」は「任意のxについて(for any x)」と謂う意味。「∀x ∈ R ⇒ x の二乗は0以上」のように書く。意味は「任意の実数があるならば、その二乗は0以上である」。
「∃x」は「ある x が存在して」と謂う意味。「∃x ∈ R, f(x) < 0」のように書く。意味は「f(x) < 0 を満たす実数 x が存在する」。
これらは「述語論理」と呼ばれる式で、奥が深いの調べてみるがヨロシ。ちなみに「命題」を中心とした論理は「命題論理」と謂って、高校で扱ってる論理学的な問題はだいたいこれ。
集合(set)は大文字で書き、集合を構成する要素は元(ゲン;element)と謂い小文字で書く。集合は元のあつまりであって、元の数は集合によって任意である。集合の性質は群論や環論などにも拡張される。
暗黙的に利用される集合に上の例がある(P 以降はオマケ)。区別のために二重線や「Fraktur/Black letter(ドイツ文字)」にすることもある。忘れてしまっても文脈でわかることもあるぞ。
「a ∈ R」と書けば、a は実数集合 R の元であり、つまり a は実数であることを表す。
A = {1,2,3} と B = {7,8,9} の直積集合(後述)を M = {(a,b); a ∈ A, b ∈ B} とすれば、集合 M は (1,7) 等の元を持ちます。
集合の大小のような事(包含関係)を比較して表した物です。部分集合は一致する可能性もあります。
集合の演算です。新たな集合を作ります。直和集合は和集合と同じですが、積集合が空集合であることが暗黙に諒解されます。「M = {1,3,8}, N = {2,5,9,17}」なら「M ∩ N = ∅」ですね。集合の演算は他にもありますが割愛(差集合/補集合/冪集合/商集合 etc.)。
これ以上は専門的というか、分野が偏ることになる(もう十分偏ってるかもしれん? それはスマン)。何にせよ、数式の意味が分からないと、理解以前の問題なので、表記例についてはしっかりと確認すべきです。参考書や教科書のページは飛ばさずに読まないと、酷い目に合い兼ねない。
で、これで専門書や Wikipedia の式は読めますかと訊かれると、答えに窮する。ガンバッテネとしか言いようが無い。
初等的算術としては四則演算が有名ですが、四則演算にも證明が存在したりする。
数学的な解釈を挟み込んでやるとすれば、人が普段扱う程度の大きさの数ではたしかに四則演算は成立するかもしれないが、「数」を厳密に定義して「四則演算」が可能であることを示してやらないと、「全ての数」で四則演算が成立するという證明にはならないわけ。
まあこれは数論の世界のお話だったりするわけですが、「四則演算」の対象である「数」には「代数」も入ります。「代数」は、それこそ数学的概念の任意の物であって、「行列」を「数」と看做して「代数」とすれば、「四則演算」が必ずしも成立するとは限りませんね。
「行列」を「数」とした例をみてもわかるように、算術を丁寧に證明してやることはとても大事な事なのです。教科書には、それが自明であるとしても、「結合法則」だの「分配法則」だの無駄に書いてあるわけではないので、それらの法則を「この算術は安全である」と證明してくれた偉大なる数学者達に、たまには感謝してあげて欲しい。
exp 函数とか、冪(指数函数)をわざわざ函数で表す事がある。このようにして、函数はたくさん定義できる。
与えられた数 x より1大きいだけ大きい数 y を示す函数 y = f(x) = x + 1 だって立派な函数だ。これを ore function とでも呼んで、略して o(x) で表すゾと謂う諒解を取り付けてやると、数式を並べて書くうちに、ore(1) と自分で定義した函数が使える(!)わけ。特に函数を定義することが有用であるなら定義されるのであって、一般的に好き放題な略称や略記を導入することはない。
譬えば、四則演算を拡張して、余りを考える算術を導入する。mod 函数(modular function)だ。C言語では「%」などの記号でこれを表すけど、mod 函数の影響もあってか、こんなものまであるわけ。
数学における表記「p (mod q)」は「p は q を法として」一般的には読め、意味は「p を q で割ると」程度のもの。「r ≡ p (mod q)」は「p は q を法として r と合同」と読め、意味は「p と r は、q で割った余りが同じである」と謂う意味になる。これを剰余系に合同であると謂い、mod 函数の式は「合同式」とよばれる。
p を q で割った時の余りは、0以上q未満の整数であって、p をこの余りで分類してやると、q 箇の集合を考えることができる。この集合を剰余系と謂い、合同であるとは、余りを同じくする集合と合同であることを表す。
とまあ、ザックリするつもりが、随分堅苦しい説明になったけど、詳しくは数論を見て貰うとして、合同式の具体例を挙げてみると「23 ≡ 51 (mod 7)」と表現できたりする。
これらモジュラー函数に関しての、数論の他分野応用はあり得ないとされた為に、その手の研究はあまり進んでないけれど、昨今では暗号技術等に関する数論の応用があって、注目されてたりする。たとえばRSA暗号では素数と余りの関係を用いた式が暗号復号化を表し、その理論は合同式で證明される。
モジュラー函数は、日本人によって、楕円方程式の関連が予想されていた。氏の名前を取り谷山・志村の定理と謂うけれど、その定理の證明は、フェルマーの最終定理を導いたアンドリュー・ワイルズによってなされた。フェルマーの最終定理事体が難解な(しかしその式は平易な)数論の問題であったけれども、その問題の本質は、楕円方程式とモジュラー函数に密接な関係を持つものだった。ワイルズは楕円方程式とモジュラー函数を超越した。
最近では楕円方程式による暗号も盛んである。楕円曲線暗号って奴だ。これはRSA暗号がモジュラー函数による暗号であることを考えれば、ワイルズの證明を以て、楕円曲線でも暗号が利用可能であるとわかる。暗号を技術を学びたい人は、数論を学んで損は無いでしょう。
近代における歴史的経緯を振り返ってみると、その要因は多くある。突飛な函数や概念、手法が、数学にとって革命的であったことは数知れない。恐らくは現代数学でさえまだ未発達なのであって、数学と謂う学問の輪廓は、私如きには見えもしない。
リーマン予想と「数論的量子カオス」。聞いただけでゾクゾクするね。
加筆募集中。
総和や総乗を表す表記、その函数を解説します。各項目では既知として利用されるので、注意して下さい。それ以上の集合論に関する記述があるとすれば、「論理代数」とかかな。
註:抽象代数学的な考えでは、体(field)や群(group)や環(ring)なる集合を考えたりして、代数を見つめ直す作業を行います。以下に記す事は、そういった作業をやらない限りにおいて、ただの算術的記法の一例であるとしか思えないことでしょう。
総和(summation)とは、有限箇な任意の数が与えられたとき、その全ての和を求めること。所謂 Excel の Sum 函数ですな。有限箇と断ってはいるが、時には無限箇の総和(無限級数)を考える必要があって、その和が求まるのは特別の場合です(後述)。
一般にこのような総和表現を級数(series)と謂い、有限級数と無限級数に分かれます。ここでは有限箇な有限級数を中心にしましょう。また初等的な級数を扱う数学B では、等差数列・等比数列の一般解を扱う物が多いので、等差級数や等比級数など呼ばれます。展開の仕方ではその二つで分類しました。
#mimetex(\sum_{i=1}^n x_i = x_1 + x_2 + \cdots + x_n);
ギリシア文字の「∑・σ(σίγμα;sigma;シグマ)」は、ラテン文字の「s」に転写される文字で、ラテン文字の「S」の由来となった物です。一般に summation の s を表すと考えられます。以後、総和記号とでも呼びましょう。
#mimetex(X = \{x_1,x_2,\cdots,x_n\});
総和記号の意味を「集合 X の n 箇の元における総和」として考えてみましょう。先づ総和記号における添字の i は、index の i と解されるのが一般的で、元の添数であり且つ順序を表す物であり、i が満たす条件は集合 X に依存します。
何だかややこしいので、逆に最初に示した総和記号から見てみると、「i は 1 から n まで」と表記されると読みます(この事に関して暗黙的に n は自然数であり、i もまた自然数であると諒解される)。また i が満たすべき条件は &mimetex(\sum_{1 \le i \le n} x_i); のようにも記述されることがありますが、書いてある内容は上掲の物に同じです。
何だか for loop のような制禦構造に似て居ますね。
#mimetex(\sum_{n=1}^5 2n = 2\times 1 + 2\times 2 + 2\times 3 + 2\times 4 + 2\times 5);
展開するとこんな感じです。プログラムで書くと以下のようになります。
int i, sum=0; for(i=1; i<=5; i++) sum += 2*i; return sum;
勿論、数B の数列をやればわかるけれど、展開を一般化した解も存在することがある。
総和が干渉するのはその項数のみ。従って次の計算ができる。
#mimetex(){{ \begin{array} m \times \sum_{k=1}^n a_k & = & \sum_{k=1}^n m \times a_k \\ \sum_{k=1}^n (a_k + b_k) & = & \sum_{k=1}^n a_k + \sum_{k=1}^n b_k \end{array} }}
当り前と言えば当り前。したがって次の変換には要注意である。&mimetex(\sum_{k=1}^n n \times k = n \times \sum_{k=1}^n k);
なおこの変換とこの式とを区別すること。&mimetex(\sum_{k=1}^n k^2);
#mimetex(\sum_{k=1}^n C = nC,\ \sum_{k=1}^n n = \frac{1}{2}n(n+1),\\ \sum_{k=1}^n n^2 = \frac{1}{6}n(n+1)(2n+1),\\ \sum_{k=1}^n n^3 = \frac{1}{4}n^2(n+1)^2);
定数項は説明するまでもありませんが、単純な n 次な項は、上に示すような解が知られている。この證明はそんなにむづかしいわけではないが、次数が増すと證明が面倒になる。證明例として四次の場合を考えます。
#mimetex((n+1)^5 - n^5 = 5n^4 + 10n^3 + 10n^2 + 5n + 1);
と変形でき、
#mimetex(\sum_{k=1}^n \{(k+1)^5 - k^5\} = (2^5 - 1^5) + (3^5 - 2^5) + \cdots + \{(n+1)^5 - n^5\} = (n+1)^5 - 1);
と級数を展開できるので、以上の操作と &mimetex(p(n) = q(n) \Rightarrow \sum_{i}p(i) = \sum_{i}q(i)); を利用して、
#mimetex(\sum_{k=1}^n \{(k+1)^5 - k^5\} = \sum_{k=1}^n (5n^4 + 10n^3 + 10n^2 + 5n + 1)\\(n+1)^5 - 1 = \sum_{k=1}^n (5n^4 + 10n^3 + 10n^2 + 5n + 1));
更に整理を進めると、
#mimetex((n+1)^5 - 1 = 5\sum_{k=1}^{n} n^4 + 10\sum_{k=1}^{n} n^3 + 10\sum_{k=1}^{n} n^2 + 5\sum_{k=1}^{n} n + \sum_{k=1}^{n} 1\\ \sum_{k=1}^{n} n^4 = \frac{(n+1)^5 - 1}{5} - \{2\sum_{k=1}^{n} n^3 + 2\sum_{k=1}^{n} n^2 + \sum_{k=1}^{n} n + \frac{1}{5}\sum_{k=1}^{n} 1\});
三次の展開が一般化されていれば、答えが求まるとわかります。ちなみにこの次数での答えは、
#mimetex(\sum_{k=1}^n k^4 = \frac{1}{30}n(n+1)(2n+1)(3n^2+3n-1));
であり、三次や二次や一次も同様の手段で順番に證明でき、逆に次数が高い場合も順番に降下することで一般解を得られる。このことは二項定理から明らかですね。
#mimetex(\sum_{k=m}^n r^k = \frac{r^{n - m + 1} - 1}{r^m - 1},\ \sum_{k=1}^n r^k = \frac{r^n - 1}{r - 1});
分母の「n - m + 1」は級数の項数で、分子の「m」は級数の初項を表す数。證明略。そのうち書く。
総和する項数を無限箇にまで拡張した級数のこと。ハハハそんなの求まりっこないよ、とおもうかもしれないけれど、これは求まることがある。数Ⅲの極限をやりたまえ。
#mimetex(\zeta (s) = \sum^{\infty}_{n=1} { 1 \over {n^s}});
ギリシア文字の「Ζ・ζ(ζήτα;zeta;ゼータ)」は、ラテン文字の「z」に転写される文字で、ラテン文字の「Z」の由来となった物です。
この函数は、ベルンハルト・リーマンによって定式化された、とっても重要な式。もともとは数学的な探究のひとつとして、この式のs=2のときの無限級数には解が何と定まるかを求める問題だった。收斂することは明らかだけれど、その値を求めることができず、この問題が提示されて百年後にオイラーによってテイラー展開を用いる解法が示された。これをバーゼル問題といって、これに着目したリーマンがゼータ関数として一般化した。現在でも求める事のできないsの値が存在する。
一往に「足し算? ちょろい」といってもそう簡単に求まる物でもないのでその例を示したっすよ。s を複素数(!)に拡張したときこの函数が如何なる値を取りうるかについての考察が、所謂「リーマン予想」って奴だ。
総乗(product)とは、有限箇な任意の数が与えられたとき、その全ての積を求めること。有限箇と断ってはいるが、時には無限箇の総乗(無限積)を考える必要があって、その積が求まるのは特別の場合であり、有限箇でも求まりそうにない事も多い。
#mimetex(\prod_{i=1}^n x_i = x_1 \times x_2 \times \cdots \times x_n);
ギリシア文字の「Π・π(πι;pi;パイ)」は、ラテン文字の「p」に転写される文字で、ラテン文字の「P」の由来となった物です。一般に product の p を表すと考えられます。
やることは総和に同じだけれど、收斂條件がきびしい。
下記はだいたい大雑把なので。ⅠAとⅡB、ⅢCとあるんだぜ。大学でも数学をやる人たち(理系の人)は、ⅢCまでが必修の扱い。京大とか行列(数C)だすよと公言する一部を除いて、文系の人はⅠAとⅡBまでって感じ。でも文系では経済学とかは偏微分とかも含まれるから、結局数Ⅲはある程度理解する必要もあったり。
年度によりけりで「過程」が変われば内容もかわる。基本的には、ⅡBをやるにはⅠAの理解、ⅢCをやるにはⅡBの理解、と段階的に学習できるようになってますよ。
方程式、二次関数はここがわからないと、高校レベルの理科と解ける問題が半減すると言っても過言ではない。三角関数は正弦・余弦定理と三角形の面積の求積まで。ヘロンの公式とかもここかな。数Ⅰは次の通り。
確率は、確率の基礎。統計的拡張は数C。二項定理を含むよ。平面図形は、幾何の基礎。 ベクトルなんかだと、ここの幾何が分ってないと式の流れが分らなくなるかも知れません。数Aは次の通り。
かなり重要な分野が多い。関数は頻出のsinだとかlogだとか、それから自然対数e(ネイピアさん)も。対数のあたりで極限のためのlimさんも登場する。なかなかよく要点の纏まった過程だと思う。物理の力学では、微分・積分法の考えかたが沢山(ただし高校物理では使わずに教えることになってるので学校によっては説明してくれない。)あります。そこはこれと併せて学べばよいでしょう。数Ⅱは次の通り。
複素数平面は好きならやってね。統計は普通やらないみたい。数Aでの初歩的な統計の考えを拡張して、最後は数Cの正規分布までたどり着くのが統計の目的。数Bは次の通り。
積分は置換・部分積分の導入がある。物理の角速度を理解するには、ここまでの学習が入り用。微積には曲線の長さも含まれるよ。数Ⅲは次の通り。
確率以後は普通やらないらしい。統計処理の用語がExcelの変な函数とかにあるネ、あれを理解するにはこれが必要ってわけ。偏差値計算ができるようになるぜ。数Cは次の通り。
無茶を仰る。ザックリまとめてあげよう。
まあこんなとこでしょうな。勉強法としては、上三つの最低限のレベルを理解(数論極めてフェルマーの最終定理とか、群論とか、そんなの理解してどうすんのさ)して、後は真ん中をいったりきたりでしょう。そういう意味では、今の高校数学はよくできてると思う。