先日は、
にて単位円に三角関数を加算してみました。単位円は、三角関数で登場する円になりますが、これは、三角比の仕様を
のように4つの象限で使用する為に使用する半径1の円になります。これを使用する事で弧度法で角度を指定できるようになりますが、単位円もグラフなので、関数で系以降を追加すると形が変わります。この特性については、中学校1年生の数学の一次関数でも登場しているのですが、一次関数では、
■ 正のグラフ
■ 負のグラフ
が存在しますが、初期値が決まている場合、y切片が追加されます。この初期値は、一次関数に対して定数ノグラフを追加した仕様になっているので、
■ 定数のグラフ
のような直線のグラフの数値を一次関数に加算した状態になります。その為、
■ 原点を通るグラフ
のようにy=ax+bの式でb=0の条件の場合、画像のようになりますが、
■ 初期値が正の値
■ 初期値が負の値
のように変数bの値でグラフの状態が変わります。これは負のグラフでも同様に
■ 初期値が正の値
■ 初期値が負の値
のようになりますが、初期値が指定されている場合、
■ 初期値があるグラフ
のように座標軸とグラフの間に交点が出来ます。この交点の事を切片と呼び、それぞれを
■ y切片 : y軸とグラフの交点
■ x切片 : x軸とグラフの交点
と呼びます。
■ 切片
このように一次関数の構造として、
■ 原点を通る一次関数のグラフ
■ 定数のグラフ
を加算した構造の物を扱いますが、この時に追加する物を定数項ではなく、法則性を持って推移をする関数を追加する事が出来ます。単位円は、
■ 単位円
になりますが、
■ 単位円+sin(x)
■ 単位円+cos(x)
のようになります。この時に、
三角関数の係数 < 半径で使用する値の係数
と言う条件で数値を大きくすると、
のような変化が発生し、数値を巨大にすると、
のような形にする事が出来ます。先日は、一次関数は小学校で学習する
■ 数列
■ 比例
の拡張と書きましたが、等差数列を使う場合、法則性を示すものとしして 【 一般項 】 を使いますが、これが、関数の数式と同じような物になります。実際に、等差数列の構造を
■ 等差数列の一般項
■ 一次関数の式
で比較してみると変数の表記が異なるだけでなので、
のように2ずつ増える法則性に1を加算した場合、等差数列の初稿は3になるので、3,5,7,9,11...のように変化します。この時の変化は
■ 一般項 : 2n+1
■ 関 数 : 2x+1
となります。法則性が同じなので当然御結果ですが、等差数列や等比数列(等比数列は、指数関数のグラフと同じ結果になります。)の一般項は、同じ法則性の関数と同じ式の形になります。
数学のカリキュラムで登場するのは 【 部品 】 なので、部品を使って演算を行う事もできますが、先日も書きましたが、
■ 等 式 : 定数なので座標になる
■ 不等式 : 範囲なので、線分になる
と言う特性があります。これを多次元化すると層が増えるので、二次元にすると、先程の状態に層が追加されるので、
■ 二次元での変化
■ 等 式 : 座標なので線分になる
■ 不等式 : 線分なので面になる
のようになります。
不 等式
小学校でも不等号を使った範囲指定合登場しますが、これを一次元で指定する場合、数直線上の範囲になりますから、
■ 始点の座標
■ 終点の座標
■ 座標かの距離
と言う三つが存在するのですが、一つの不等号で指定できるのは、パスフィルターなので、
■ ハイパスフィルター : 始点~∞
■ ローパスフィルター : -∞~終点の座標
と言う構造になりますが、上限と下限を指定した状態の物はバンドパスフィルターになるので、
■ バンドパスフィルター : 始点 ~ 終点
のようになります。物体の長さを0から見た時の位置として考えた場合、最大値を取得すればいいので、この場合は等式で示す事が出来ますが、長さを 【 0から最大値までの集合 】 として考えると、 【 範囲 】 の指定をする事になりますから、この場合、座標ではなく一次元だと線分としての構造が中SY通出来る事になります。その為、空間内に範囲指定をする際には不等号を使う事になります。
座標の点なので、これが連続すると線画できるので
■ 等式で構築されたグラフ
になり、存在する自由度は移動のみですから、
■ プラス方向への移動
■ マイナス方向への移動
のようになりますが、範囲を指定すると、
■ 不等式のグラフ
のようになりますが、この範囲の上限と下限を移動させることが出来るので、
■ 上限の移動
■ 下限の移動
のように上限と下限の値を変更する事が出来るので範囲の変更が出来るのですが、上限と下限に同じ値を追加すると範囲自体を移動させることが出来るので、
■ プラス方向への移動
■ マイナス方向への移動
のような変化を加える事が出来ます。これが、単一の座標と複数の座標で制御できる変化になります。これは、一次元での変化なので、多次元になると、追加した座標軸に対しても同じような変化を追加する事が出来ます。
■ 等号と不等号
等式と不等式を作る際には、等号と不等号を使うK十になりますが、この記号は 【 判定用の物 】 なので、対象の状態を比較する為に使用します。その為、比較演算子としてプログラミング言語では使用さえれますが、判定用の部品なので、自由に対象物を指定する事が出来ます。等式の場合、
■ 等式(右辺と左辺が一致する判定)
■ 数 値 = 数 値(*)
■ 数 式 = 数 式
(*)変数や定数など
と言う判定を行う事が出来ますが、不等式の場合も同様の構造にできるので、
■ 定数
■ 変数
■ 数式
を使用する事が出来ます。この時に等式で関数を使用できるように不等式でも関数を使用できるので不等式でも判定の対象として関数のような恒等式を判定の対象て押して使用するK十が出来ます。中学校の関数では変域が登城しますが、これは
■ x軸方向の変域
■ y軸方向の変域
の共通部を取得した物に案るので
の場所を使用している訳ですが、共通部の実を抽出すると
のようになります。変域を設けると、その部分のデータのみを抽出できますから、この条件で一次関数のデータを取得すると、
のように変域以外は0になります。中学校の数学では、関数の干渉した部分で構成される範囲の面積を出すようなカリキュラムがありますが、これは、 【 連立不等式 】 の基礎部分の学習になりますから、高校のカリキュラムの準備段階の物になります。中学校1年生の一次関数の基礎固めが等差数列と正比例だったように、グラフで構築された面積や体積のカリキュラムは多次元化した空間内のデータの総数を出すための範囲指定の方法になります。
その為、不等式で範囲指定をするとその空間を指定できるのですが、
のような事が出来ます。
等式や不等式は 【 判定を行うための道具 】 なので、法則背は自由に指定できます。これを値の推移として示しているのが関数のグラフなので、
のように色々なグラフを作る事が出来ます。先日も紹介したように関数は加算が出来ますから、
のような事が出来ますが、関数は座標の制御が出来るので、
もできます。関数については、
の中でも触れていますが、係数や変数で状態を変更したり、式の構造を変数ではなく、【 数式 】にすることで状態の変化を入れる事が出来ます。サインカーブは現実世界の波と同じなので、音や流体の波や光の波長と同じ形をしているのですが、この時の波の関数は f(x) = sin(x) になります。中学校だと物理で音の構造として、波形を使って振幅と周期で音が変化する事を学習しますが、高校の数学IIで登場する単位円上の座標の変化をsinで見た時に振幅が出来るのですが、この±1の間で推移する推移をグラフに示すとサインカーブが出来上がります。三角関数はタンジェントのみ少し違った波形になりますが、サインとコサインは、
のようにズレた状態で原点が存在していますが、波の形は同じです。その為、X軸を移動すると、同じ波形のサインカーブとコサインカーブの相互変換を行う事が出来ます。
■ f(x) = sin(x)
■ f(x) = cos(x)
の場合、
のように数値の変化で状態が変わりますが、このように数字の状態で値を指定するのが定数を使った処理になります。関数の場合、変数xに値を打因襲して使用するので、
のような構造になります。この状態で動かすと
のような変化が生じますが、基本的に、三角形の余角の変化で状態が成立しているので、
■ sin(90°-Θ) = cosΘ
■ cos(90°-Θ) = sinΘ
■ tan(90°-Θ) = 1/sinΘ
のような公式があります。三角関数は還元方式に
■ 90°-Θ
■ 90°-Θ
■ 180°-Θ
■ 180°-Θ
■ 360°-Θ
■ 負角
が存在しますから、数学IIの三角関数では覚える事も多いのですが、こうした法則性を使う事で状態から別の情報を取得する子tが出来ます。ちなみに、タンジェントだけグラフの形が異なるのですが、タンジェントは底辺と高さの変化なので
のようにサインをコサインで割った物になります。タンジェント自体が傾きなので、これが成り立つわけですが、この公式の構造を見てもタンジェントがサインやコサインとは異なる状態になるのも自然な流れと言えます。
不等式のlピp字で市は。一次元の構造に層を足しただけ何度絵、基本的な考え方は一次元になります。これをグラフのように二次元にして考える場合、【 数直線上の変化 】 を基準として、これを層を構成する各座標データの変化として追加する事になります。
その為、定数で指定する時と同じように
■ 下限の範囲となるグラフ
■ 上限となるグラフ
を用意する事で、範囲指定をする事が出来ます。変域の場合は定数なので直線で構成されますが、一次関数になると斜線になるので傾きの要素が加わります。これが二次関数だや分数関数だと曲線になりますが、数学の場合、 【 値同士の関係性 】 を示した物なので、小学校1年生の最初に学習する足し算についても
■ 足し算の式
■ 答え
が一致することを示す式として 【 等号 】 が使用されているわけですが、等式不等式はℍ各演算子なので、
■ 状態1
■ 状態2
が存在した時に、その状態が一致するのか大小の関係性があるのかを示す時に等号や不等号を使う事になります。この際に符号等を単体で使用すると特定の範囲から向こう側のっ全ての数値と言う集合を指定できるので、単体で使用しても範囲指定として使用する事が出来ます。この条件を見ると、対象物は状態が使用できるので、定数化する前の状態変化を示した数式だったり、変数の値で解が変化する恒等式も判定の対象て押して詩硫黄する事が出来ます。その為、
■ 下限 : 恒等式(関数)
■ 上限 : 恒等式(関数)
という組み合わせで使用する事が出来ます。数学自体が思考や判定をする為の道具であり、幾何だけで構築されている状態に対して対応したり、予測を立てる為のツール何度絵、個別の知識は判断材料やアルゴリズムを構築する部品にしかすぎません。
その為、
のような範囲指定もできます。基本となるのは、定数同士なので、
になりますが、徐の上限を一次関数にすると、関数の値が上限に指定されるので、
のようになります。定数を下限にして絶対値を上限として使うと、
のようになり、符号の有無の絶対値を使うと、
のようになります。その為、不等式も関数の加算と同じで、状態に対して処理を追加する仕様になっていますから、最初に下限を決めてそこに上限の関数を追加する流れになります。これを関数同士で行うと
のようなグラフを作る事が出来ます。
式 と変数
中学区の数学から変数が登場するので、プログラミング言語を使てT挙動を制御をする際の考え方の基本構造が登場する訳ですが、数学は基本的に部品なので、プログラミングで使う場合には、 【 処理の実装 】 で扱う事になります。
この変数の概念は方程式や関数で実際に使用する事になりますが、変数項は 【 項 】 なので、この構造が、工程表と同じ構造で処理が進んでいく仕組みになっています。
算数の最初に学習する 【 たしざん 】 も状態に対して処理を追加する構造なので、製造における工程表のような構造になっていますが、項の場合、この加算の仕組みに対して値が決まった定数項ではなく、代入する数値の自由度が高くなった構造が変数項ですが、項を使うと、 【 演算記号を使った処理 】 を実装できるので、実質的に 【 処理 】 を実装して、その処理を工程順に配置して実行できるようになっています。
直列回路を組んだ場合も+極から-極に向かって電気が流れますから、装置を電気の流れに合わせて順番い並べると、+極側の端にある装置から動作して、最終的に負極側の端にある解度が動くことになります。回路の場合、
■ 正極(+) : アノード
■ 負極(-) : カソード
と呼びますが、直列回路もアノードからカソードに向かって電気が流れるので、簡単な閉回路の場合だと加算と同じ考え方になります。
プログラミング言語では工程表のように処理をする物を逐次処理と言いますが、これも処理の順番通りに行う仕組みになって要るので小分けにした時の構造はこの形になります。
プログラミング言語で逐次処理をするように手続き型の記述でコードを書くと、単純な足し算のプログラムでも
A=1
B=1
C=A+B
print(C)
のようになります。これは、Pythonで実行できますが、
A=1
B=1
で、変数を用意して定数を代入します。これで、変数A,Bにそれぞれ1が代入されます。
次に、変数Cに数式を代入する事で数式の階を代入する事が出来ます。ここまでが計算の部分です。
そして、これを表示する為のprint()関数を使うので、変数Cを引数として使う事で計算結果を表示する事が出来ます。
これを見ると、
■ 値の設定
■ 計算
■ 表示
と言う流れになっていますが、内部処理については、
■ 状態の指定(初期値の指定)
■ 処理
と言う流れになっています。変数の宣言と計算結果を変数に格納うすると、主記憶装置のメモリー内にデータが記録されますが、この表示を行う為に任意の方法を使う事になります。
このデータを参照して表示する場合、コンソールだとprint()関数を使う事になりますが、処理の流れを見ると上から順番い実行されています。こうした流れが逐次処理になりますが、基本構造としてはこうした工程表のような流れになるので、この処理の中にどう言った物が入るのかで構造が変わってきます。
歯車を使った機械であっても処理の基本的な考え方は同じなので、基本となるのは逐次処理で、ここに、複数回同じことを繰り返す場合には反復処理を追加する事になります。反復処理は乗算と同じなので、【 0に対して同じ数を何度足すのか? 】 を数字で示した物が乗算になります。その為、算数だと乗算の構造が回数指定型のループ処理になります。
プログラミング言語では、判断をするのはコンピューターなので方法だけではなく、 【 実装方法 】 も必要になるので、義務教育では登場しない 【 条件分岐 】 の概念が登場しますが、判定方法自体は存在するので、その方法をプログラミング言語で使用する為の記述を使って実装する事になります。
■ 処理の実装
処理の基本的な考え方ですが、算数で登場した菅さんの最小単位と同じで2つの項を使って表記した物になります。数値と計算については、二値で考えて
■ 0
■ 1
と言う 【 有無と言う状態変化 】 を規準に存在する1と言う単位を 【 単数 】 として使用して、 【 集合 】 に対応する為に、管理した錐状体を作ります。これが、一般的に使用されている十進法を使った0~9までの数値を1桁に格納できる仕様になります。日常で使うのは、【 存在する物 】 なので、便宜上、10区切りの物が使用されていますが、10を規準に考えると、
■ 10-1 : 9(桁で使用できるの最大値)
■ 10+1 : 1(存在する状態の最小値)
になるので、1~10を使った処理をします。日常で考えると、1の桁が0になっていて繰り上がった数値までは1つの構造として缶気た方が扱いやすいので、それに対応する為の計算をする事になりますが、コンピューターで使用する場合には、n進数なので、桁の格納できる値で考える事になります。
個数で考えると、10個が1セットで考えると、桁の変化をイメージしやすいので、【 シフト 】 の概念で考えると扱いやすいので、桁の理解の拡張も含めた学習の基礎固めで1~10と言う集合を使いますが、この考え方で数値を理解すると、中学校の数学で登場する累乗の 【 10の累乗 】 がそのまま当てはまる事が解ります。累乗は指数が0の時(0乗の場合)には、常に1になる特性があるので、1乗になった時にn進数のnの値が登場します。その為、100と言う数値も
■ 1 : 10の2乗
■ 0 : 10の1乗
■ 0 : 10の0乗
という構造になっています。この構造を使って、計算を簡素に行う方法が小画工で登場する筆算になりますが、桁同士の計算をして繰り上がりと繰り下がりを単一の桁同士で行う事で複数の桁の計算も行いやすくなりますが、このように桁を分けるk十が出来る事を知っていると、筆算の構造も少し見え方が変わってくると思います。
日常で使用する十進数を使用する場合、こうした構造の物を使う事になりますが、この構造を
■ 有 無 : ブール値
■ 数値の階調 : データの状態
として考えると、判定を考えやすくなります。この条件で判定をすると、論理演算で使用する二値の情報がない場合、数値は発生しないという状態になりますから、【 0の抽出 】 を行う事が出来ます。
つまり、1にならないと数字が発生しないという判定なので、この後に、回著の判定を入れる事で数値を作る事が出来ます。
こうした数値の構造も、ベクトルで考えると、
■ 原点0からの距離
になりますから、数値の発生自体が 【 0+数値 】 と言う指定で発生している事が解ります。
こうした、 【 数値の作り 】 を算数や数学で紐解いていく事になりますが、小学校の算数でも数値は1と言う基本となる数が集まった物と学習しますが、1の集合なので、これは、乗算処理(かけざん)で対応できることを学習します。これが1の段ですが、元の数の個数を増やした状態での変化も含めて学習するのが九九になりますが、この構造を複雑にして使用できるようにした物が
■ 等差数列
■ 正比例
になります。この数値の実装と言う状態もベクトルで見ると
■ 0と言う何もない状態
■ 追加する数値
の2点で成立していますから、これを幾何から代数に変換すると数値とは、【 0 + その数 】 で成立している事になります。
計算を行う際に式を構築しますが、前述のように最小単位は2つの項を用いた物になります。小学校の算数では定数項を用いて数式を作る事になりますが、算数の最初に登場する足し算でも
【 最初の数 】 + 【 追加する数 】
と言う構造なので、
【 状態 】 + 【 変化 】
と言う形になっています。この構造をイメージする場合幾何ベクトルにしたほうが解りやすいので、物の長さで置き換えるとイメージしやすいのですが、状態は0からの距離と言う初期値になるので原点から伸びているベクトルで、追加する物はその先端から伸びている任意の長さのベクトルと言う事になります。この場合、二者のベクトルの原点が異なるので、グラフィックの座標で考えると、
■ 最初の数字 : グローバル座標
■ 追加する数字 : ローカル座標
が基準になっていることとが解ります。数値の基本は集合で、最初に学習するのは整数座標なので、これに該当するのが物体の集合なので、数値の理解をする時には個数の変化と名称の紐づけて数値の変化を覚える事になりますが、この時に代数で表記する時の方法としてアラビア数字との関連付けも行います。
この構造を数直線上でのベクトルとして扱うと一次元の変域と言う不等式で指定した範囲になりますから1+1の足し算も
野よな初期値に
のような値を追加する事になるので、
のようになります。そして、合わせた数を得るわけですから、
のように1+1ではなく2になります。この時の座標が、
■ 0が原点
■ 初期値が原点
のような違いがあrますから、初期値は、必ず原点からの距離になり、追加する値はその初期値の値が原点になるという特性があります。これが、数式を代数の状態から幾何に変換した時の状態変化になります。
度の数式においても基本構造として2つの変数を使った物になりますが、この構造が、全て上記のような状態に変化を適応した状態で成立するので、基本構造を学習する際には2つの変数の状態変化で対応する事になります。
これを基準胃考えると、1+2+3の式も
■ 0+1=1
■ 1+2=3
■ 3+3=6
のような処理の流れになっているので、基本構造は、状態に変化を追加するという流れになっています。
こうした2つの要素の合成を規準に考えるのが演算の気泡んですが、動画やCGの製作で使用するノードの考え方もこの構造なので、状態に変化を加えるという処理を何重に書けるのかを指定していくような考え方になります。その為、2つの項を使った数式の階を出して、その結果を参照して更に変化を追加する事で処理を行うような構造になっています。
グラフィックツールのレイヤーの考え方も二次元配列のピクセルを二層の配列で比較して結果を算出して、その結果に対して新規レイヤーの値で演算を行うような構造なので、基本となる処理の仕組みは二つの項の計算結果とその参照で成立しています。
■ 処理とブロック
これが、【 加算の構造 】 になりますが、四則演算には、
■ 乗算 : 加算のループ処理
■ 除算 : 減算のループ処理
のような物もあるので、項の形にすればこの問題も解消しますが、式の中にこうした演算記号が混ざる場合、構造を優先して処理をする必要があります。
例えば、1+2×3-4÷5 のような式があった場合、乗除算の処理をループとして考えて構造を再構築すると、項の形で考えるkとになるので、【 A+BC+(-D/E) 】 という形に置き換える事が出来ます。
その為、 1+(2×3)-(4÷5) という形の式に変換して処理をする事になります。その為、演算の順序として乗除算は先に行う事になりますが、このように状宇除算は加算とはⅮ区立した状態で処理が存在しています。プログラミング言語を使った場合も、【 反復処理をした後に次の処理に流れる 】と言う構造を作りますが、この時にもループの場所は逐次処理とは異なる独立したブロックを用意する事になります。
Scratchでもループと条件分岐は処理を格納できるブロックを使用しますが、殆どのプログラミング言語で、この2つは逐次処理とは独立したブロックで記述する事になります。
Pythonの場合、
while 条件式 :
条件1
条件1
条件1
:
のような感じでwhileやforのようなループの指定は通常の記述とは異なりインデントが入ります。別の弦冨居だと、{}に囲まれているので、ブロックが明確に分かれているのですが、乗除算のように単一の処理で逐次処理ではなくなるような構造の場合、こう言った独立したブロックで処理を固める事になります。
これは、項の形にするとごく当たり前に存在する物になりますが、中学校の数学では、()で囲んだ状態の含まれた数式も登場しますが、16+32の場合、素数ではないので、約数を導き出せば何の倍数の中解るので、その倍数を外に出と、元の数値を1ロットとして考えて幾つあるのかを判断できます。この事例では、16の倍数のなので、16(1+2)のようにできます。こうした処理を因数分解を使う事で導き出す事が出来るのですが、16+32を変数で制御しようと思った場合、先程の16を外に出した構造だと
A=16
B=1
C=B+1
D=A*B+A*C
とすることで、処理が出来ます。また、この状態も+1で増える数の変化なので、ループを使う事で、この数を増やして加算する事もできます。数値の構造の二法則性がる場合、こう言った処理が出来ますが、通常は総数を作る時の数の取り扱いをする場合や状態の解析をする際に因数分解を使用します。
高校の数学では因数分解が出来る事がっ前提でカリキュラムが組まれていますが、プログラミングで使用するn進数の変換についても素因数分解を使う事になります。
Javascriptの場合だと、
let a = 0
console.log(++a);
のようにすると1になるので、これをループにすると1ずつ増えるのですが、Pythonではインクリメントとデクリメントは未実装なので、3.8以降だと、【 代入式 】 が使えるので、
a = 0
print((a:=a+1))
のようにすると、aにa+1を代入する事が出来るので、インクリメントのような処理が出来ます。
処理を行う場合、数式と同じ考え方が出来るのですが、四則演算の構造を十進数ベースではなく、機械制御の二進数ベースで考えると、
■ 加算 : 加算器の処理
■ 減算 : 補数の加算処理
■ 乗算 : 加算のループ処理
■ 除算 : 減算のループ処理
なので、
■ 逐次処理 : 加減算
■ ループ処理 : 乗除算
で分ける事が出来ます。コードで処理をする場合も、前者はそのまま工程表のように準場に処理をしますが、ループ処理はその場所でループを行ってループの終了後でなければ次の処理に進むことはできません。その為、ループは 【 処理の塊 】 として扱われるのでブロック単位で管理する事になります。先程の式の
()で囲まれた場所も処理の塊になりますから、乗除算もループと同様に処理の塊として考える事になります。これが数学で定数項でのあℍなしになりますが、変数項を使う場合には、乗除算も項に付加さえるので、項自体がループ処理と反転処理を含めた一つのアルゴリズムと考える事が出来るわけです。
Pythonのループについては、
の中でも触れていますが、ループを使うと同じ奇術を連続して書かずに済むので、数式上で登場する
■ 乗算 : 加算のループ処理
■ 累乗 : 乗算のループ処理
のように扱う事が出来ます。ちなみにループの場合、
■ 無限ループ : while
■ 回数指定ループ : for
のように使い分ける事になります。