ブログ「サイバー少年」

ブログ「サイバー少年」へようこそ!
小学六年生ごろからプログラミングを趣味にしている高校生のブログです。
勉強したことについての記事などを書いています。フリーソフトも制作、公開しています。
(当ブログについて詳しくは「ブログ概要紹介」を参照)

サイバー少年が作ったフリーソフトは「サイバー少年の作品展示場」へ

数学やってる奴やはり計算速い説

夏休み、なかなか更新がなくて、久々に更新されたと思ったらクソ記事ばかりで申し訳ない。。。

大学で数学科に行っている人とか、なんらかの形で数学と関わっている人は、門外の人からコンピュータのように“数値計算の速い人間”というイメージを持たれてしまいがちですが、
実際は大学以降の数学なんて計算じゃなくて論理を扱う学問なので、計算速くねえんだよコノヤロッと我々は全世界に向けて言いたい、というのが定説です。


しかし、ふと思ったのですが、やはり大学以降の数学に関しても数学やってる奴は計算速いという説を提唱したいと思います。

二つの根拠があります。


ひとつは、計算速いというのは、ここでは数値計算、つまり自然数、整数、有理数(場合によっては実数全体)に対する四則計算や累乗する、累乗根をとるなどの計算において高速に答えを出せるという意味にしますが、

数学でここらへんの代数系の性質を学んだ人は、結合法則、分配法則、指数法則などなど、色々な計算を簡略化する法則を知っているので、それを活用して素早く答えを出せるだろうというものです。

まあ主に高校までに学ぶ法則だと思うので、大学以降の数学をメインフィールドとしている人も法則を活用できるかというと疑問ではあるのですが、数学やってる奴という大きな括りにおいて法則を知っている傾向にあるということだと思います。


もうひとつは、大学以降の数学に通じる話で、数値計算も論理的な推論も頭の使い方が似ているから、論理的な推論に慣れている人間は数値計算も得意であるというものです。

経験的に思ったのですが、推論が得意な人って、わりと論理というものを単純計算の対象にしていると思います。

私にしてみたら論理というのは複雑なので難しいのですが、恐らく出来る人間にとっては推論も単純というか機械的にこなしているという、イメージであります。
まあ私も少しずつですが、そのようなスキルが身に付き始めているので、このまま一人前の数学徒に仲間入りできればなと思っているのですが…。

ようするに、数値計算も論理も同じ“計算”ですので、そういうのが得意な人間はどちらもパパパッとやってしまう、ということです。

あと、先ほどの数値の法則の話に関係しますが、推論が得意な人は勘が鋭いというのも私は経験的に感じていますので、「ここはこの法則で変形できるな」というのも瞬時に気づいてしまうのではないかと思います。


というわけで、以上の二つの事柄から、数学やってる奴は計算速いという説を示しました。
イメージですとか、こう思いますとか、感情論以外のなにものでもないですが…。

ただまあ、あくまでも仮説ですので、あとは証拠集めをして真偽を確かめるということになりますね。


いやはや、またもやクソ記事を生み出してしまうとは。

tag: 数学 考察 クソ記事 計算 法則 論理

ユークリッド整域における元と高さの関係

先日に書いた記事「ユークリッド整域の素元分解可能性について自分なりに補足」で


つまりH(x) = 0のところにx = 0が、H(x) = 1のところに単元のxが、H(x) = 2のところに単元と素元のxが、H(x) > 2のところに単元、素元、いくつかの素元の積がすべて分布してる感じですね。


と記述しました。

「単元と素元~」みたいな言い方をANDと解釈するなら間違いですが、まあORと解釈するなら間違った主張ではないんですけどね。

ただ、たとえばH(x) = 2のところに単元または素元のxが分布しているという主張ですが、これは正しくはH(x) = 2となるxについて、それは単元または素元である、という主張にするべきでした。

前回の言い方だとH(x) = 2となるxが必ず存在するかのような主張となっています。


そして、その他の点でも非常にナンセンスな表現であるということに気が付きました。
後述しますが、まず単元はそんな色んなところに分布してなくて、すべて同じ高さのところにあります。

あと、前述のようにORで解釈するなら間違いではないのですが、この主張を読んだときにイメージするのはH(x) = 2のところに素元となるxがあって、H(x) > 2以降において素元の積のxも含まれてくるという感じだと思います。

そのイメージは間違いですが、主張自体は間違いではないので、たしかに読み手が悪いと言えばそうですが、私の書き方にも問題があると思いました。


それは、1という数、2という数を定数として決定してしまっているところです。
実際は定数は決定せずに、色々な元に対する高さの大小関係だけをイメージしてもらえるような書き方にするほうが自然でした。

事の発端はYahoo!知恵袋で、整数に関数Hを導入したときに、H(x) = |x|ではなくH(x) = 2×|x|とすることも可能である、という指摘を受けたことでした。

このときH(x) = 2のところに単元があって、H(x) >= 4以降に素元などがあり、あとH(x)が奇数であることはありえません。

こんなように、定数はまったく変わってくるわけですが、大小関係は変わりません。
そこで今回は、元による高さの大小関係に着目して判明することを書いていきたいと思います。

続きを読む

tag: 数学 群環体 ユークリッド 考察 勉強 関係 素数 証明 写像 帰納法

ユークリッド整域の素元分解可能性について自分なりに補足

私が群・環・体の勉強に使っている本を読んでいたら、以前の記事「[環論] ユークリッド整域で陥った詭弁」にも登場しているユークリッド整域において、

0(零元)でも単元でもない任意の元は素元の積に分解できて、それぞれの素元における単元倍の差を除いて一意である

ということが解説されていたのですが、一意性についてはいいとして、分解可能性の証明に足りない部分があると思ったので、自分なりに考えて補足してみます。

そんな、この本の著者様に意見できるほど優れた人間ではないのですが…(汗)


まず、本では元xの高さH(x)の値に注目して、H(x)がどんな値であってもxが0でも単元でもないなら素元分解可能であることから、任意のxについて0でも単元でもないなら素元分解可能であるということを述べようとしています。

ここがまずちょっと難しいですが、すべてのxは必ずなにかしらの自然数H(x)に対応しているわけですから、すべての自然数において対応するxが性質を満たすことがいえれば、すべてのxにおいて性質を満たすことがいえるわけですよ。

厳密に証明しろと言われると、能力がなくて私にはできないですが…。

逆に、すべてのxについて対応する自然数がある性質を満たすとき、すべての自然数がその性質を満たすという論法は一般には正しくありません。
ただし、xから自然数へ対応させる写像が全射であるなら、上の場合と同じ状況になるので、正しいと思います。

続きを読む

tag: 勉強 数学 群環体 ユークリッド 素数 証明 約数 帰納法 考察 写像

哲学ってどうなのよ

数学をやっていると、とくに数理論理学にぶつかったあたりで哲学との関連性を意識させられるわけですが、
哲学がどのようなことをやっているのか、よく知りません。

論理学が哲学者と数学者によって共に形成されたことは確かだと思いますが。


私は情報科学から移行して数学にハマってしまったように、より根源的なほうの学問(情報科学は数学の上で成り立っている)に興味を持つ傾向があるのですが、

それならば数学は哲学の上で成り立っているじゃないか、という話になると思います。
具体的にいえば数学が論理学の上で成り立っていて、論理学の基礎となるのが哲学です。

ただ、ここまでで述べたとおり論理学は数学の上で成り立っていて、数学は論理学の上で成り立っている、みたいな部分はあるんですよね。

これだけだと循環しているので、やっぱり哲学が最終的な根源となると思います。


ただ、完全にイメージですが、哲学より数学のほうが頭を使う印象がありますね。
私は前述のとおり、より根源的な学問を求める一方で、頭を使いたい欲がありますから、そうなると数学のほうが魅力的に見える。

ただ哲学って何やってるのかがまったく分からないので、哲学は頭を使わないと思い込んでいるのかも知れません。

しかも哲学って数学者が数学に近いアプローチでやっていたり、ぜんぜん違うアプローチで哲学をやってる人がいたりで、範囲が広いですね。


最後に、昔もこのブログで触れましたが、数学者は数学的な事実を宇宙的な真理だと思っていますが、哲学者は数学者が彼らの脳みそで考えられることを考えているだけのゲームみたいなものだと思っているっぽいです。

私も哲学者のほうの意見を支持すると言いました。

あと現代数学の公理主義と相まって、なおさら数学というのは人間の思考の限界に挑戦する究極の頭の体操であり、そうでしかないと思います。


ただ考えてみれば人間風情が自分は神になれると勘違いしてこの世の真理を突き詰めようだなんて、間違いではないでしょうか。

人間はしょせん、哲学なんかせずに、数学というゲームをやっておけばいいんだと思います。

もちろん、数学の基盤となる哲学は重要ですけどね。
ただ、数学の基盤となる哲学は論理学にカテゴライズできると思うので、哲学自体は不要ではないかと。


しかし、もし哲学も決してこの世の真理を突き詰めるものではなく、あくまで人間が見ているこの世界における事実(人間が感じること)を研究する学問であるなら、数学とは違う領域を研究していて面白いと思いますけどね~。

数学は形式科学ですが、哲学は自然科学じゃないの?と思います。


さて、こう言ってきましたが今回の記事は哲学しているんでしょうか。
ただ単に勝手なイメージを書いているだけですが…。

tag: 哲学 論理学 数学 公理 考察

ペアノの公理と特殊な数学的帰納法

今回は、あんまり深く考えないで数学について記事にしようということで、以前の記事で数学的帰納法を使ったときに思ったことを書きます。

あんまり考えて書いていないので、特に新たな発見をしたわけではないのですが、ちょっとしたアイデアとして。


数学的帰納法は、なにも0や1(自然数の最初の数)から始まって1つ後ろの数、その1つ後ろの数というふうにドミノ倒しされるとは限らず、

0や1でない自然数から始まって、1つ後ろでないところの数へとドミノ倒しされることがあります。

数学的帰納法の応用ですね。
我らがWikipediaにも書いてあります。

数学的帰納法 - Wikipedia
https://ja.wikipedia.org/wiki/%E6%95%B0%E5%AD%A6%E7%9A%84%E5%B8%B0%E7%B4%8D%E6%B3%95


そんでもって、数学的帰納法は形式論理で扱うときにどのようになるかというと、自然数に関する公理のひとつとなります。

ペアノの公理というやつで、それの一番最後の公理が数学的帰納法を正当化するための公理となります。

ペアノの公理 - Wikipedia
https://ja.wikipedia.org/wiki/%E3%83%9A%E3%82%A2%E3%83%8E%E3%81%AE%E5%85%AC%E7%90%86


余談ですが、こういうふうに自然数はどんな性質なんだろうと突き詰めて公理を発見するのではなく、自然数とはこういうものなんだという性質を、神ではない我々が定義することができるというのは、なんか数学の面白さのひとつですよね~。

まあ、私が定義できるほど実力はないのですが…。
ただ、こういう公理主義的な考えの上での数学は、自分で作れるという意味でプログラミングと似ていると思います。

続きを読む

tag: 数学 論理学 論理式 自然数 考察 命題 形式 帰納法

数理論理学の些細な気づきごと

数理論理学の勉強はもう終わらせてやめましたが、最近ふと気づいてしまったメチャメチャどうでもいい発見があったので、たいしたことではないですから短くまとめます。

すごく小さな発見を、今回は2点ほど用意しております。

(追記ですが、ちっとも短く書けませんでした…)


まず1つ目ですが、xor演算についてです。
数学というより、プログラミングで論理演算をするときに知っとくとためになるかもしれませんね。

xorは、a xor bだったら、どういう意味かといえば、

aとbが両方ともfalseなら結果もfalse、aかbのどちらかだけがtrueなら結果はtrue、aとbが両方ともtrueなら結果はfalse、ですよね。


じゃあ、これがa xor b xor cと3つになったらどうなるでしょうか。
ちなみに左結合、つまり(a xor b) xor cです。

これは、感覚的には2項バージョンの拡張として、a,b,c全てがfalseなら結果はfalse、a,b,cのどれか1つだけがtrueなら結果はtrue、a,b,cのうち2つ以上がtrueなら結果はfalseになる演算だとみなしたいわけですが、そうはならないようなんですね。

反例としては、a,b,cが全てtrueだとしたら結果はfalseになってもらいたいわけですが、a xor bの時点で一回falseになってしまうので、そのfalseとcつまりtrueをxorして、結果はtrueになってしまうと。

ちなみに情報工学ではメジャーな話ですが、x xor trueをかけるとxの反転が得られますから、a xor b xor c xor dのa,b,c,dが全てtrueならa xor b xor c = trueの反転でfalseですね。

偶数個の項なら反例になりませんが奇数個のとき反例になることになります。


また、補足しておくと、ブール代数での話ですが、2項バージョンのときa,bの片方がtrueならtrueというのは、この“片方がtrue”というのが、
「1つだけtrueで残りはfalse」ということなのか、「1つ以上trueがあるが1つ以上falseがある(確実にすべてfalseではないが確実に1つはfalseがある)」ということなのか、という二つの捉え方があって、

これらは2項バージョンにおいては同値ですから違いが曖昧なのですが、3項以上になると違う命題になるので、後者のほうの捉え方も3項以上バージョンでは、また別個に考えられます。

つまり後者の捉え方で、a xor b xor cを、
a,b,c全てがfalseなら結果はfalse、a,b,cのうち1つ以上trueがあって1つ以上falseがあれば結果はtrue、a,b,c全てがtrueなら結果はfalseになる演算だとみなすこともできるわけですね。


さらに、trueでなくfalseの個数に着目した場合、つまりtrueとfalseが出てくる箇所をひっくり返した場合に後者では同値となりますが、前者では違う命題になるので、前者の捉え方のtrueとfalseをひっくり返した捉え方も論理的にはありますが、
まあa xor b xor cを感覚的に捉えるならばfalseの個数で考えるという発想はないと思いますので、この場合は無視しましょう。

だとすれば、上の話での後者の捉え方はどうなのかというのは考えなければなりませんが、このときも前者のときと同様にa,b,cが全てtrueという反例があって、感覚的なものとは違う真理値になります。


感覚的に捉えたものと同じ真理値にしたい場合はどういう論理式を書けばいいのかというと、後者の捉え方の場合は単純に、
(a or b or c) and not (a and b and c)みたいに全ての項をorでつなげたものと、andでつなげたものの否定の論理積をとるだけです。

むしろ、2項の場合はa xor bは(a or b) and not (a and b)と同値なのに、3項以上の場合は同値でなかったことに驚きますね。


前者の捉え方では、2つ以上の項がtrueにならないことを表現するために、あらゆる2つの項の組み合わせについて論理積がtrueにならないことを言わなければならないわけで、

a,b,cなら(a or b or c) and not (a and b) and not (a and c) and not (b and c)みたいに、長いですね。

全ての項をorでつなげたもののあとに、n項ならばnC2個の2つの項の組み合わせの論理積の否定を付けて、論理積でつなげなければなりません。
nandを使えば(a or b or c) and (a nand b) and (a nand c) and (b nand c)みたいに若干、短くなるか…。


というわけで、イメージ通りにやりたい場合はxorでつなげるのでは駄目で、地味に大変な論理式を書かなければならない、という話でした。

そうそう、上記の論理式を書く以外にも、真理値表をもとに論理式の標準形を書くという手段も、一応ありますね。

続きを読む

tag: 数学 論理学 論理式 論理演算 写像 集合 同値 組み合わせ 考察 クソ記事

数学の学問としての位置づけとは?? ~ プログラミングも ~

数学をやらぬ者に数学が語れるか。
こんなメタな考察をする前に数学の記事を書けと言われるかもしれませんが、こちらのほうが書くのが楽なのであえて数学という学問自体への考察を行ってみます。

こういう考察を行うのは哲学の分野でわりと行われているのかなというイメージですね。
科学哲学というのかな。

まあ私はそんな科学哲学ガチ勢ではないので、テキトーに思ったことを綴るだけです。


数学とはどういう学問なのでしょうか。

学校の数学だけやってると、ひたすら計算する学問なのかなという印象を持ってしまいますが、
たしかに計算するという側面もあるけれど、そのバックボーンには理論だとか概念を扱う側面がなければならないわけで、後者の側面を“数学”と呼ぶのが良いんじゃないかと私は思います。

つまり、数学というのは理論だとか概念を扱う学問だということです。


そして、どのような“理論だとか概念”を扱うのかという問題に対して、私のやってる数学の分野に起因する考えかもしれませんが、

何らかの数量の間の関係を扱うだけではなく、はたまた図形についての性質を扱うだけではなく、実は何でも扱えてしまう超万能な学問が数学なのではないかと思います。

それはどういうことかというと、物理学は現実世界の形而下の物事を扱いますし、たいていの学問には扱う領域があって、それはこの世の森羅万象と比べてみれば大変狭い領域なわけですが、

数学というのは“人間の思考”というものが扱う領域なんだろうと思うのです。

人間はあらゆる学問において、この世の物事を見て、思考するという工程があるわけで、思考した結果のアウトプットを学問の内容といいますか理論にするわけですから、思考というものを制する数学は最強ですね。


ただし思考を扱うというのは、色々なアプローチがあると思うのです。

たとえば私は言語学について全く知らないので的はずれなことを言っていたら恐縮ですが、人間は言語を使って物事を思考するので、その言語というものを扱う言語学も数学と並んで人間の思考を扱う学問でしょう。

むしろ、数学は数学という言語を使って物事を考察していると考えることもできますね。
それならば真に最強な学問は言語学ということになりますが、なにせ言語学について知らないので、そう考えるのはやめておきましょう。


数学は思考を扱うアプローチとして主に集合や写像などを使います。
これらは、概念や、イメージの手段を抽象化した道具であると言えると思います。

他にも数学といえばそりゃ数値というのを使いますが、これも数量という概念を数値というものに落とし込んでいるわけですね。
ときにそれは数というのは集合なんだという話に昇華しますが、まあ数が集合であっても数であっても抽象的な道具であることには変わりないのでいいでしょう。

ようするに、思考についての物事をある別のものに対応付けたのが数学ですね。
あーでも、それだとやっぱり数学は言語だということになるなあ。

まあ言語学が(完璧に妄想ですが)物事の表し方に主眼をおいているのに対して、数学は表された物事と物事の間の関係に主眼をおいている気がします。


あとさらに詳細には、表された物事を意味も含めて扱う意味論というのと、単純に記号としてのみ扱う構文論という二つのアプローチが、数学にも言語学にも存在しますね。

ただ数学においては意味論がベースになってくると思います。
それは具体的な思考対象があっての数学なわけですから、意味が存在してくるわけですね。

構文論っていうのは数学においては、単なる思考を単純化するツールみたいなものかなと、素人ながらに思います。

続きを読む

tag: 数学 プログラミング 形而 哲学 学問 言語学 理系 考察

当ブログをご利用(閲覧等)になる場合は必ず「当ブログの利用規定」をお守りください。