Unityと数学の学習帳

Unityと数学の同時学習を目的としたブログ

論理と証明の基本

論理の道具箱

偶数、奇数の四則演算の特徴

偶数×奇数=偶数
偶数×偶数=偶数
奇数×奇数=奇数

偶数+奇数=奇数
偶数+偶数=偶数
奇数+奇数=偶数

偶数×偶数=偶数の証明

偶数:\left\{ \forall n\in \mathbb{Z}|2n \right\}
奇数:\left\{ \forall n\in \mathbb{Z}|2n-1 \right\}

命題:\exists  n\in \mathbb{Z},m={ \left( 2n \right)  }^{ 2 }\Rightarrow m=2n
この真偽を判断する。左辺を変形して整数部分を見つける
m=\left\{ \forall l\in 2{ n }^{ 2 }\in \mathbb{Z}|2l \right\} \quad \Rightarrow \quad m=\left\{ \forall n\in \mathbb{Z}|2n \right\}
集合として結論付ける
\therefore true,\quad { \left( 2n \right)  }^{ 2 }\subset 2n

ド・モルガンの法則

\overline { A\cap B } =\overline { A } \cup \overline { B } \\ \overline { A\cup B } =\overline { A } \cap \overline { B }

A={ \left\{ 6の倍数 \right\}  }=\left\{ 6z|z\in { Z } \right\} =\left\{ { 6,12,18,24,30,36,42,48,54,60,66,72,78,84,\cdots  } \right\}
B={ \left\{ 8の倍数 \right\}  }=\left\{ 8z|z\in { Z } \right\} =\left\{ { { 8,16,24,32,40,48,56,64,72,80,88,96,104,112, }\cdots  } \right\}
A\cap B=AかつB。AとBの積集合(intersection)=\left\{ 6と8の最小公倍数(LCM)の倍数 \right\} =\left\{ 24の倍数 \right\} =\left\{ 24z|z\in { Z } \right\} =\left\{ 24,48,72,\cdots  \right\}
A\cup B=少なくともAまたはB。AとBの和集合(union)=\left\{ 6または8の倍数 \right\} =\left\{ 6,8,12,16,18,24,30,32,36,40,42,\cdots  \right\}
\overline { A } ={ \left\{ 6の倍数の否定 \right\}  }=\left\{ \neg 6z|z\in { Z } \right\} =\left\{ 1,2,3,4,5,7,8,9,10,11,13,14,15,16,17,19,20,21,22,23,25,26,27,28,29,31,32{ ,\cdots  } \right\}
\overline { B } ={ \left\{ 8の倍数の否定 \right\}  }=\left\{ \neg 8z|z\in { Z } \right\} =\left\{ 1,2,3,4,5,6,7,9,10,11,12,13,14,15,17,18,19,20,21,22,23,25,26,27,28,29,30,31,33{ ,\cdots  } \right\}
\overline { A\cap B } =\overline { A } \cup \overline { B } =ド\cdot モルガンの法則より、AとBの積集合の否定=集合Aの否定と集合Bの否定の和集合
\overline { A\cap B } =\overline { A } \cup \overline { B } =\left\{ 24の倍数の否定 \right\} =\left\{ \neg 24z|z\in { Z } \right\} =\left\{ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,29,30,\cdots  \right\}
\overline { A\cup B } =\overline { A } \cap \overline { B } =ド\cdot モルガンの法則より、AとBの和集合の否定=集合Aの否定と集合Bの否定の積集合
\overline { A\cup B } =\overline { A } \cap \overline { B } =\left\{ 6または8の倍数の否定 \right\} =\left\{ 1,2,3,4,5,7,9,10,11,13,14,15,17,19,20,21,22,23,25,26,27,28,29,31,33{ ,\cdots  } \right\}

論理

基本的に論理は集合を扱っている。左辺と右辺、それぞれの集合の大小と包含関係を掴み真偽(true、false)を判定する事が目的となる

p\left( x \right) \Longrightarrow q\left( x \right)

命題(proposition)と呼ばれる、これは意味的に提案(propose)に近い。この提案に対して真偽を判定する
p\left( x \right) ならば q\left( x \right) 。この場合、p\left( x \right) を仮定、q\left( x \right) は結論となる
p\left( x \right) q\left( x \right) 十分条件q\left( x \right) p\left( x \right) の必要条件となる

この命題が必要十分条件で真である場合、集合の包含関係で表すと

\left\{ x|p\left( x \right)  \right\} \subset \left\{ x|q\left( x \right)  \right\}  

\subset」はサブセットと読む。意味は集合\left\{ x|p\left( x \right)  \right\}は集合\left\{ x|q\left( x \right)  \right\} に含まれるとなる
必要十分条件を満たした状態で、仮定は結論の集合に含まれる形になる)
ちなみに両方の集合が同じ大きさ、同じ要素の内容である場合「同値」(数学記号「\Leftrightarrow 」)となる

f:id:cqbosinko:20171003180528p:plain

論理の使用

参考資料:


xかつyが6の倍数でないならば、積xyは6の倍数でない。これを論理記号で表現すると
\overline { x\cap y } =\left\{ \neg 6z|z\in { Z } \right\} \quad \Longrightarrow \quad \overline { xy } =\left\{ \neg 6z|z\in { Z } \right\}

p\cap q は「pかつq(intersection:共通部分)」、\capはキャップと読む。上線の \overline { ~ } \neg は否定(not、negative)を意味する
\Longrightarrow は「ならば(包含)」を表し、左辺を仮定、右辺を結論と意味づける。 \mathbb{Z}は数学記号で整数を表す
 \in 」はインと読み左辺が右辺の要素であることを意味する。ここではzは任意の整数の一要素であることを表している

この仮定から導かれる結論の真偽を考えてみる。その論理が偽(false)である場合、その反例をひとつあげれば証明は完了する
この場合、x=2,y=3と仮定すればxy=6となり結論が合わない事が証明される。この命題は偽である

論理的に考える対象の集合の関係を知りたい場合、「逆」、「裏」、「対偶」を考える事が必要となる(対偶:ついになって向かい合うもの)

逆の命題。積xyは6の倍数でないならば、xかつyが6の倍数でない。
\overline { xy } =\left\{ \neg 6z|z\in Z \right\} \quad \Longrightarrow \quad \overline { x\cap y } =\left\{ \neg 6z|z\in Z \right\}

裏の命題。xかつyが6の倍数ならば積xyは6の倍数。
x\cap y=\left\{ 6z|z\in { Z } \right\} \quad \Longrightarrow \quad xy=\left\{ 6z|z\in { Z } \right\}

対偶の命題。積xyは6の倍数ならばxかつyが6の倍数。
xy=\left\{ 6z|z\in { Z } \right\} \quad \Longrightarrow \quad x\cap y=\left\{ 6z|z\in { Z } \right\}

この場合の「逆の命題」は証明が非常に難しいが、一般に対偶はもとの命題と真偽が一致することを利用すれば「逆の命題の対偶に該当する裏の命題の証明」を使って証明が可能となる

対偶

抜粋:ベストとベターの違い

出来ない事を証明するのは実は凄く難しく、出来る事を証明する何倍も何十倍も労力がかかります。
なぜなら出来る事を証明するのは、ひったひとつの方法を示せばいいのですが、出来ない事を証明するにはあるゆる可能性を全て否定しなければなりません。

重要:対偶を利用する意味はここにある。命題の意味を反転させれば証明はひとつに絞られる

隠れた命題

6の倍数は2の倍数かつ3の倍数である。この命題は必要十分である。
このように一見、無関係に見えながら同値である命題を見つける事こそが重要だとも言える
(本質的に素数因数分解の重要性がここに隠れている)

x=\left\{ 6z|z\in \mathbb{Z} \right\} \quad \Leftrightarrow \quad x=\left\{ 2z\cap 3z|z\in \mathbb{Z} \right\}

この命題の否定は

6の倍数以外は、少なくとも2の倍数以外もしくは3の倍数以外である。

x=\left\{ \neg 6z|z\in \mathbb{Z} \right\} \quad \Leftrightarrow \quad x=\left\{ \neg 2z\cup \neg 3z|z\in \mathbb{Z} \right\}

確認

\neg 2z=\left\{ 1,3,5,7,9,11,13,\cdots  \right\} \\ \neg 3z=\left\{ 1,2,4,5,7,8,,10,11,13,\cdots  \right\} \\ \neg 2z\cup \neg 3z=\left\{ 1,2,3,4,5,7,8,9,10,11,13,\cdots  \right\}

証明の道具箱

  • 不等式 p\ge q を証明するには p-q\ge 0 を示す
  • ある 変数やある関数が同値であるかどうかを判定する場合、方法には二つある。係数比較法もしくは数値代入法
  • \equiv 」 恒等性 恒等式で利用されることが多い
  • =」 相等性 方程式で利用されることが多い
  • 冪等性 ある操作を一回行っても複数回行っても結果が同じ。例:0\times 0\times 0\times 0\times 0\times 0=0\quad ,\quad 1\times 1\times 1\times 1=1 等

素因数分解の一意性

全ての正の整数は素数の積として一意に表せる

\begin{matrix} 1=1 & 5=1\times 5 & 9=3^{ 2 } \\ 2=1\times 2 & 6=2\times 3 & 10=2\times 5 \\ 3=1\times 3 & 7=1\times 7 & 11=1\times 11 \\ 4={ 2 }^{ 2 } & 8=2^{ 3 } & 12={ 2 }^{ 2 }\times 3 \end{matrix}

幾何と代数

幾何的に二つに分けられないものも代数的には二つに因数分解できる場合などがある
まっぷたつに六角形を三角形二つに分けろと言われた場合、代数的に二項式に素因数分解すればよい

f:id:cqbosinko:20171226165504p:plain

{ x }^{ 6 }-1=\left( { x }^{ 3 }+1 \right) \left( { x }^{ 3 }-1 \right)

ここで重要な考えとは、「幾何的には分解できなくても代数的に複素平面でカタチを分解できたという事」。集合として数式で表すと

{ a }_{ n }=\left\{ x|{ x }^{ 3 }+1 \right\} =\left\{ -1,\frac { 1-\sqrt { 3 } i }{ 2 } ,\frac { 1+\sqrt { 3 } i }{ 2 }  \right\} \\ b_{ n }=\left\{ x|{ x }^{ 3 }-1 \right\} =\left\{ 1,\frac { -1-\sqrt { 3 } i }{ 2 } ,\frac { -1+\sqrt { 3 } i }{ 2 }  \right\}

集合を分ける事が出来たという事は分別が付いたという事になる。証明などで別々のものとして扱えることになる

<pocketCasでの検証計算>
f:id:cqbosinko:20171226180655p:plain

素数

  • 1より大きい自然数
  • 正の約数が1と自分自身(既約性)
  • 約数の数が常にふたつ

合成数

\sqrt { 2 }有理数で無い事を証明

\sqrt { 2 } =\frac { p }{ q }

この時p,qは既約分数であるとする。従ってp,qは互いに素、素数同士である。右辺は有理数である。この式の両辺を二乗すると

\sqrt { 2 } =\frac { p }{ q } \quad \Rightarrow \quad 2=\frac { { p }^{ 2 } }{ q^{ 2 } } \quad \Leftrightarrow \quad 2q^{ 2 }={ p }^{ 2 }\quad \Leftrightarrow \quad 2\cdot q\cdot q={ p }\cdot p

両辺は素因数分解で表現された合成数であるが、その構成されている素数の数が既約されているにも関わらず異なる。両辺の素因数の要素と数があっていない。従って偽になる。

素因数分解の一意性を証明

0は無批判の仮定?

そこそも完全に無なるものがあり得るかという疑問がある

1は全ての単位の祖となる

正規化の根底には全てを1に対する比として考えるみたいなものがある?
全ての単位の祖を2と考える事も可能?⇒メルセンヌ素数

広告を非表示にする

PocketCASの各機能について

数学を利用して物事を解析したり調べものをする際などに非常に便利なiOSアプリ「PocketCas」に関して記事を書いてみました。微積分、方程式の解を導く、関数をプロットしてグラフ画像として保存する等が出来ます

pocketcas.com

<英文マニュアル>

マニュアルに書かれていない詳細やちょっとわかりにくい部分を日本語で説明してみました。以下がその内容となっています

式で利用する変数や演算子の扱い

x Plot、3Dplotモードではグラフの独立変数として指定できます。☆x,yを利用したグラフの作成時、グラフの山と谷の部分に頂点が表示されタップすると値が参照できます。これは何気に重要な機能です
y Plot、3Dplotモードではグラフの従属変数として指定できます
t 式に対して「parametric」指定すると定義域を持った独立変数として指定できます。TMin、TMaxにより範囲が指定できます
T アニメーション用。アニメーションで開始値と終了値を指定して線形直線的に遷移させる事ができます
θ 遷移する極座標。例えばcos(θ)で円が描けます
r Plot、3Dplotモードではグラフに対し半径rの円を描くことができます
i 虚数
e 自然対数の底ネイピア数。exp(1)でも同じです
:= 定義。f(x)の形で関数も指定できます。変数名は文字列でも利用可能。日本語による変数名も利用できます。一度代入した値は、そのファイル内で共通の変数値として記憶されます。構文入力時のメニュー上側にある「Variables」から内容が確認、編集できます
, ベクトルをカンマで区切って書いていく事で指定できます。Plotモードでは2次、3Dplotモードでは三次のベクトルを指定するとグラフが描けます。例: cos(t),sin(t)で円弧が描ける等
% モジュロ演算子。法を求めます。例:12%5とすると、2(mod 5)みたいな意味を返してきます
^ 指数演算子
^(-1) 行列に対する演算子として逆関数を指定できます。通常の指数演算では-1乗になります
! 階乗

f:id:cqbosinko:20170721235852p:plain

やや特殊な入力や出力

  • 行列の入力

行列の入力には「InsertMatrix」機能が便利です。入力機器がiPhoneiPadの場合は望みの縦横数の空入力行列を作成して0を書き換えていくと良いでしょう。基本的にベクトル入力時も構文的に扱いは同じで縦に並ぶものがベクトルとなります

  • 従属変数の具体的な値の変化を見たい場合

「Show Value Table」機能が便利です

f:id:cqbosinko:20170722000406p:plain

関数の機能

ちょっと便利な機能としてpocketcasのメソッド部分を選択すると構文のヘルプが表示されます。インフォメーションアイコンをクリックすると詳細なヘルプが表示出来ます
f:id:cqbosinko:20170722000758p:plain

基本的なメソッドの利用

整数、実数、有理数無理数複素数三角関数等の表示について

pocketcasは適時、有理数表示、n乗根表示、もしくはネイピア数による指数表示、三角関数表示を優先するようになっている。例えばn乗根等の無理数有理数を実数として近似で表示したい場合は以下の様に指定する必要がある

≈(√(3))
≈(1/2)
approx(1/2)

f:id:cqbosinko:20170722213253p:plain

「:=」を利用した関数の作成

PocketCas上での関数作成は以下のように行う。関数の名前は文字列であれば何でも構わない。1文字の名前でも可能。関数名に日本語も利用できる

f(x):=4*x^2+5*x+12
f(2)

testmethod(x):=x^2
testmethod(3)

一次関数(a,x,c):=a*x+c
一次関数(2,3,4)

f:id:cqbosinko:20170722212758p:plain

「solve」方程式を解く

方程式を解きます。連立方程式や複数の未知数を指定して解くことができます。例:4x^2+6x+24=64の未知数xを求めたい場合

solve(4*x^2+6*x+24=64,x)

連立方程式の解を求めたい場合。例:\begin{cases} x^{ 2 }+12y=4\\ x+y=2 \end{cases}の未知数xとyを求めたい場合

solve([x^2+12y=4,x+y=2],[x,y])

虚数解を求めたい場合はcsolveメソッドを利用する

csolve(x^2+2,x)

f:id:cqbosinko:20170722212857p:plain

「seq」数列、ベクトルの作成

数列、ベクトルを作成するには以下のような方法がある

例:等差数列、初項2、差3の数列の作成

seq(2+(n-1)*3,n=1..10)

例:等比数列、初項7、比5の数列の作成

seq(7*5^(n-1),n=1..10)

f:id:cqbosinko:20170722212954p:plain

離散的なグラフを描きたい場合、この数列作成をベクトルに転用できる。例えば以下の様な二次元ベクトルの各要素に対して数列を出力すればよい

[[seq(x,x=-10..20)],[seq(x^3+2*x^2+12*x-500,x=-10..20)]]

f:id:cqbosinko:20170722213039p:plain

その他にベクトルの作成にエクセルやスプレッドシート等で作成したデータをpocketcasで利用する方法もある。例えばエクセルやグーグルスプレッドシート等で以下の様なシートを作成しcsv形式で出力する

f:id:cqbosinko:20170722213717p:plain

この出力したcsvを「New Entry」時に「Load CSV data」を利用してpocketcasから読み込んで内部のデーターを適時、抽出し利用する。以下、統計学を利用した例。エクセルやスプレッドシートでも同様の事が比較的シンプルに出来るのですがPocketCasで計算をメインにした解析をする場合、それなりにメリットはあると思います

f:id:cqbosinko:20170722213142p:plain

ここでは日本語の行列データを作成、利用している

分析するデータ:=[row(A,1..10)]
男性の身長:=col(分析するデータ,1)
男性の平均身長:=mean(男性の身長)

f:id:cqbosinko:20170722222517p:plain

データをうまく扱うには行列の向きに注意する必要がある。linear_regressionメソッドはグラフ上に散らばった行列データから回帰直線を求めるメソッドであり、その入力データを正しく処理する為にtrnメソッドで転置して渡している。ベクトル「トレンドライン」に出力としてスロープ(傾き)やインターセプター(切片)が二次ベクトルとして値が収納されるので関数g(x)に一次関数の形で取り出して割り当てている

回帰分析したいデータ:=trn([[seq(a,a=1..10)],男性の身長])
トレンドライン:=linear_regression(回帰分析したいデータ)
g(x):=トレンドライン[0]*x+トレンドライン[1]

f:id:cqbosinko:20170722221717p:plain

以下で回帰直線と、その元となる男性の身長のグラフを表示している

trn(回帰分析したいデータ)
g(x)

f:id:cqbosinko:20170722222302p:plain

「diff」微分方程式を解く

微分は以下の様にすると求められる。pocketcasでは「'」を利用した導関数表記にも対応している。例えばf\left( t \right) =4.9{ t }^{ 2 }+30\quad \longmapsto \quad f'\left( t \right) =9.8tの様な微分f(x)=3x^{ 2 }+5x+25の様な微分は以下の様に計算できる

diff(4.9*t^2+30,t)

f(x):=3*x^2+5*x+25
f'(x)
f'(4)

f:id:cqbosinko:20170722213842p:plain

また複雑な偏微分等の計算も求める事が出来る。この場合はdiffメソッドを利用して偏微分する変数を明確に指定する手法となります

以下、例:(この例ではa,bの二変数持つ関数Lに対して合成関数の微分偏微分を同時に利用して計算しています)
L\left( a,b \right) =\frac { 1 }{ 2 } { \left( y-ax-b \right)  }^{ 2 }\\ \frac { \partial L }{ \partial a } =\frac { 1 }{ 2 } \cdot 2\cdot \left( y-ax-b \right) \cdot -x=a{ x }^{ 2 }+bx-xy\\ \frac { \partial L }{ \partial b } =\frac { 1 }{ 2 } \cdot 2\cdot \left( y-ax-b \right) \cdot -1=a{ x }+b-y

simplify(diff(1/2*(y-a*x-b)^2,a))
simplify(diff(1/2*(y-a*x-b)^2,b))

f:id:cqbosinko:20170726000100p:plain

「simplify」式を整理する

上記でdiffメソッドと同時に利用しているsimplifyメソッドは式を可能な限り整理して見やすい形で出力します

「integrate」積分

積分は以下の様にすると計算できます
以下、例:
\int _{ 0 }^{ 1 }{ n^{ 2 }dn } ={ \left[ \frac { 1 }{ 2+1 } n^{ 2-1 } \right]  }_{ 0 }^{ 1 }=\frac { 1 }{ 3 } \\ \int _{ 0 }^{ 1 }{ \frac { 1 }{ 1+{ x }^{ 2 } } dx }

integrate(n^2,n,0,1)
∫(1/(1+x^2),x,0,1)

f:id:cqbosinko:20170726000132p:plain

「limit」極限を求める

極限計算を利用したい場合は以下の様にします

limit(1/n,n,∞)
limit((x^2-3*x+2)/(x-2),x,2)

f:id:cqbosinko:20170726000225p:plain

「sum」総和

∑(1/n^2-3,n,1,17)
sum(a+(n-1)*d,n,1,10)
sum(5+(n-1)*3,n,1,10)

f:id:cqbosinko:20170726000256p:plain

「nCr」二項定理

nCr(5,3)

f:id:cqbosinko:20170726000326p:plain

「expand」式の展開

expand((x+1)^5)

f:id:cqbosinko:20170726000352p:plain

その他の便利な関数

以下、個人的に調べた範囲で細々とした関数の機能を網羅しています。限定的な機能に特化したものが多いです

最大公約数
gcd(18, 15, 24)
→3

最小公倍数
lcm(18, 15, 24)
→360

素因数分解
ifactor(90)
→ 2*3^2*5
≈ 90.0

因数分解
factor(x^2+6x+8)
→ (x+2) * (x+4)

一番近い有理数を返す
float2rational(1.4142)
→ 7071/5000

連分数を返す
dfc(root(2))
→ [1,2,2,2,2,2,2,2,2,2,2,2,2,2,2]

素数判定
is_prime(7)
→1

一つ前の素数
prevprime(7)
→5

1つ後の素数
nextprime(7)
→11

n番目の素数
ithprime(5)
→11

割り算の商のみを求める(190/12=15)
iquo(190, 12)
→15

割り算の余りのみを求める
irem(190, 12)
→10

割り算の商と余りを出力する
iquorem(190, 12)
→ 15, 10

除数の羅列
idivis(36)
→ [1, 2, 3, 4, 6, 9, 12, 18, 36]

偶数判定
even(16)
→1

奇数判定
odd(15)
→1

べズーの恒等式
48○+30○=18の丸部分を求める
iabcuv(48, 30, 18)
→ 6, −9

三平方の定理 c^2=a^2+b^2 のa,bを求める
pa2b2(17)
→ 4, 1

メモ

48ページまでチェック

中国の剰余定理(要調査)
ichinrem()

最小二乗法の学習忘備録

該当記事のディテールを補足する個人的な忘備録

以下のサイトを参考に最小二乗法の仕組みを学習する
qiita.com

基本戦略

「基本戦略」の部分をグーグルスプレッドシートで確認したものが以下になる

docs.google.com

最小化する

「極大極小の考え方でいうと、a, bそれぞれに対して、微分して0になるところが最小点になります。」の語句の意味をIOSアプリのPocketCasを利用して再確認すると以下になる

例えば二次関数の微分に対して0になる方程式を解くと以下の様に最小点のx=1.5が算出できる
f:id:cqbosinko:20170713003931p:plain

これは他のn次数関数に対しても同様で三次関数の場合、グラフの谷山になるx位置
x=-3.0とx=-1/3が算出できる。つまりグラフの傾きが0になる位置がわかる仕組みを利用する
f:id:cqbosinko:20170713004657p:plain

5次関数で以下のようになる。微分の強力な解析能力が実感できる
f:id:cqbosinko:20170713004901p:plain

この解析能力をaとbの二変数関数である{ \left( y_{ i }-a{ x }_{ i }-b \right)  }^{ 2 }に対して利用する為に偏微分しようという訳である。偏微分はaとbに対して行い他の変数は定数と扱われる。導かれた導関数が0になる連立方程式を解くと最小点の位置を通る一次関数の係数が解るという仕組みになる

実際の計算

あてはめる関数式は直線をあらわす一次関数。これを回帰式と呼ぶ

f\left( x \right) =ax+b

回帰式と実際に集計した値との誤差を求める式が以下になる
y値、x値はN次のベクトル。これらを総和を利用しながら誤差の総和Jの値を導く
aとbは未知数でJの値を最小にしながら、これらの値を求める事が目的となる

J\quad =\quad \frac { 1 }{ 2 } \sum _{ i=1 }^{ N }{ { \left\{ y_{ i }-\left( a{ x }_{ i }+b \right)  \right\}  }^{ 2 } } \quad =\quad \frac { 1 }{ 2 } \sum _{ i=1 }^{ N }{ { \left( y_{ i }-a{ x }_{ i }-b \right)  }^{ 2 } }

シグマの中身は常に二乗されるので値は絶対値、距離、正数となる
従って、この二次関数の微分された関数式は0になる所が最小点に必ずなる(最大値になる可能性は無い。だからこの計算手法は「最小二乗法」と呼ばれる)
関数式の中にaとbの二変数の未知数があるので、それぞれ偏微分して0になる式を導き連立方程式を組む必要がある
偏微分には例題となるブログでは合成関数「\left\{ g\left( f\left( x \right)  \right)  \right\} '=g'\left( f\left( x \right)  \right) \cdot f'\left( x \right)」を利用している

\frac { \partial J }{ \partial a } \quad =\quad \frac { 1 }{ 2 } \sum _{ i=1 }^{ N }{ 2{ \left( y_{ i }-a{ x }_{ i }-b \right)  } } \left( { -x }_{ i } \right) \quad =\quad a\sum _{ i=1 }^{ N }{ { x }_{ i }^{ 2 } } +b\sum _{ i=1 }^{ N }{ { x }_{ i } } -\sum _{ i=1 }^{ N }{ { x }_{ i }y_{ i } } \\ \frac { \partial J }{ \partial b } \quad =\quad \frac { 1 }{ 2 } \sum _{ i=1 }^{ N }{ 2{ \left( y_{ i }-a{ x }_{ i }-b \right)  } } \left( -1 \right) \quad =\quad a\sum _{ i=1 }^{ N }{ { x }_{ i } } +b\sum _{ i=1 }^{ N }{ 1 } -\sum _{ i=1 }^{ N }{ y_{ i } }

最終的な回帰式は行列計算の形になる
これは連立方程式を計算機で解く為で、機械を使って問題を解く適切な形となっている

\begin{cases} a\sum _{ i=1 }^{ N }{ { x }_{ i }^{ 2 } } +b\sum _{ i=1 }^{ N }{ { x }_{ i } } -\sum _{ i=1 }^{ N }{ { x }_{ i }y_{ i } } =0\quad \Leftrightarrow \quad a\sum _{ i=1 }^{ N }{ { x }_{ i }^{ 2 } } +b\sum _{ i=1 }^{ N }{ { x }_{ i } } =\sum _{ i=1 }^{ N }{ { x }_{ i }y_{ i } }  \\ a\sum _{ i=1 }^{ N }{ { x }_{ i } } +b\sum _{ i=1 }^{ N }{ 1 } -\sum _{ i=1 }^{ N }{ y_{ i } } =0\quad \Leftrightarrow \quad a\sum _{ i=1 }^{ N }{ { x }_{ i } } +b\sum _{ i=1 }^{ N }{ 1 } =\sum _{ i=1 }^{ N }{ y_{ i } }  \end{cases}\\ \\ \begin{pmatrix} \sum _{ i=1 }^{ N }{ { x }_{ i }^{ 2 } }  & \sum _{ i=1 }^{ N }{ { x }_{ i } }  \\ \sum _{ i=1 }^{ N }{ { x }_{ i } }  & \sum _{ i=1 }^{ N }{ 1 }  \end{pmatrix}\begin{pmatrix} a \\ b \end{pmatrix}=\begin{pmatrix} \sum _{ i=1 }^{ N }{ { x }_{ i }y_{ i } }  \\ \sum _{ i=1 }^{ N }{ y_{ i } }  \end{pmatrix}\quad \quad \Leftrightarrow \quad \begin{pmatrix} a \\ b \end{pmatrix}={ \begin{pmatrix} \sum _{ i=1 }^{ N }{ { x }_{ i }^{ 2 } }  & \sum _{ i=1 }^{ N }{ { x }_{ i } }  \\ \sum _{ i=1 }^{ N }{ { x }_{ i } }  & \sum _{ i=1 }^{ N }{ 1 }  \end{pmatrix} }^{ -1 }\begin{pmatrix} \sum _{ i=1 }^{ N }{ { x }_{ i }y_{ i } }  \\ \sum _{ i=1 }^{ N }{ y_{ i } }  \end{pmatrix}

この行列式に実測値をあてはめ計算していく

{ x }_{ i }=\left\{ 4,15,30,50 \right\} \\ y_{ i }=\left\{ -17,-4,-7,25 \right\}

a\sum _{ i=1 }^{ N }{ { x }_{ i }^{ 2 } } \quad =\quad a\left( { 4 }^{ 2 }+{ 15 }^{ 2 }+30^{ 2 }+{ 50 }^{ 2 } \right) \quad =\quad 3641a\\ b\sum _{ i=1 }^{ N }{ { x }_{ i } } \quad =\quad b\left( 4+15+30+50 \right) \quad =\quad 99b\\ \sum _{ i=1 }^{ N }{ { x }_{ i }y_{ i } } \quad =\quad 4\times -17+15\times -4+30\times -7+50\times 25\quad =\quad 912\\ a\sum _{ i=1 }^{ N }{ { x }_{ i } } \quad =\quad a\left( 4+15+30+50 \right) \quad =\quad 99a\\ b\sum _{ i=1 }^{ N }{ 1 } \quad =\quad 4b\\ \sum _{ i=1 }^{ N }{ y_{ i } } \quad =\quad -17+-4+-7+25\quad =\quad -3

\begin{pmatrix} a \\ b \end{pmatrix}={ \begin{pmatrix} 3641 & 99 \\ 99 & 4 \end{pmatrix} }^{ -1 }\begin{pmatrix} 912 \\ -3 \end{pmatrix}

pocketcasで計算させると以下になる

f:id:cqbosinko:20170716135453p:plain

逆行列の演算

以下の様な連立一次方程式のモデルがある

3x+6y=12+48=60\\ 5x+7y=20+56=76\\ x=4,y=8

これを行列表現すると以下になる

\begin{pmatrix} 3 & 6 \\ 5 & 7 \end{pmatrix}\begin{pmatrix} 4 \\ 8 \end{pmatrix}=\begin{pmatrix} 3\times 4+6\times 8 \\ 5\times 4+7\times 8 \end{pmatrix}=\begin{pmatrix} 12+48 \\ 20+56 \end{pmatrix}=\begin{pmatrix} 60 \\ 76 \end{pmatrix}

行列の強力さは逆関数を単純な行列演算の不可換な演算で作る事が可能という部分にある

\begin{pmatrix} 3 & 6 \\ 5 & 7 \end{pmatrix}\begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}=\begin{pmatrix} 1 & 2 \\ 5 & 7 \end{pmatrix}\begin{pmatrix} \frac { 1 }{ 3 }  & 0 \\ 0 & 1 \end{pmatrix}=\begin{pmatrix} 1 & 2 \\ 5-1\times 5 & 7-2\times 5 \end{pmatrix}\begin{pmatrix} \frac { 1 }{ 3 }  & 0 \\ -\frac { 1 }{ 3 } \times 5 & 1 \end{pmatrix}=\begin{pmatrix} 1 & 2 \\ 0 & -3 \end{pmatrix}\begin{pmatrix} \frac { 1 }{ 3 }  & 0 \\ -\frac { 5 }{ 3 }  & 1 \end{pmatrix}\\ =\begin{pmatrix} 1 & 2 \\ 0 & -3\times -\frac { 1 }{ 3 }  \end{pmatrix}\begin{pmatrix} \frac { 1 }{ 3 }  & 0 \\ -\frac { 5 }{ 3 } \times -\frac { 1 }{ 3 }  & 1\times -\frac { 1 }{ 3 }  \end{pmatrix}=\begin{pmatrix} 1 & 2 \\ 0 & 1 \end{pmatrix}\begin{pmatrix} \frac { 1 }{ 3 }  & 0 \\ \frac { 5 }{ 9 }  & -\frac { 1 }{ 3 }  \end{pmatrix}=\begin{pmatrix} 1 & 2-2 \\ 0 & 1 \end{pmatrix}\begin{pmatrix} \frac { 1 }{ 3 } -\frac { 10 }{ 9 }  & 0--\frac { 2 }{ 3 }  \\ \frac { 5 }{ 9 }  & -\frac { 1 }{ 3 }  \end{pmatrix}\\ =\begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}\begin{pmatrix} -\frac { 7 }{ 9 }  & \frac { 2 }{ 3 }  \\ \frac { 5 }{ 9 }  & -\frac { 1 }{ 3 }  \end{pmatrix}

作成した逆行列の検算

\begin{pmatrix} -\frac { 7 }{ 9 }  & \frac { 2 }{ 3 }  \\ \frac { 5 }{ 9 }  & -\frac { 1 }{ 3 }  \end{pmatrix}\begin{pmatrix} 60 \\ 76 \end{pmatrix}=\begin{pmatrix} -\frac { 7 }{ 9 } \times 60+\frac { 2 }{ 3 } \times 76 \\ \frac { 5 }{ 9 } \times 60+-\frac { 1 }{ 3 } \times 76 \end{pmatrix}=\begin{pmatrix} -\frac { 420 }{ 9 } +\frac { 152 }{ 3 }  \\ \frac { 300 }{ 9 } -\frac { 76 }{ 3 }  \end{pmatrix}=\begin{pmatrix} \frac { -420+456 }{ 9 }  \\ \frac { 300-228 }{ 9 }  \end{pmatrix}=\begin{pmatrix} \frac { 36 }{ 9 }  \\ \frac { 72 }{ 9 }  \end{pmatrix}=\begin{pmatrix} 4 \\ 8 \end{pmatrix}

この演算に利用した行列式
\mathbb{AI}=\mathbb{I{ A }^{ -1 }}

広告を非表示にする

数について

どんな数も合成数である
数には人間に理解の及ぶ範疇と及ばない範疇があり、それは例えば前者の場合、自然数有理数、後者の場合、無理数虚数等となってイメージされる
それらを大雑把にふたつにわけ、「良い数」「悪い数」と考えることもできる

良い数をu、悪い数をvと考え、数そのものを「u+v」という合成数で考えることもできる
たとえば以下のような式がある

x=1+\frac { 1 }{ x }

両辺にxがあるので解(根)は求まっていない。とりあえず両辺にxがある状態を無くす必要がある。なので、これを変形していく。すると解は黄金数になる。変形にはややアクロバティックな正方完成の考えが利用される

\Leftrightarrow \quad x\cdot x=1\cdot x+\frac { 1 }{ x } \cdot x\quad \Leftrightarrow \quad { x }^{ 2 }=x+1\\ \Leftrightarrow \quad { \left( x-\frac { 1 }{ 2 }  \right)  }^{ 2 }+x-\frac { 1 }{ 4 } =x+1\quad \Leftrightarrow \quad { \left( x-\frac { 1 }{ 2 }  \right)  }^{ 2 }=x+1-x+\frac { 1 }{ 4 } \quad \Leftrightarrow \quad { \left( x-\frac { 1 }{ 2 }  \right)  }^{ 2 }=\frac { 5 }{ 4 } \\ \Leftrightarrow \quad x-\frac { 1 }{ 2 } =\pm \sqrt { \frac { 5 }{ 4 }  } \quad \Leftrightarrow \quad x-\frac { 1 }{ 2 } =\frac { \pm \sqrt { 5 }  }{ 2 } \quad \Leftrightarrow \quad x=\frac { 1\pm \sqrt { 5 }  }{ 2 }

この場合、1がよい数で\sqrt { 5 } が悪い数になる。こういう合成数の図式はあらゆる場面で見られる。たとえば複素数もそうであるし、サインコサインの出力値、漸化式の解や別の形に表現された無理数もよく見ると、この形になっていたりする(0は良い数、悪い数、両方の性質を持つと考える)
そういったセンスを持っておくと色々得をしそう?(テイラー展開でとか??)

広告を非表示にする

循環小数の作成

0.3939393939...\quad =\quad 0.\dot { 3 } \dot { 9 }  のような循環小数の作成

基本的に以下の様な仕組みを利用する。これはゲーム開発では乱数の作成の基礎などに利用できる

\lim _{ n\rightarrow \infty  }{ { S }_{ n } } \quad =\quad 39\left\{ \frac { 1 }{ 100 } +{ \left( \frac { 1 }{ 100 }  \right)  }^{ 2 }+{ \left( \frac { 1 }{ 100 }  \right)  }^{ 3 }+\cdots +{ \left( \frac { 1 }{ 100 }  \right)  }^{ n } \right\}

等比数列の和の公式 { S }_{ n }=\frac { { a }_{ 1 }\left( 1-{ r }^{ n } \right)  }{ 1-r } を利用して

\lim _{ n\rightarrow \infty  }{ { S }_{ n } } =39\times \frac { \frac { 1 }{ 100 } \left( 1-{ \left( \frac { 1 }{ 100 }  \right)  }^{ n } \right)  }{ 1-\frac { 1 }{ 100 }  } \\ { S }_{ n }=\quad 39\times \frac { \frac { 1 }{ 100 } \left( 1-0 \right)  }{ 1-\frac { 1 }{ 100 }  } \quad =\quad 39\times \frac { \frac { 1 }{ 100 }  }{ \frac { 99 }{ 100 }  } \quad =\quad 39\times \frac { 1 }{ 99 } \quad =\quad \frac { 13 }{ 33 }

となる。簡単に言うと39÷99で循環小数を作れるし、例えば0.1234512345...のような場合は、12345÷99999で作れる。乱数にしたいなら、この99の部分を98や97にずらしていく。(もちろんこんなものは乱数ではないのだが、ぱっとみて乱数と勘違させることは出来る)この循環少数の狙った桁や並んだ数字部分を抽出したいのなら以下のような考え方を利用する(10なら一桁づつだが100にすればふたつずつ抽出するなども出来る)


狙った桁の抽出

広告を非表示にする

線形計画問題、忘備録

資料:
線形計画問題
f:id:cqbosinko:20170501195822p:plain

このようなグラフを書くことによって、どんな情報が得られるかに注目した方が良い。このグラフから、この問題をうまく解決すれば最低でも6000円以上、10000円以下の利益が得られることが分かる。また、理屈で考えるとx=800,y=8が最適解となる事が考えられる(図を書かなければそんなことはイメージ出来ない)

また図を描く事とは別として行列の計算、アルゴリズムを利用して線形代数的に最適解を算出することが可能となる