先日は、

 

 

 

 

にて因数分解と数値と計算について書きました。

 

 先日は係数が一つの項の場合の条件について書きましたが、2つの数値に共通する約数を求めると、括弧の外に持っていき係数として使用できることについて書きました。この場合、括弧内の数値は小さいほうがいいので、元の数値以外で共通した約数が存在する場合、素数で割っていき、2つの数値に共通した約数がなくなるまで処理を行うことになります。この時に素数で割っていくことになるので、割り切れた素数の数値を掛け合わえたものが2つの数値に共通して存在する約数になります。これが係数になるので、括弧内の係数は割り算の余りが入ります。
 
 これを行う際に筆算によって割っていく事で計算がしやすくなりますが、この方法で素因数分解をすると、複数の数値の加算を計算しやすい形に変更することが出来ます。この時に発生する、複数の数値に存在する共通して存在する約数を 【 公約数 】 と言いますが、括弧内の数値を小さくする場合、共通した約数の最大値を求めることになります。この 【 複数の数値に共通して存在する約数の最大値 】 のことを 【 最大公約数 】 と言います。

  先日は、分配法を用いて処理ができる条件について書きましたが、これは九九を用いると利便性を理解しやすくなります。九九は二次元配列を使用した乗算の結果を示した物になりますが、これをデータとして考えると、【 行 】 と 【 列 】 でデータを取得できる構造になってます。九九の場合、この行と列が1〜9で構成されていますが、この数値を指定することによって縦と横を用いて乗算を行った際の積を求めることができるようになってます。この二次元配列を使った際に 【 Xの段のA番目とB番目を加算した結果 】 というような処理を行う場合、基本となるのは 【 何番目 】 という表記が可能な1〜9になりますから、これをAとBの加算結果が出ます。つまり、1の段だと1番目と3番目を加算すると4になりますが、係数が1なので、答えは4になります。

 九九の場合、この数値に係数を加えたものですから、X段目の値を係数として追加すればいいので、これが9番目だとすると、27になります。この構造を式にすると 

  ■ X : n段の数値
  ■ A : n番目の数値
  ■ B : n1番目の数値
 
になるので、4季を構築すると 【 X(A+B) 】 になりますが、この変数の役割を変更すると別の使い方が出来ます。例えば、異なる段のn番目の数値を加算していくような縦罫での演算を行う場合、

  ■ X : n番目の数値
  ■ A : n段の数値
  ■ B : n1段の数値

のように目的とする対象物を変更するだけで、縦方向と横方向に切り替えて考えることができるようになります。

 このように括弧で加算を用意して係数で制御をすると二次元配列を使用した際に縦と横の計算をデータの指定の変更だけで行えるようになりますが、計算をする時にもこの考え方を用いると計算を楽に行うことができるようになります。例えば、4の1.5倍の場合、4と4/2と考えることができるので、4(1+1/20)と考えることが出来ます 【 0.5倍の場合、元の数値を2で割って桁を下げる 】 だけで計算できるので、2で割った後に右シフトをする処理を実装すれば対応できます。多分、【 5の段の乗算 】 よりも 【 2分割 】 のほうが手計算だとかんたんなはずなので、少数点数の場合だと、繰り下がりの分だけ右シフトを行って桁を下げれば簡単に0.5倍や0.05倍のような倍率の計算をすることが出来ます。このように 【 同じ計算でも簡単に処理をする方法がある 】 ので 【 日常だと簡単に処理が出来て数学的に正しい解が出るものを使ったほうがいい 】 ので、そういった方法を用いることになりますが、分配法は五進数で考えた場合に使用できます。

 五進数は5で増えるものになりますが、 【 視点だけ5の増減 】 に定義しておきます。その上で、数値の推移を考えると十進数の数値の変化が違うものに見えてきます。

 例えば、数値の場合、5を基準とすると



のようになります。これを見ると、数値も多項式で示すことができるので、【 10/2 】 の結果を使う事で意外と簡単に答えを出すことが出来ます。また、1の倍数は10の倍数に対して1桁分だけ右シフトをかけたものになりますから、桁のお押し数値を半分にして桁を減らした処理の結果と考えることも出来ます。ちなみに、数値を乗算の結果として考えた場合には、



のようになりますから、定数項の多項式として加算を行うよりも式を簡素にすることが出来ます。そして、数値の変化については、



のようになりますが、8の場合、4x2ですから、4の構造を2倍にしたものになります。その為、表のように 【 2(5-1) 】 の形で4季を構築することが出来ます。この時の2は係数なので、係数を変化させることで4の倍数を作ることが出来ます。

 また、表のように、9と11の場合は、10を基準とすると1の加減算で値を作ることができるので、最初に左シフトを行って桁を増やしてから1を引くと9になり、1を足すと11になります。つまり、9倍や11倍の場合、元の数値の乗算の結果を基準として、左シフトを行い、その桁が増えたものに対して、元の数値を追加や除去するだけで11倍や9倍にすることができます。この時の元の数値が係数になります。この時の係数をnとした場合、

  ■  4倍 : n(10/2-1)
  ■  6倍 : n(10/2+1)
  ■  9倍 : n(10-1)
  ■ 11倍 : n(10+1)

のような形になります。これを数値に置きかえると

  ■  4倍 : n(5-1)
  ■  6倍 : n(5+1)
  ■  9倍 : n(10-1)
  ■ 11倍 : n(10+1)

のようになるので数値の変化を5の倍数を基準として考えると計算を行いやすくなるわけです。プログラミング言語では、
 
  ■ 桁の増加 : 左シフト
  ■ 桁の現象 : 右シフト
  
で制御できるのでビット演算を使用して1バイトのデータの任意の桁に値を入れた場合、シフトの操作だけで桁が変わるので左右の位置を変更できます。これを表示に置きかえるとシフトの処理だけで左右の移動を制御することができるので、ビット演算の結果を使用するだけで8つの区画のある中のいずれかの場所に何かを表示したり配置するような処理を実装することができるようになっています。

 ちなみに、このシフトの処理は、 【 累乗 】 と同じなので、日常で使用している十進の場合だと、10の累乗で制御できるので、

  ■ 桁の増加 : 指数がプラス
  ■ 桁の現象 : 指数がマイナス

にすると、整数と少数点数の制御ができるので、桁に配置した値の位置の制御することが出来ます。その為、

  ■ 左シフト : 指数がプラス
  ■ 右シフト : 指数がマイナス

のようになります。


 
 このように指数を使うと桁数を変更できるのですが、数値自体は1の倍数に対して係数を加えたものなので、その構造を扱いやすいアルゴリズムに変換して使用すると計算を行いやすくなります。

 因数分解については、 【 アルゴリズムを構築するための手段 】 になりますが、変数で制御する際に処理がしやすい形に式を高知来るための部品になります。

 基本的に、乗算処理は 【 同じ数を特定の回数加算する処理 】 なので、 【 0に対して指定した値を回数分だけ追加する 】 処理になりますから、対象となる値が1の場合だとインクリメントになりますから、 【 a=a++ 】 と 同じ状態になります。これを指定回数分だけ行っているので、【 for i in range(x) 】 のような形でx回分だけループさせる処理の中にインクリメントを入れると1の段の値を追加することが出来ます。また、xはそのまま使用できるので、  【 y=a*x 】 のように係数aを指定するとaの段の値を取得することが出来ます。この仕組みを見ると、乗算処理はプログラミング言語で使用するループ処理と同じなので、whileやforと同じ構造と考えることが出来ます。

 中学校の数学では、最初に符号を学習することで、0以下の数値を扱えるようにして、0からの値の距離が絶対値であることを学習しますが、これにより減算は後に追加できるものであることを学習します。そして、その後に、 【 任意の値を代入できる物 】 として 【 変数項 】 を学びますが、従来使用している数値の形の 【 定数項 】 を代入することによって、数式の絵画変化する構造物の作り方も学習します。これが 【 関数 】 になりますが、推移を扱う際の最小単位である 【 始点と終点をつないだ時の変化の状態 】 を示すことができる 【 一次関数 】 でそれを用いることのメリットを体験することができるようになりますが、項の場合、 【 式は加算の形で構築する 】 ので、 【 項そのものが処理の塊として扱える 】 ようになります。その為、中学校1年生の数学の段階で、プログラミング言語で必要な 

  ■ 定数と変数の仕組み
  ■ 処理単位で構造を作る
  ■ 処理を順番に並べて実行する

という基本部分を 【 数式の形で学習する 】 ことになりますが、加算はスケジュールと同じなので、項を使った式は 【 工程表 】 と同じように考えることが出来ます。その為、このカリキュラムで登場するのはプログラミング言語の 【 順次 】 と同じものになりますが、変数項を用いた加算の場合、その変数項は処理の塊で、それが順番に実行されている状態とかんがえることができます。

 これが、【 順次 】 になりますが、乗算処理はループなので、 【 反復 】 になりますから、この段階で、数式の形で、順次と反復を実装する方法を学習していることになります。

 その為、 【 4(a+1) 】 のような構造は、 【 0に対してa+1を4回加算する処理 】 なので、初期化でa=0を行った時に、a+1を4回行う処理を示したものと考えることになります。
  
 インクリメントをする処理で、aが0で1を4回足していくものだと
 
 
 
のようになりますが、このコードをコンソールで
 
 
 のようにして実行すると、
 

 
 のようになります。
 

 
 このようにループを使うと乗算になりますが、ここに係数を追加するとこの結果に対して更に係数分だけのループを追加した状態になります。このように乗算を加算のループ処理として考えると、ループ回数を乗算に置き換えて考えることができるので、 【 ループ回数(処理を示す式) 】 のように考えることが出来ます。また、加算は順番に処理を仕組みになっているので、これを工程表と考えると、プログラミング言語の順次と同じになります。先程のコードも



のような順番で処理が行われているので、通常はコードは上から順番に処理が進む仕組みになっていますから、処理の構造を考える時の基本は加算のような追加による処理の変化で考えていくことになります。加算で考えると、同じ処理を追加する場合には 【 乗算でまとめることができる 】 ので、【 同じ工程を複数回行う場合にはループ処理を使用できる 】 ようになっています。

 数値を使う場合、結果として存在している定数項を目にすることが多いのですが、その定数項になるための処理を考える場合には、アルゴリズムを構築する必要があります。当然、構築するのは関数ですから、解と式を比較した時に等式の関係にあり、 【 二者は一致する 】 という条件にする必要がありますが、因数分解は処理を簡素にするためのツールとして利用することも出来ますが、構築しているのはアルゴリズムなので、プログラミングを行う際の処理の構造を簡素にするための部品として使用することも出来ます。
 
 

  変数を使った処理


 2つの式の加算の場合、公約数を算出すると括弧内に加算の式を格納して公約数を係数として使用できるのですが、この時に、式内の値を変数にすることで式の構造を自由に扱う事ができるようになります。こえrが二次元配列を使用した際の縦軸と横軸の入れ替えだったり、関しに計算をするための手段だったりするわけですが、数値は加算や係数を追加した状態で構成できるので、5と言う数値が2+2+1でできているように数値の追加によって形を作ることが出来ます。この構造も

  ■ 0 : 存在しない状態
  ■ 1 : 存在する状態

があって、この二値の判定に対して、 【 集合を扱うためのツール 】 として 【 数字 】 が存在しています。その為、数値は先程の存在する状態を示す1がいくつあるのかを示したものになりますから 【 1の集合を記号の違いで判別できるようにしたもの 】 になります。1を10個1セットで並べても十進数になりますが、流石に、この状態だと巨大な集合を扱えないので、この状態を見ただけで判断できるようにしたものが数字になります。現実世界に存在する集合は 【 1の集合 】 ですから、膨大な数の1の集まりになりますが、これが幾何学と同じ状態で集合を示した状態になります。この幾何学のように図形などで状態を示す表現を具象化業元と言います。小学校1年制の算数では数字と足し算と引き算を学習しますが、これは集合を一つの数字で記述する方法とその変化を扱う基本的な処理の学習になりますが、数字は1つでも9のように複数の集まりを示すことが出来ますが、このように数値を使った処理や計算をする場合には具象化ではない抽象的な状態で状態を示して扱うことになります。このように数値を使った計算などで使用する木代数学の処理が生じるものについては 【 抽象化表現 】 と言います。小学校の算数では、日常で存在する複数存在するものを扱うための術を学習することになりますが、これも具象化表現では扱うのが大変な 【 集合 】 を 扱うための方法になります。

 ちなみに、有無というのは結果ですから、物事を細分化して確実にこの状態しかないものにした場合にはこの判定を用いることが出来ます。物事や思考をする際に構成要素をこのレベルまで細分化して分類して判定を行った場合、人の思考はこの1bitの処理の集合だけで行うことが出来ます。数学で、この内容は証明されているのですが、この1bitの判定の組み合わせで全ての判定が行えると言う考え方はブール代数を用いすことで実行することが出来ます。これを機械や電気に使用することができるので、キルヒホッフの法則を用いると機械に対してブール代数を使用することができるようになりますが、こうした処理を電気的に行うのがロジックICで、これを集積回路内のトランジスタを使ってコードで行うのが論理演算になります。コンピューターを使う場合、そういった判定はプログラミング言語を使ってコードを書いて処理しますが、実際の動作はロジックICと同じなので、電気工作の中にトランジスタを用意してMOSFETと同じ作りにしたものを運用するような判定が行われています。

 この状態だと【 単数の判定 】には対応できますが、複数の藻には対応できないので、条件抽出のようなものが出来ません。そこで、集合に対応するために 【 集合に対する条件抽出の方法 】 として 【 集合演算 】 を用いることになります。このカリキュラムが高校の選択科目の数学Aで学習しますが、プログラミング言語を使ってコードを書く場合だと、コード内に 【 分岐 】 を含む場合に使用しますから、必然的に使用することになります。その為、

  ■ 論理 : 条件の組み合わせ
  ■ 集合 : 条件抽出

を判定で使用することになりますが、状態の判定の有無は論理で、数値のような集合を扱う際に使用するのが集合になります。小学校の算数も数値の集まりなので 【 集合 】 を扱うことになりますが、集合演算の概念は出てきませんが、図形の面積が幾何学とアルゴリズムを使ったデータの条件抽出(なので、義務教育の場合、面積や体積の算出方法の中で、論理積、論理和、論理否定の3つの処理を体験することになります。)を行うものなので、【 面積という二次元化したデータの集まり 】 として 【 集合 】 を扱っています。

 また、数列も 【 複数の数値の法則性 】 を扱う分野で等差数列の法則性も 【 一般項 】 で示すことが出来ますから一次関数と同じように【 変数を用いた式で法則性を示すことができる 】 ようになっています。

 定数項は数字なので、【 1の集合 】 ですから、いろいろな形に分けることができるのですが、【 式 = 解 】 の形で示すことができる等式の状態になりますから、解を示す定数項の値を式の形に分割した際に右辺と左辺が一致することを示したものがこれになります。つまり、式と解が一致する条件であれば、自由に集合を分割できるので、単純に二分割をして比率を変えることも出来ますが、これが 【 加算 】 になります。これとは別に、超過したものから余計な部分を除去して目的の値にするのが 【 減算 】 になりますから、等式を基準に考えると、

  ■ 加算 : 粘土細工での年度をもる処理
  ■ 減算 : 彫刻などで除去をする処理

と考えることが出来ます。乗算は追加のループ処理なので、同じパーツを複数オブジェクトに追加する際には乗算処理になりますが、除算については、分ける処理なので、形状を分割する際に使用するものと考えることが出来ます。

 このように演算処理も抽象表現ではなく、具象表現に置き換えて考えてみると、美術の分野は四則演算で処理を用いている事が解りますが、小学校の算数でも四則演算を基礎としてもう少し扱いやすくした処理を学習します。現実世界でも同様に複雑な処理を行えるので数学の知識が増えると祖父江多分だけ処理を行う際の選択肢が増えます。


 ちなみに、等式は、式と解を比較した際に一致するので、等号で二者を記号で結んで表記している状態になります。ちなみに、対象が範囲の場合には等号ではなく不等号を使用します。その為、

  ■ 等 式 : 値が確定している
  ■ 不等式 : 値が範囲

なので、グラフにすると、前者は座標の集合なので線分で表示され、後者は範囲なので面が生成されます。
 
 目的の値になる処理を構築するアルゴリズムの構築で様々な形が存在しますが、これは、定数項の解を用意した場合でも同様で、一つの値に行き着く数式は無数に存在します。その為、計算で用いているものはアルゴリズムが確定しており解と等式で結ぶことが可能なものの中の一つでしかないので、処理を構築する際にも様々なアプローチが存在します。

 学校教育で学習する内容は 【 基礎固め 】 なので、【 応用分野を理解するための物 】 になりますが、基本的には 【 処理を行うための部品 】 の学習しになります。この処理には

  ■ 思考
  ■ 判断
  ■ 構造物の構築
  ■ 動作に実行

など様々なものが含まれますが、基本的に 【 部品が欠損するとそれを用いた処理が出来ない 】 ので、知識の欠如によって対応できないことが増える場合があります。また、 【 応用分野は基礎が出来ている前提で話が進む 】 ので、 【 関連する分野が膨大な数に登る場合、基礎がまるごと欠落していると理解ができなくなる 】 ので 【 結果的に先細りしてしまう 】 わけです。その為、知識の蓄積や能力の取得の場合には、自己分析をしっかりと行い、欠損部分を理解し不足のない状態にしていく必要があります。
 
 学習や練習というのは 【 部品集め 】 ですから、生物として野生と同じレベルで生きていると取得できない物を得るための手段になりますが、それによって、思考や判断をする能力を高めたり、同じ処理をする場合に正しい海を持ち引き出すためのアルゴリズムを考える能力をやしないこともできるようになります。こうした技術体型をまとめたものが 【 数学 】 という分野でこれを現実世界に存在する現象に当てはめて使用したものが理科の 【 物理 】 の分野になります。その為、法則性を示す関数は物理法則を示す4季として使用されていますし、その状態変化を示す時に使用するグラフについても数学の 【 解析学 】 が用いられています。

 定数項で記されている解も前述のような形で 【 四則演算 】 の状態に変形することができるのですが、小学校の算数では、この処理の方法というツールのの使い方から学ぶことになります。現在の小学校のカリキュラムだと割り算の前に中学校以降では頻繁に使用する 【 分数 】 を使うような流れになっているので、 【 分けるという処理を数式にする 】 という方法を学んだ後に 【 割り算でそれができる 】 というカリキュラムの流れになっているようです。
 
 中学校のカリキュラムでは、 【 加算以外の処理は変数項に追加できる 】 ので、

  ■ 減算 : 符号
  ■ 乗算 : 係数
  ■ 除算 : 分数
  ■ 累乗 : 指数

で指定できるようになっていますが、高校だと冪乗(べきじょう)が登場するので指数の自由度の高さをもっと広げて使用できる方法を学習することになります。基本的に変数項の場合、

【 基本モジュール 】

  ■ 変数項 : 任意の値を追加できる箱

【 追加オプション 】

  ■ 符号 : 反転モジュール
  ■ 係数 : ループモジュール
  ■ 分数 : 等分モジュール
  ■ 指数 : 多重ループモジュール

を組み合わせることによって、変数項に代入した定数の値を変化させて使用できる仕様になっています。

 この組み合わせを用いることで、加算だけで 【 数式同士を加算する構造 】 にすることができるようになっていますが、この構造だと複雑な処理になると数式が長くなると言う問題があります。そこで、先日書いたような公約数を求めて係数でまとめるような構造にすると、複雑な式を計算しやすい構造にすることができるようになっています。
 
 

  同じ変数を使う処理


 先日は、一つの変数項目が一箇所で使用されている事例について書きましたが、九九の表を見ると【 同じ数の掛け合わせ 】が登場します。これは、正方形の面積の公式そのものですから、 【 xのn乗 】 の形になってますが、九九の場合、【 x≠y 】 のように縦と横が異なる状態になっているので、長方形の面積の公式になっています。その為、【 xy 】の形で値が出るようになっています。

 先日は、 【 九九の表の xの段のa番目とb番目の値の和 】 を求める際に 【 x(a+b) 】 という形で算出できると書きましたが、前述のように、九九の表には 

  ■ x=a
  ■ x=b

の条件も存在します。この場合、同じ変数を使用することになりますから式の形も 【 x(x+b) 】 のような形になります。この条件で式を展開すると、xをそれぞれの変数に掛け合わせることになるので、 【 x+bx 】 という形になります。
 


 この式に定数の値を代入して計算すると



のようになりますが、分配後には同じ値があるので式の中に指数を使った処理が発生しています。

 中学校の数学では、式の構造を項の数や指数の状態で示しますが、

  ■ 単項式 : 項が1つ
     
     ・ 1
     ・ a
     ・ 2x

  ■ 多項式 : 項が複数

     ・ a+b
     ・ x+1
     ・ 2x-y


で分けることが出来ます。単項式は、一つの後で完結しているものになり、多項式は後が複数ある物を指します。その為、中学校で登場する関数の式も変数校と定数項が加算の状態で存在しているので多項式になります。これに対して解として使用する変数yは変数単体ですから、項が1つのなので単項式ということになります。その為、

  ■ 単項式 : y
  ■ 多項式 : ax+b

のような構造になります。中学校の数学では、指数が登場しますが。これを含む式が多次式になります。方程式の変数の指数の数を 【 次数(じすう) 】 と言いますが、この次数の数で関数の呼び方が変わります。関数では、

  ■ 一次関数 : 次数が1
  ■ 二次関数 : 次数が2

になっていますから、この関数の呼び名が、変数xの指数の数に由来していることが確認できます。

 方程式のカリキュラムでは、【二元一次方程式】 も登場しますが、この時の 【 元 】 とは、

  ■ 元 : 式内に存在する変数の数

になります。その為、 【 2x+4y=48 】 のようなものが存在した場合、次数は1なので、一次方程式になりますが、変数校の数を見ると2つあるので、二元ということになります。この楮を見ると、 【 二元 】 と 【 一次 】 の 【 方程式 】 なので、 【 二元一次方程式 】 になります。

 因数分解は二次方程式で登場しますが、先程のように同じ数が掛け合わさると累乗になるので指数が増えますから、二次関数のような構造になりますが、多次式の 【 指数のついた変数が0になるまで存在する 】 ことになります。ちなみに、【 xの0乗は1 】なので、ここは定数項になるので、 【 最大値〜0 】 になるまでそれが並びます。そのため、二次方程式だと



のような推移になります。基本的に加算の構造なので、そのまま項の単位で計算してもいいのですが、この多次式を一次式のような簡素な方法で解くことが出来たら計算がしやすくなります。その為、式の構造によっては、【 一次式を部品として利用した数式 】 にすることで簡素な計算をすることができるようになっています。
 
 今回は文字数の関係でこの方法については紹介できないので、次回その方法について書こうかなと思います。