『数学入門』(岩波新書、遠山啓著) の P.89 によると、ニュートンが「算術では与えられた量から求める量へと進んでいって問題が解けるのにくらべて、代数は逆の方向に進む。つまり、あたかもそれがよく知られているかのように、求める量から出発して、既に分かっている量へ、それが求める量であるかのように進んでいく。そして、結論もしくは方程式を立てて、それから道の量を探し出すのである。」と言ったと書かれています。
この、「算術の方向」を転換するのが代数を使うことの本質なのではないかと思っているのですが、こういった類の概念の説明をしていただけると助かります。これが理解できれば、問題解決においてどのような場合に代数を持ち出せばよいか、が明確になるのではないかと思っています。なお、自分は数学は聞きかじりの素人です。
私も半年ぐらい前にこの本を読んで、同じところで同じような疑問を持ちました。その時はわからないままでそのままにしていたのですが、この質問を見て再考してみました。結論を先に少し書けば、「未知数がどのぐらいあるかによって、どちらがより簡単に解けるかは変わってくる」と思いますが、まずは、P76で、ニュートンの以下のような記述があると思いますので、そちらを見てください。
「算術は一定で特殊であり、代数は不定で普遍的である。」
そもそも数字そのものがある程度抽象的なのですが、代数が不定で普遍的であるのは、未知数(変数)を取り扱う為にそこから更に抽象度を上げ、適用範囲を広げたからですよね。それで、算術と代数の使い分けはどうなのか? ということなのですが、その前に例に出しているツルカメ算について少し述べたいと思います。
このツルカメ算の場合は、id:tera-pさんが仰っているように私も算術の方が簡単に解けると思います。理由は2つあります。1つは元々算術の方が人間の認知的に計算しやすいのではないかということです。もう1つは、未知数(変数)の数が少ないので場合分け自体も少ないということです。この問題はツルとカメの2要素だけが未知数なので、片方をある数に仮定すると、もう片方は自動的に決まります。ツルを10匹だとするとカメは0匹ということです。この場合はtera-pさんの暗算ですぐに答えが出ます。厳密には算術の場合だと、(ツル10匹、カメ0匹)(ツル9匹、カメ1匹)(ツル8匹、カメ2匹)のように11パターンの場合分けが必要になりますが、未知数が2要素だけなので、一発で答えを出すことができます。
しかし、未知数がそれ以上になったらどうでしょうか。例えば未知数が4つになった場合を考えてみます。
ツルとカメとタコ(足8本)とイカ(足10本)が合わせて28匹、足の数は合わせて182本あります。それぞれ何匹ずつか?(注1)
これを算術でやろうとすると、全部の場合分けをして逐一計算して答えを探していくことになります。未知数が2つだった時は片方を仮定すれば、もう片方も自動的にきまりましたが、未知数が3つ以上ある場合は、どれかをある数値に仮定しても、他の数値は確定されません。答えを出そうと思ったら力技になってしまいます。それに対して代数だと連立方程式で機械的に解くことができます。(もっともこの場合は2つしか方程式がつくれないので、問題を解く為にはあと2つ方程式が必要ではありますが。)
P90にある、ある商人の財産を求める式も同じだと思います。この場合は未知数は1つで財産だけですが、計算手順が幾重にもなり、その結果、算術だと場合分けのように何回も計算をしなくてはいけなくなります。上手く表現できないのですが、それに対して代数は、未知数を「とりあえず固定化」するような役割をするのではないでしょうか。そして「固定化」して最後までいって、そこから逆算するという方法が代数の解き方なのではないでしょうか。ということは私の結論をまとめると、次のようになります。
人間の認知的には元々算術の方がやりやすくはあるが、未知数(変数)が増えることにより場合分けが多くなる問題は、算術で計算すると煩雑になるので適さない。そういう問題は代数によって逆算的に解く方が楽なのではないか。ということです。以上が私の考えてみたことです。トンチンカンだったらスミマセン。
(注1)話の本質には全く関係ありませんが、ツル7匹、カメ4匹、イカ8匹、タコ9匹で計算しています。
ありがとうございます。とても面白かったです。非線形になると微分を持ち出す必要がある、というのはちょうど最近読んだ書籍にもあったので、復習の意味でも有意義でした。
Newton-Raphson法がどのような過程で生み出されたかを追っていけばツルカメ算に関する疑問は解けそうですが、なぜ代数に置き換えると演算が簡単になるか、はより大きな概念なのではないかという気がしています。
代数のご利益をわかりやすく説いたお話として鶴亀算との比較が良くでてきますが,個人的には本当に方程式を立てたほうが鶴亀算より簡単か,というところに疑問を持っています.少なくとも,私によって「演算」は簡単ではありません.
鶴亀算なら「10匹とも鶴だと仮定すると足は20本.8本足りない.亀が1匹増えるごとに足は二本増えるから,亀は8/2=4匹で残りの6匹が鶴」と暗算できます.
方程式を立てると,鶴をa, 亀をbとして {a+b=10, 2a+4b=28} という二元一次連立方程式を解くことになります.もちろん簡単に解けますが,私の脳みそのキャパシティではこの式は簡単には暗算できません.
それはともかく,なぜ代数のほうが簡単と言われるかについてですが,すでに質問の中で答を書かれているとおりだと思います.代数的な手法は,問題の定義を(人間にとってなじみの深い「算術の方向」で)式に落として書いてしまえば,あとは機械的な操作を機械的に適用すれば解けます.すなわち,日本語を数式に落とすこと,一次方程式を解くための操作ルールを覚えること,の2つのことができればよいので,数学の得意不得意にかかわらず解けるようになります.
その一方で,鶴亀算のほうは「仮定する=現実と異なる状況を想定する」という概念が入ってきます.これは,仮定の世界を頭の中に作り出す,すなわち想像力を働かせる必要がありますので,そのような思考が得意もしくは訓練により慣れているのでないと,なかなか負担が大きいようです.ただし,仮定さえできてしまえば,上記のように計算のコストはより少なくてすみます.
これが「代数的に解くほうが簡単」の正体なのでは,と考えています.
#以前バイトで塾講師をしていたころ,このあたりのことはさんざん悩みました….
なるほど! 「算術の方向の転換」は「現実と異なる状況をなじみの深い方向に変換」する操作なのですね。とてもわかりやすいです。
方程式を解くほうが簡単と思えてしまうのは、ひとつは小中で訓練させられたからなんだろうな、とも思います。脳みそをあまり使わずに機械的に計算していくことができるようになっているのでしょう。
鶴亀算は、鶴亀算の面積図を描くと一発で解けます。(中学受験の受験の裏技系の本や、塾のテキストには必ず載っている。)方程式より遥かに早い。
しかし、方程式は、「鶴亀算」と指定しなくても解けます。
つまり、より一般解に近く、「これだけ知っていれば、たいていのことは解ける」のです。鶴亀算は鶴亀算仕様の面積図を描く必要があり、旅人算や流水算や・・・・とバリエーションをたくさん持つ必要があります。
方程式は、各算術よりも「上位概念」であるので、「覚える要素が少ない」簡単さがあるのだと思います。
覚えることが少ないから方程式の方が簡単に解ける、というのは少し実感とは違うかなという印象です。単に覚える量の問題でしたら、一度覚えてしまえばどちらの場合で解いたとしても、あまり本質的な違いはないように思います。
私も半年ぐらい前にこの本を読んで、同じところで同じような疑問を持ちました。その時はわからないままでそのままにしていたのですが、この質問を見て再考してみました。結論を先に少し書けば、「未知数がどのぐらいあるかによって、どちらがより簡単に解けるかは変わってくる」と思いますが、まずは、P76で、ニュートンの以下のような記述があると思いますので、そちらを見てください。
「算術は一定で特殊であり、代数は不定で普遍的である。」
そもそも数字そのものがある程度抽象的なのですが、代数が不定で普遍的であるのは、未知数(変数)を取り扱う為にそこから更に抽象度を上げ、適用範囲を広げたからですよね。それで、算術と代数の使い分けはどうなのか? ということなのですが、その前に例に出しているツルカメ算について少し述べたいと思います。
このツルカメ算の場合は、id:tera-pさんが仰っているように私も算術の方が簡単に解けると思います。理由は2つあります。1つは元々算術の方が人間の認知的に計算しやすいのではないかということです。もう1つは、未知数(変数)の数が少ないので場合分け自体も少ないということです。この問題はツルとカメの2要素だけが未知数なので、片方をある数に仮定すると、もう片方は自動的に決まります。ツルを10匹だとするとカメは0匹ということです。この場合はtera-pさんの暗算ですぐに答えが出ます。厳密には算術の場合だと、(ツル10匹、カメ0匹)(ツル9匹、カメ1匹)(ツル8匹、カメ2匹)のように11パターンの場合分けが必要になりますが、未知数が2要素だけなので、一発で答えを出すことができます。
しかし、未知数がそれ以上になったらどうでしょうか。例えば未知数が4つになった場合を考えてみます。
ツルとカメとタコ(足8本)とイカ(足10本)が合わせて28匹、足の数は合わせて182本あります。それぞれ何匹ずつか?(注1)
これを算術でやろうとすると、全部の場合分けをして逐一計算して答えを探していくことになります。未知数が2つだった時は片方を仮定すれば、もう片方も自動的にきまりましたが、未知数が3つ以上ある場合は、どれかをある数値に仮定しても、他の数値は確定されません。答えを出そうと思ったら力技になってしまいます。それに対して代数だと連立方程式で機械的に解くことができます。(もっともこの場合は2つしか方程式がつくれないので、問題を解く為にはあと2つ方程式が必要ではありますが。)
P90にある、ある商人の財産を求める式も同じだと思います。この場合は未知数は1つで財産だけですが、計算手順が幾重にもなり、その結果、算術だと場合分けのように何回も計算をしなくてはいけなくなります。上手く表現できないのですが、それに対して代数は、未知数を「とりあえず固定化」するような役割をするのではないでしょうか。そして「固定化」して最後までいって、そこから逆算するという方法が代数の解き方なのではないでしょうか。ということは私の結論をまとめると、次のようになります。
人間の認知的には元々算術の方がやりやすくはあるが、未知数(変数)が増えることにより場合分けが多くなる問題は、算術で計算すると煩雑になるので適さない。そういう問題は代数によって逆算的に解く方が楽なのではないか。ということです。以上が私の考えてみたことです。トンチンカンだったらスミマセン。
(注1)話の本質には全く関係ありませんが、ツル7匹、カメ4匹、イカ8匹、タコ9匹で計算しています。
おお。ありがとうございます。
「未知数で固定する」という考え方が気に入りました。よく考えると、プログラムを書く場合も数学で言うところの代数である変数や、関数であるところのサブルーチンで手続きを抽象化すると、余計な場合分けや煩雑な手続きを後回しにしてシンプルにできるケースが少なくありません。その類を考えると、あくまで自分にとっては、ですが代数を持ち出して抽象化することが自然なことであるように思えてきました。
だいたいの数学の問題は、多数の前提条件からひとつの答えを導く問題構造になっています。
イメージしてください。前提条件(A,B,C,D)を上、答え(G)を下に配置したとき逆ピラミット型の構造をしているわけです。
で、問題を解くということは、この多数の「前提(上)」から「答え(下)」までを「論理でつなぐ」ということです。
簡単に言うと、この「論理でつなぐ」作業を、算術では上から下へ、代数では下から上へ、それぞれ行っているのではないでしょうか?
A B C D
G
普通は上から下に考えるのがわかりやすいものです。前提Aと前提BからEが導かれ、前提Cと前提DからFが導かれ、EとFからG(答え)が導かれる…といった具合に。
A B C D
E F
G
算術では、『解き方を知っている=「論理でつなぐ」作業をある程度知っている』ので、「前提Aと前提BからCが導かれ」がスラスラといえるわけです。
しかしここが問題。この例では前提は4つあり、そのうちの2つを選ぶ方法は6通りありますよね。もし算術を知らない人は、この6通りから正しい組み合わせを見つけられるのでしょうか??もっと複雑な問題では、組み合わせは爆発しますし。このなかから正しい組み合わせを示唆する、これが「算術の妙」です。
しかし代数は、「答え(下)」をある文字でおき、それを求めるには何を求めればよいか、さらにそれを求めるには…と下から順番に「論理でつないで」いきます。
算術では組み合わせ爆発を起こしてしまうところを、「Gを求めるにはEとFがわかればよい」と断言できるわけです。
そして「Eをもとめるには…あぁ、AとBね」「Fをもとめるには…あぁ、CとDね」というように「論理でつなぐ」作業は完成するわけです。
前提条件から出発し、なんとか条件をやりくりして進むか、答えをだすためには何が必要で…と考えて逆からたどるか、その考え方の違いだと思われます。
制約の中で力を発揮する日本人・ゴールを意識して進む欧米人、そんな感じがします。日本で算術が発展した文化的背景が見える気がします。
ありがとうございます。とても分かりやすいです。
やはり物事の考え方の方向が変わるというのは間違いないですね。これを意識しながら問題に向かえば、どのような場合に代数を持ち出すのか最適か、というのが明確になりそうです。
算術も代数もそれぞれ文法を異にする言語です。鶴亀算を算術で解く場合日本語で考え・記述することは難しいとは思いませんが、例えば英語で説明するということになるとこれは結構大変。でも代数なら日本語でも英語でも同じだから簡単。つまり算術は算数だけでなくあらゆる記述・思考に万能な言語を借りて考えているのに対して、代数はこの種の問題(代数の問題)を解くため「だけ」に専門化すべく開発された言語乃至プログラムまたはアルゴリズム。
万能包丁より刺身包丁の方がお魚は切りやすいけど、お魚以外を切るのには向いていない、あれです。雑駁な説明ですみません。
確かにそうですね。一度代数方程式に置き換えてしまえばあとは機械的に進めていくことができます。
別の本にも、まさに「代数方程式はアルゴリズム/計算機」であると記述されていました。プログラマの自分にとっては、代数方程式がそれとみなせるというのが目から鱗です。
おお。ありがとうございます。
「未知数で固定する」という考え方が気に入りました。よく考えると、プログラムを書く場合も数学で言うところの代数である変数や、関数であるところのサブルーチンで手続きを抽象化すると、余計な場合分けや煩雑な手続きを後回しにしてシンプルにできるケースが少なくありません。その類を考えると、あくまで自分にとっては、ですが代数を持ち出して抽象化することが自然なことであるように思えてきました。