先日は、

 

 ■ 時間と推移

 

にてグラフについて書きました。波は合成できるので、

 

 

のような式で、

 

 

野用が合成が可能で、乗算もできるので、

 

 

のようにすると、

 

 

のように波の形は変わります。そして、

 

 

のように最初の二つの式を合成すると、

 

 

のようになり、変数xの数値が増えると、

 

 

のように密度が高くなります。このように波形は合成することができますが、関数も関数内に項として組み込むことが出来るので、こう言った合成ができます。

 

 時間単位のデータを扱って推移を扱う分野は多く存在するのですが、MIDIシーケンサのCCのパラメーターの変化や、

 

 

動画におけるキーフレームの制御も時間軸の推移で制御を行います。

 

 

3DCGのモーションも同じ仕様なので、キーフレームで制御する事になります。

 

 

 時間軸で制御する物はこのように複数存在します。また、ベクトルのように座標と方角の概念を持たせると、座標移動と言う概念が出てきますが、この概念は、CADでも使いますが、CNCによる制御がそう言った物になります。これは、座標と処理の制御になりますから、

 

 

のような物を作る場合に、穴あけが必要だった場合、少なくとも穴の中心にボール盤のドリルのセンターを持ってくる必要があります。そうなると、

 

 

の場所がセンターになりますが、この中心の座標にドリルのセンターが来る必要があるので、

 

 

のポイントにドリルのセンターを移動させる必要があります。この場合、移動だけだと、

 

 

のような流れで進んで、そのまま矩形を描くように移動すると、少ない工程数で移動とホームポジションへの回帰をすることが出来るようになります。

 

 光や音も水流などと同じ波ですが、現在の表示は光なので、これは、波長をコントロールする物理の分野の延長線上のものですし、映像コンテンツやゲームでは、この光と言う物理現象と音と言う物理現象と同時に電気と言う物理現象も使用しています。そして、この伝達の全てが波で構成されている訳ですが、波の特性は同じですから、変調をすれば変化し、波形の変化のように、波は四則演算によって変化させることもできます。

 

 小学校や中学校の数学で学ぶ物は、構造物を作るための部品の仕様書と使えるようなるための学習であり、それを用いて拡張した物を学ぶ上での準備段階の物になります。また、理科の分野のおいては、少し先で答え合わせが出来る物 ( と言うよりも、 ”そうなる” という形で学んだものが、 ”どう言うメカニズムでそうなるのか?” を後の学習で学ぶことになります。 ) になっていますから、少し先のカリキュラムで出てくるものを事前に体験する事が出来る分野になります。

 

 その為、中学校の理科のカリキュラムは、小学校で出てきたものを掘り下げた内容になっていますし、中学校のカリキュラムで良く解らないがそう言う物だと学んだ内容も高校になると 【 なぜそうなのか? 】 を掘り下げて学習する事になります。また、登場した物をさらに拡張して使うようなことになるので、グラフの見え方も高校のカリキュラムでは少し違った物に見えてくるはずです。

 

 ただし、これも 【 空間の使い方の一部を学習しただけ 】 なので、平面空間を拡張した多次元の物になると、さらに自由度の高い推移を扱う事が出来るようになります。カリキュラムの内容を見ると、グラフと数式を見ると

 

   小学校 : 正の数で発生する現象の理解

   中学校 : 二次元の数直線上の挙動の理解

 

になりますが、ヒストグラムや変域(これは座標で見ると分かりにくいですが、データで考えると、データ抽出の方法の学習になります。また、グラフィックの場合、座標があるので、同じ方法で範囲指定ができます。グラフも目盛りの入った物の中に配置された幾何形状と考える事が出来るので、同じ空間で同じ制御方法が行えているグラフに出来て、グラフィックにできないわけがないので、同じ考え方で範囲抽出が行える訳です。)を学んでいますから、解析学で必要な物の基礎分野は学習できている訳ですが、時間軸と推移については、様々なところで使われています。身の回りの出来事は、空間時(三つの数直線があるので三次元になります。)と時間軸があるので時空間上の出来事になりますが、これをユークリッド空間上で行うのが3DCGになります。現実世界は球体が遠心力で歪んだものの上で発生しているので、正面に向かってベクトルを向けた場合、その延長線上は地球の外側に向かってしまう(ので、三角関数で水平線や地平線までの距離を割り出してみると結構近くまでしか見えていないことが分かります。)わけですが、中学校の数学や物理で一変数関数のグラフしか扱わない理由は、 【 一変数関数を学んだばかりなので、多次元を学ぶ前に一変数関数の世界を理解する必要がある 】 ためです。つまり、多変数関数については、一変数関数の拡張なので、掛け算を学ぶ前に足し算を学ぶような基礎作りとして考えた場合、そう言った流れの方が理解をしやすいのでそうしたカリキュラムになっています。

 

 その為、現実世界や3DCGで発生する時空間での出来事のような物を示すものは登場しませんが、中学校までの学習でも一変数関数によるグラフと物理による時間軸での推移は学習していますから、

 

 

のように座標軸を分離して考えて、その結果を個別に合成するような手法を用いると、中学校の知識でも多次元の推移を示す事ができます。その為、プログラミングを行う場合だとタプルや配列などに座標軸を指定して個別に推移をするグラフを入れることで、二次元の推移を追加できるわけです。この方法だと、中学校までの知識でも多次元にある物体の座標軸の変化を与える事が出来ます。

 

 中学校までの学習だと、関数の合成と言う概念がないのですが、この理由は、 【 関数の基礎を学ぶ状態 】 だからで、 【 後に関数の合成が登場するので、法則性を理解する為の準備 】 が中学校のカリキュラムになります。

 

 その為、

 

A + B = C

 

のように

 

 

【 初期値 】 (演算記号) 【 変数 】 = 【 解 】

 

 

の構造ですが、この構造体は、

 

 

【 定数 】 (演算記号) 【 変数X 】 = 【 変数X依存の変数 】

 

 

になります。この構造物は、

 

 

【 Cと言う解は等式で結ばれた数式と一致する 】

 

 

という内容を短い数式にまとめた物ですから、

 

 

   A = A1 + A2

 

   B = B1 + B2

 

   C = A + B 

 

 

と言う条件があった場合、解は数式と入れ替える事が出来るので、

 

   C = A1 + A2 + B1 + B2 

 

という事になります。ただし、この数式だと複雑になるので、処理を分けて考える事になる訳ですが、高校の数学ではイメージとしては、このCのような 【 処理の構造体 】 を 【 項 】 として使うような数式が出てくるので、基礎分野の理解が重要になります。

 

 プログラミング言語の変数や関数の扱いですが、高校の数学の数式の構造を個別に分解してみて処理の方法を見てみると、構造的によく似ていることが確認できます。その為、数学の分野については、17世紀以降は代数学と幾何学だけの分野ではなく、 【 解析学 】 が登場しているので、小学校からその初歩的な物に触れるようになっていますが、多くの場所で数学が使用されるようになっています。

 

 プログラミングを行う時の処理の考え方は高校だと数学や物理や論理(ちなみに、この論理はアリストテレスの時代から存在します。)で見た事がある物が多く登場するはずですが、コンピューターは数学で動いており、時空間上の物理現象は数式で示すkとが出来る物が多いので、挙動と言う物理現象と同じグラフで示す事が出来る物を扱う場合に数学で対応できるのも当然な内容と言えます。

 

 その為、自然界の物理現象のように波で制御されている物は波のコントロールで対応できるわけですが、個人レベルだと、

 

■ 音の変化                       

 

   音   量 : 振幅の変化

   音の高さ : 周波数の変化

   音状態  : 波形の合成(関数の演算処理)

 

 

に関しては、ソフトウェアで体験できます。

 

 先日は、そんな感じで、グラフについて書きましたが、今回も数式とグラフの変化などについて書こうかなと思います。

 

 

式の構造                      

 

 数式の構造の最小単位は、加算になりますが、この構造は、

 

   定数の指定

   処理

 

という流れになっています。小学校1年生の 【 さんすう 】 では、足し算が出てきますが、この中で、

 

【 1 + 1 = 2 】

 

のような構造物が出てきます。この構造ですが、

 

■ 数式の構造                     

 

   【 現在の状態 】 と 【 変化 】

 

 

のようになっていますから、等式とは、

 

 

■ 等式の構造                     

 

   【 現在の状態 】 に対して、 【 変化 】 を加えた場合、

   その状態変化で発生する 【 結果 】 になる

 

 

と言う物を、数式で表記したものになります。この基礎部分を小学校1年生で学ぶわけですが、基本的に、不等式などが登場しない限りは、等式で示したものだけが登場します。

 

 その為、方程式や定数項で構成された数式の場合、解は決まっています。

 

 小学校の算数では、統計学の分野で使用する物であり、グラフで表示した時に 【 変化 】 を示す事が出来ない物だと解は決まっています。その為、等式の答えは定数項(数字で表記される定数で構成された項)になります。

 

 小学校では、

 

■ 小学校の算数                   

 

   穴埋め問題    : 一次方程式

   等比数列      : 一次関数

   比   例      : 一次関数

   等差数列      : 二次関数

   正方形の面積   : 二次関数

   反 比 例      : 分数の関数

 

の練習をすることになりますが、この時に穴あき問題以外はすべて数字が入っていると思います。

 

 その為、大半は 【 定数項を使った法則性の理解 】 の学習になります。

 

 まず、この法則性を学習した上で 【 穴埋め問題 】 のように基本の法則性を知った上で 

 

【 形式が変わった場合に等式が成立する状態にする 】

 

物も登場しますが、変数の登場については、穴あき問題(なので、数学における英文字は変数になります。)と同じものになります。

 

 

 埋め問題                      

 

 小学校2年生の算数から 【 穴埋め問題 】 が登場しますが、この時に、小学校1年生で学習した 【 たしざん 】 【 ひきざん 】 を用いたものが登場します。

 

 これは、

 

■ たし算の穴埋め問題               

 

   (  ) + 10 = 15

   (  ) + 4  = 15

   11 + (  ) = 25

 

 

■ ひき算の穴埋め問題               

 

   (  ) - 10 = 15

   (  ) - 4  = 15

   11 - (  ) =  5

 

のような物になりますが、この()は任意の数なので、変数に置き換えて記述する事ができますから、

 

■ たし算の穴埋め問題               

 

   a + 10 = 15

   a + 4  = 15

   11 + a = 25

 

 

■ ひき算の穴埋め問題               

 

   a - 10 = 15

   a - 4  = 15

   11 - a =  5

 

 

のような形になります。これを比較すると全く同じで表示が変わっただけという事になります。中学校だと、 【 文字と式 】 で、

 

 

■ 文字と式                       

 

   数式には文字(アルファベット)を使う事が出来る

 

      (例) a + b 、 x + a

 

   積(掛け算の解)は演算記号(×)を省略できる

 

      (例) 50×a = 50a

 

   商(割り算の解)は分数で表す事が出来る

 

      (例) 50÷a = 50/a

 

 

と言う内容が出てきます。その為、計算式が、

 

 

   2a - 10 = 15

   a/5 - 4  = 15

   11 - 2a/5 =  5

 

 

のような式になります。この場合、

 

 

   2a - 10 = 15 

 

       → 2 × a - 10 = 15

 

 

   a/5 - 4  = 15 

 

      → a ÷ 5 - 4  = 15

 

 

   11 - 2a/5 =  5 

 

      → 11 - 2 × a ÷ 5 =  5

 

のようになっています。この構造の式を解くことになります。

 

 小学校の穴埋め問題の場合、()の内部に入るのは正の数なので、

計算結を考える場合、

 

■ たし算の穴埋め問題               

 

   足してその答えになる物が答えになる

 

    

■ ひき算の穴埋め問題               

 

   引いてその答えになる物が答えになる

 

 

と言う物ですが、中学校では、

 

■ 等式の法則性                   

 

  

   両辺に同じ数値を足しても等式は成り立つ。

 

       A=Bの時、 A+C = B+C が成り立つ

 

 

   両辺に同じ数値を引ても等式は成り立つ。

 

       A=Bの時、 A-C = B-C が成り立つ

 

 

   両辺に同じ数値を掛け合わせても等式は成り立つ。

 

       A=Bの時、 A×C = B×C が成り立つ

 

 

   両辺に同じ数値を割っても等式は成り立つ。

 

       A=Bの時、 A÷C = B÷C が成り立つ

 

 

と言う物が存在します。その為、数式の穴埋め問題も中学校以降の数学だと少し計算方法が変わります。ただし、速く計算する方法になるので、基礎を理解した上でこれを用いると四則演算が組み合わさった穴埋め問題を解きやすくなります。

 

 

 式・不等式                     

 

 小学校4年生では、 【 以上 】 、 【 以下 】 、 【 未満 】 などを学習しますが、この時に 【 不等号 】 が出てきます。これも中学校では、 【 等式・不等式 】 という形で出てきます。

 

 小学校2年生では、 【 かずのおおきさ 】 を学び、3年生では、この時の桁数が増えますが、4年生では、この数値の大小に記号を使った表記が出来ることを学びます。

 

 数の比較については、

 

 ■ 算数と信号と回路 【 マインクラフト統合版 1.16.40 】

 

の中でも触れていますが、小学校では、定数項での比較なので、定数項同士の比較になっていたと思いますが、中学校では、数式との条件判定をお行います。

 

 等式と不等式については、プログラミング言語では条件分岐で使用しますが、 【 比較演算子 】 として変数の判定などを行います。比較演算子については、

 

 ■ 判定の実装 【 マインクラフト統合版 1.16.200 】

の中で触れていますが、 【 等式・不等式 】 については、変域で必要になる知識になります。つまり、小学校で等号、不等号を学習するという事は、この等式、不等式に置いて 【 記号で混乱しないための対策 】 であり、 【 等式・不等式 】 は 【 変域 】 を学習する柄での必要な条件になります。

 

 等式・不等式は、

 

■ 等式・不等式                    

 

    右辺と左辺の状態を比較した時にその二者の

    関係性を等号や不等号で示した式

 

   A>B : (Aは、Bを含まない状態でそれより上)

   A≧B : (Aは、Bを含めた状態でそれより上)

   A=B : (AとBは同じ)

   A≦B : (Aは、Bを含めた状態でそれより下)

   A<B : (Aは、Bを含まない状態でそれより下)

   

という判定になります。プログラミング言語では 【 比較演算子 】 になりますが、

 

 

のようになります。これについては、

 

 ■ 判断と動きに使う処理(if文と比較演算子) 【 Python 3.9 】

 

で触れていますが、制御をする時の判定では必ず必要になりますが、  【 等式・不等式 】 については、 【 条件分岐 】 で使用します。

 

 その為、 【 判断を行う上で必要な知識 】 になります。

 

小学校だと、

 

   8 > 5

   4 < 3

 

のような形で登場しますが、中学校の数学では、文章題を不等式にするような物が登場するので、

 

のような物が出てきます。(1)は、A+Bが5よりも小さくなるので、

 

   (1) A + B < 500

 

になります。そして、(2)は、二つの物を買っているので、これは足し算なので、 A + B になり、500円でおつりがくるという事は、500未満という事ですから、

 

   (2) A + B < 500

 

となります。当然、これだと 【 単価 】 が抜け落ちているので、商品の購入金額は、

 

   購入金額 = 単価 × 個数

 

ですから、問題の作りとしては、


 

という形で出てくるのが自然な形になります。この条件で考えると、

 

   鉛筆 : 50円がA本 = 50×A = 50A

   定規 : 100円がB個 = 100×B = 100B

  

になります。そして、500円でおつりがくるという事は、価格は500円よりも下という事になりますから、 【 未満 】 と言う条件になります。その為、

 

  (2) 50A+100B > 500

 

となります。この条件では、式と解での不等式になっていますが、中学校の数学だと 【 比較 】 もこのような形で登場します。

 

 等式不等式は、 【 範囲 】 を指定する物になりますが、この条件式は、 【 数直線上の範囲 】 になります。

 

 そして、小学校の時の数値の大小の判定は、二つの物の比較であり、これは、等式不等式も同じです。

 

 その為、この処理は、 【 パスフィルター 】 の挙動になります。

 

 

 スフィルター                    

 

 比較演算子の場合、パスフィルターとしての判定と同じなので、ミキサーでも同じ事ができます。例えば、

 

 

のように任意の波があったとして、この周波数成分と調整する場合にミキサーを開きます。何もしていない状態だと、

 

 

のようになりますが、

 

 

のような状態にすると、特定よりも高い周波数成分だけが抽出できます。この状態は、

 

   ローカット : 特定以下の周波数をカットしている

   ハイパス : 特定以上の周波数を通してている

 

と言いますが、【 特定よりも上の数値が対象 】 なので、≧や>の記号で示される物になります。この逆に、

 

 

のように高い周波数成分を切った状態にすると、低い周波数成分だけ抽出出来るのですが、これを、

 

   ハイカット : 特定以上の周波数をカットしている

   ローパス  : 特定以したの周波数を通してている

 

と呼びます。これは、特定よりも下の数値が対象なので、≦や<のような条件が該当します。

 

 このように条件抽出では比較演算子を使いますが、これをミキサーで行うと特定の数値よりも向こう側の調整を全て行う必要が出てきます。

 

 ただし、 【 以上 】 や 【 以下 】 の判定は数値で行えますから、一つの数値の指定でそれよりも向こう側の周波数がカットになる仕組みの方が使いやすいので、それに対応したフィルターが存在します。

 

 それが、

 

   ハイパスフィルター

   ローパスフィルター

 

になります。これが、 【 等式・不等式 】 で使用している比較演算子による判定で抽出している結果になります。

 

 範囲の場合、 【 OO以上、XX以下 】 のような物がありますが、これは等式・不等式だと、

 

   X > A

   X < B

 

のような二つの条件になります。この場合、

 

   A < X < B

 

のようにまとめる事ができますが、この場合、

 

【 上限と下限の存在する判定 】

 

になります。これは、

 

 

のような条件tの抽出になります。これを使用すると、上下の余計な周波数をカットする時の指定になります。ただし、ハイパスフィルターやローパスフィルターのように、指定地よりも向こう側の数値を全てカットする場合だと、作業をする上では、フィルターで制御したほうが扱いやすくなります。

 

 この上限と下限の二つの場所を指定して 【 範囲 】 を抽出するフィルターも存在しており、こうしたフィルターの事を

 

   バンドパスフィルター

 

と言います。

 

 

 範囲選択                      

 

 音の調整をする場合には周波数(これが音の高さになります。)の成分を調整して音の状態を作る事になりますが、写真の画像の調整にも使用します。ます。

 

 【 レベル補正 】 を用いる場合、白レベルと黒レベルの範囲を指定して調整を行います。

 

 レベル補正を選択すると、

 

 

のようにヒストグラムが出るので、これを調整することで色の状態をコントロールできます。黒レベルとクランプポイントを白レベルの方向にずらすと

 

 

のように色が濃くなります。これは特定の成分をカットしている状態になりますが、白レベルも調整することで、範囲指定を行う事ができます。

 

 

オートコントラスト調整を入れると、

 

 

のようにヒストグラムの状態が変わり、さらに、ここに自動レベル補正を入れると、

 

 

のように色味が変わる物の、ヒストグラムの状態がさらに変わります。最初の状態が

 

 

ですから、結構違いますが、自動レベル補正は色の補正なので、ヒストグラムの範囲も広がりますが色そのものも変わってしまいます。また、グラデーションがある場合色が抜けるので、何にでも適応できるわけではありません。

 

 こうした。ヒストグラムの調整を行う場合にも範囲を指定する事になりますが、これもバンドパスフィルターになります。

 

 

 域                          

 

 前述のように、等式・不等式の概念を使うと、判定が出来るので、二つの条件を合わせるとバンドパスフィルターを作れます。

 

 これまでの条件は、一つの数直線上における範囲選択ですから、一次元の内容になりますが、日常では、条件として、パスフィルターのような特定以上や特定以下などの指定がされている物もあります。

 

 また、バンドパスフィルターでの判定のような物もありますが、これを一次元の数直線ではなく、二つの数直線で構成されるデカルト平面上で使用すると、 【 面の中の範囲 】 を指定できます。

 

 これを数値が解り易いグラフ上で指定するのが、 【 変域 】 になります。

 

 変域は中学校一年生の数学で登場しますが、これについては、

 

 ■ 数式とグラフ 【 EDUCATION 】

 

でも触れていますが、変域の構造は、

 

【 2つのバンドパスフィルターで構成された構造物 】

 

になります。バンドパスフィルターはマイクラでも作れるのですが、

 

 

のようにレッドストーン比較器で検知した信号を出して、信号強度の任意の位置で信号を分岐させることで、信号強度の範囲の情報を得る事ができます。つまり、 【 距離 = 数値 】 として扱えるので、距離を取得して判定を行う事で、 【 以上 】 の判定を行う事ができます。これをNOT回路(論理否定)で判定することで、 【 未満 】 の条件が作れるので、

 

   【 以上 】 且つ、 【 未満 】

 

と言う条件を作る事で、

 

   単一の数値の取得

   数値の範囲の指定

 

ができます。この回路では、

 

   【 以上 】 と 【 未満 】 を 【 AND 】 で繋ぐ

 

ことで、バンドパスフィルターとして機能させています。この信号を、

 

 

のように額縁で信号を送ると、8段階の信号が出るので、

 

 

のように以上だけの判定だと未満の判定に信号が届いていないのでAND回路の信号が出るので信号が出て、未満の判定が入ると、AND回路の信号が途切れるので切れるようになります。

 

 

これが、一次元の数直線上で運用しているバンドパスフィルターの挙動になりますが、 【 変域 】 は、

 

   二つのバンドパスフィルターをANDで繋いだもの

 

になります。その為、

 

 

のような構造にすると、変域の判定をしていることになります。変域なん以外だと画像のように切れますが、範囲内だと、

 

 

のように二つのバンドパスフィルターの数値の範囲内なので信号が出ます。

 

 その為、変域の場合、

 

   X軸のバンドパスフィルターでの判定

   Y軸のバンドパスフィルターでの判定

 

を行い、その二者の判定で条件を満たすものが変域なので、上記のようにバンドパスフィルターをAND(論理積)で繋いだものになります。

 

 論理演算は、ペン図で判定できますが、

 

 

のような感じで、条件Aと条件Bの関係性を示す事になりますが、論理積の場合、共通点を抽出するので、

 

 

のような条件になります。

 

 範囲の使い方については、

 

 ■ グラフと座標

 

でも触れていますが、範囲を選択する場合の条件の構築はプログラミング言語でも 【 変域 】 の指定と同じになります。

 

 

 ラフと関数                      

 

 今回も関数とグラフについて書きますが、

 

 

の三つの数式があった場合、この数式は、

 

   y = 2x

   y = 2x

   y = 9x

 

なので、

 

 

のようになります。つまり、指数があったとしても、変数と係数では意味が異なります。

 

 中学校では、

 

 

のような分数の関数が出てきますが、この分数の課数も指数を付けてみると、

 

 

 

のように線対象のグラフになります。ちなみに、これを三乗にすると

 

 

のようなグラフになります。(分数なので、X=0にはなりませんが、小さな数値でもかなり接近するグラフになります。)

 

 平方根だと、

 

 

のようになりますが、分母に持って来ると、Y軸に極単に酔ったグラフになります。また、平方根なので、正の数のみのグラフになります。

 

 

その為、

 

 

のようなグラフを並べると、

 

 

のようにX軸とY軸に近づく特性のある整数の推移のみの分数の関数のグラフのようなラインを取得できます。

 

 ちなみに、中学校で出てくる物をを組み合わせて加算すると、

 

 

のようなグラフになりますが、

 

   平方根

   二乗

   分数

 

の三つを組み合わせると、

 

 

のようなグラフになります。これを二乗根ではなく、三乗根にすると、

 

 

のようなグラフになります。更に床関数を加えると、

 

 

のような式にすると、

 

 

のようなグラフになり、部分的に抽出すると、

 

 

のような形状が生成されます。つまり、

 

   ー1 ≦ X ≧ 1

   0 ≦ Y ≧ 3

 

のように変域を指定すると、このパターンを取得する事ができます。

 

 数式はXの変化を数式で組み合わせると面白いように変化するので、

 

 

のような式を書くと、

 

 

のように数値が小さいときには数が暴れて、特定以降は平方根のグラフに近くなるような物も作ることができます。床関数を使っているので、

 

 

のようになっています。