# data[].attributes.body
https://qiita.com/Sharkkii/items/cebba1bc538fdaaa9fb5
https://takashiijiri.com/study/miscs/QRfactorization.htm
https://www.headboost.jp/docs/linear-algebra-for-programmers/factorization/qr/

# data[].attributes.attachment_link.readable_text
今回はQR法(固有値を求めるアルゴリズム)に欠かせない QR分解 について解説していきたいと思います。
この記事には

が含まれています。それぞれ自分に必要な部分を参照してもらえればいいなと思っています。

大学1年生で勉強する「線形代数学」の基本的な事項は既知として書いていきます。
キーワードは 直交行列 / 三角行列 / グラム・シュミットの直交化法 です。
もし記事中でわからない言葉が出てきた場合には、線形代数学の教科書を読んだり他のサイトを見たりして調べてください。

$n$ 次正方行列 $A$ が与えられたとき、それを $n$ 次直交行列 $Q$ と $n$ 次上三角行列 $R$ の積に分解することを QR分解 と言います。より一般的には $m \times n$ 行列 $A$ を $m$ 次直交行列 $Q$ と $m \times n$ 行列 $R$ に分解するのがQR分解です。
行列 $A$ がQR分解可能であるための必要十分条件は $\text{rank}(A) = n$ です。 $m = n$ 、すなわち $A$ が正方行列である場合には $A$ が正則であるときに限ってQR分解を実行することができます。

冒頭で触れたように、QR分解は QR法 と呼ばれるアルゴリズムの基礎をなしています。QR法は固有値を求めるためのアルゴリズムで、他のアルゴリズム(ヤコビ法、べき乗法、逆反復法など)と比較して数値的に安定しているのが特徴です。

QR分解することができれば行列式や逆行列を簡単に求めることができます。直交行列の行列式は1になるので

$$
\det(A) = \det(Q R) = \det(Q) \det(R) = \det(R) = \prod_{i=1}^n R_{ii}
$$

というように行列式を求めることができます。また

というように逆行列を求めることができます。上三角行列の逆行列は $O(n^2)$ で比較的簡単に求めることができるため、 $A^{-1}$ を同じ計算量オーダーで計算することができます。

アルゴリズム

QR分解を行うための方法はいくつかありますが、ここでは グラム・シュミットの直交化法 / ハウスホルダー変換 による方法の2つを紹介したいと思います。

$n$本の線型独立な列ベクトル $\{ {\bf a_1}, \dots, {\bf a_n} \}$ が与えられたとき、それと同じ空間を張るような(正規)直交基底 $\{ {\bf e_1}, \dots, {\bf e_n} \}$ を抽出するアルゴリズムを グラム・シュミットの直交化法 と言います。以下の式に従って順に ${\bf e_k}$ を構成していきます。(この記事ではこの式について詳しく説明することはしません。)

ここで $\langle \cdot, \cdot \rangle, \| \cdot \|$ はそれぞれ標準内積、(ベクトルの)ノルムを表しています。

各$k$についてこの式を書き下してみましょう。

これを各 ${\bf a_k}$ について解くと

となります。行列の形式で表現すれば

とすることができます。 $Q, R$ の定義から明らかなように、 $Q$ は正規直交基底を並べたものなので直交行列になっており、 $R$ は上三角行列になっています。

このように、グラム・シュミットの直交化法を利用すると、自然にQR分解を実行することができます。
なお、 $m > n$ の場合にはさらに $m - n$ 個の線形独立なベクトルをとることができますが、それを含めた $m$ 本の線形独立なベクトルを並べて $Q$ とします。 $R$ については第 $n$ 行までを上述のアルゴリズムによって計算し、第 $n+1$ 行以降はすべて0で埋めれば良いです。

与えられた $n$ 次元ベクトル ${\bf x}$ を $n$ 次元上のある超平面に関して鏡映変換する(対称移動させる)操作を ハウスホルダー変換 と言います。超平面はそれに直交する法線ベクトル ${\bf n}$ で特徴づけることができるので、この変換 $h$ は

$$
h({\bf x}) = {\bf x} - 2 \langle {\bf x}, {\bf n} \rangle {\bf n}
$$

と書くことができます。ハウスホルダー変換は、2次元空間においては「直線に関するベクトルの対称移動」、3次元では「平面に関するベクトルの対称移動」となっているので、そこから類推してもらえると良いかと思います。

この変換の表現行列 $H$ は

となります。( $I_n$ は $n$ 次単位行列を表しています。)この $H$ を ハウスホルダー行列 と呼びます。

ハウスホルダー行列は様々な性質を持っています。
最も重要なのは、ハウスホルダー行列は直交行列であり、かつ対称行列であるということです。これは $Q$ を構成する際になくてはならない性質となっています。この性質は容易に示すことができます。
他にも ${\bf y} = H {\bf x}$ なる ${\bf x}, {\bf y}$ に関して ${\bf x} = H {\bf y}$ が成立するという性質も重要です。これはハウスホルダー変換がベクトルの鏡映変換であるということを考えれば直感的にも明らかだと思います。

では、ハウスホルダー変換によるQR分解を見ていきましょう。
大雑把に説明すると、ハウスホルダー変換を $A$ の各列に対して順に適用していき、最終的に上三角行列にすることで $Q, R$ を求めます。(あとで詳しく説明しますが、変換過程で作用させた行列の積が $Q$ となり、最終的に得られた上三角行列が $R$ となっています。)

まず、 $A = ({\bf a_1}, \dots, {\bf a_n})$ の第1列について考えます。 ハウスホルダー変換によって $A$ を上三角行列にするために、まず

を満たすような変換行列 $H$ を考えます。 ${\bf x} \equiv {\bf a_1}, {\bf y} \equiv (\| a_1 \|, 0, \dots, 0)^T$ と書くことにすると、そのような $H$ は

$$
H = I - \frac{({\bf x} - {\bf y}) ({\bf x} - {\bf y})^T}{\| {\bf x} - {\bf y} \|^2}
$$

です。(導出は折りたたんであるので、必要ならばクリックして展開してください。)

ハウスホルダー行列 $H$ の導出

ハルスホルダー行列の定義式 $H = I - 2 {\bf v} {\bf v}^T$ を上の条件に代入すると

\begin{eqnarray*} H {\bf x} = {\bf y} &\Leftrightarrow& (I - 2 {\bf v} {\bf v}^T) {\bf x} = {\bf y} \\ &\Leftrightarrow& ({\bf v}^T {\bf x}) {\bf v} = {\bf x} - {\bf y} \end{eqnarray*}

となり、 ${\bf v} = c ({\bf x} - {\bf y})$ と表すことができます。 ${\bf v}$ は単位ベクトルなので、定数 $c$ は一意に定まって

$A$ に対してこのような $H$ を左から作用させると

となり、第1列の第2行以降の成分を0にすることができます。ここで、 $B^{(1)}$ は $n-1$ 次正方行列です。
第2列以降についても帰納的に実行することができます。第 $k$ 列まで変換が完了していると仮定して、第 $k+1$ 列の変換を考えましょう。すなわち、 $k$ 列目まで変換された結果得られる行列を $A^{(k)}$ と書くことにすると、

となっていると仮定します。このとき、先ほどと同様に $n-k$ 次正方行列 $B^{(k)}$ に対してその1列目の第2行以降を0にするような変換 $G^{(k+1)}$ を施せば良いです。 $A^{(k)}$ が与えられたとき、その小行列 $B^{(k)}$ に変換 $G^{(k+1)}$ が適用されるような $n$ 次正方行列の変換 $H^{(k+1)}$ は

となります。( $I_k$ は $k$ 次単位行列です。)この変換によって小行列 $B^{(k+1)}$ が $G^{(k+1)}$ によって変換され、その結果 $A^{(k+1)}$ の第 $k+1$ 列の第 $k+2$ 列以降の成分が0になることが確認できると思います。この変換の仕方を踏まえると

$$
A^{(n)} = H^{(n)} A^{(n-1)} = \dots = H^{(n)} \dots H^{(1)} A^{(0)} = H^{(n)} \dots H^{(1)} A
$$

が上三角行列になっています。
この上三角行列を $R \equiv A^{(n)}$ と定義します。 すべての $k$ について $H^{(k)}$ は直交行列かつ対称行列であるため、

$$
A = (H^{(n)} \dots H^{(1)})^{-1} R = (H^{(1)})^{-1} \dots (H^{(n)})^{-1} R = H^{(1)} \dots H^{(n)} R
$$

と変形することができます。直交行列の積も直交行列であることから、 $Q \equiv H^{(1)} \dots H^{(n)}$ とすることで

というQR分解を得ることができます。

数学的な話

$n$ 次正方行列 $A$ がQR分解可能であることの必要十分条件は「 $A$ が正則である」ことです。これはグラム・シュミットの直交化法によって正規直交化するベクトルの組が1次独立であることからわかります。

$n$ 次正方行列 $A$ がQR分解可能であるとき、その分解は一意的です。すなわち、 $A = Q R = Q^{\prime} R^{\prime}$ のように2通りにQR分解できたとすると、 $Q = Q^{\prime}, R = R^{\prime}$ が成立します。
$n$ 次正方行列 $A$ がQR分解可能であるとき、その分解は一意的である。
この命題は $Q, R$ がともに正則であることに注意すれば容易に示すことができます。
$A = Q R = Q^{\prime} R^{\prime}$ のように2通りにQR分解できたと仮定します。このとき、 $Q, R$ はともに正則なので

となります。上三角行列どうしの積、および(正則な)上三角行列の逆行列が上三角行列になることから、右辺は上三角行列になります。一方、左辺は直交行列になっています。

等号から左辺および右辺は直交行列かつ上三角行列になります。このような行列は単位行列に限られることが知られています。(証明は折りたたんであります。)

直交行列かつ上三角行列が単位行列になることの証明

$X$ を直交行列かつ上三角行列であるとします。

$X$ の逆行列を考えると、 $X$ は直交行列であることから $X^{-1} = X^T$ となっています。一方、 $X$ は上三角行列であることから $X^{-1}$ は上三角行列になっています。 $X$ および $X^T$ が上三角行列であるため、 $X$ (および $X^{-1}$) は対角行列です。
直交行列の各列のノルムが1であることを考慮すると、その対角成分は1となる必要があります。

以上より、直交行列かつ上三角行列は単位行列となります。

したがって

$$
(Q^{\prime})^{-1} Q = R^{\prime} R^{-1} = I_n \Leftrightarrow Q = Q^{\prime}, R = R^{\prime}
$$

が成立します。

QR分解(グラム・シュミットの直交化法 / ハウスホルダー変換による方法)のPythonによる実装はGitHubにあります。

グラム・シュミットの直交化法において、行数 $m$ が列数 $n$ よりも大きい場合には、 $m$ 次元空間の標準基底を順番に見ていき、それまでに追加された基底と線型独立なものを探すようにしています。 while ループで実装していますが、このループは必ず停止することに注意してください。

ラーニングピラミッドによれば「他者に伝える」ことで知識の定着率が上がるそうなので、これからも積極的に記事を書いていきたいと思います。

# data[].attributes.attachment_link.title
チョットワカル【QR分解】 - Qiita

# data[].attributes.attachment_link.description
今回はQR法(固有値を求めるアルゴリズム)に欠かせない QR分解 について解説していきたいと思います。 この記事には が含まれています。それぞれ自分に必要な部分を参照してもらえればいいなと思っています。 大学1年生で勉強する「線形代数学」の基本的な事項は既知として書いていきます。 キーワードは 直交行列 / 三角行列 / グラム・シュミットの直交化法 です。 もし記事中でわからない言葉が出てきた場合には、線形代数学の教科書を読んだり他のサイトを見たりして調べてください。 $n$ 次正方行列 $A$ が与えられたとき、それを $n$ 次直交行列 $Q$ と $n$ 次上三角行列 $R$ の積に分解することを QR分解 と言います。より一般的には $m \times n$ 行列 $A$ を $m$ 次直交行列 $Q$ と $m \times n$ 行列 $R$ に分解するのがQR分解です。 行列 $A$ がQR分解可能であるための必要十分条件は $\text{rank}(A) = n$

# data[].attributes.headline
2次関数ノート　高校時代（杉村）

# data[].attributes.subject
2次関数ノート　高校時代（杉村）

# data[].attributes.body
字あまり上手じゃなくてごめんなさい

# data[].attributes.body
学習指導要領　二次関数

# data[].attributes.attachment_link.title
数学科教育法Ⅱ 二次関数 共通テスト、試行調査

# data[].attributes.body
https://mirablo.net/necessary-study/

# data[].attributes.attachment_link.readable_text
こんにちは！キム兄（ kimkim3150 ）です。

平方根なんて勉強して何になるの？

二次関数なんて社会に出て使わないでしょ！

とお考えの学生のみなさん。

社会に出て平方根や二次関数は本当に使わないのでしょうか？

実は平方根や二次関数に限らず、中学や高校で習う学問には全て学ぶべき理由があり、社会はもちろん、生活する上で必須なものです。

今回は、実際に社会に出て中学や高校でもっとしっかり勉強しておけばよかったな~。
と考えるぼくから、平方根と二次関数を学ぶべき理由についてお話ししたいと思います。

社会に出て平方根が役立つ状況とは？

平方根は2乗してaになるような数のaに対する称のこと。

↓分かりやすく説明しているサイトがこちら↓
【 平方根：アタリマエ 】

では、この平方根、どんなときに役に立つのでしょうか？

ぼくが実際に役に立ったのは家を建てる時でした。

3.6畳の部屋を倍の広さにしたい！でも3.6畳を7.2畳にするには、部屋の1辺の長さを何倍にすればいいんだろう？

3.6畳ってだいたい2.7m×2.16mで約5.8平方メートルです。

広さを2倍にしようとして2.7mと2.16mの1辺の長さを2倍にすると、面積は4倍になってしまいます。

縦と横の長さをそれぞれ、平方根の2、つまり1.41倍（3.8m×3.04m）にすれば面積は2倍（11.55平方メートル）となり、7.2畳の空間を確保できるんです！

面積を2倍、3倍、4倍、もしくは1/2などにしたい場合などは平方根が活用できます。

身近な例では、スマホや携帯ゲームの範囲攻撃で範囲が2倍になっても、1辺の長さは1.4倍程度になっているはず。

社会に出て二次関数が役立つ状況とは？

二次関数は独立変数の二次式で表される関数で、描くグラフは放物線になる。

たとえばボールを投げると最初は前に進む力が強いのですが、ある程度すすむと重力や空気抵抗により、落下する力のほうが強くなります。

バスケットボールのシュートを二次関数で考えた面白い記事がこちら
【 PDF 】

そんな二次関数ですが、ぼくたちは無意識に使っているんです。

たとえば、5m先のゴミ箱にティッシュを投げ捨てる場合。

ティッシュの重さ、空気抵抗、距離、速度の落ち具合、落下速度などを無意識に計算して投げています。

社会に出てからも、生活場面では

仕事をする人は

など様々な場面で活躍します。

つまり、ぼくたちは二次関数を数式に表すことができないだけで、無意識のうちに多用しているというわけ。

平方根や二次関数の勉強が必要な理由

平方根や二次関数が日常生活で使われているということはわかりました。

でも、数式はやっぱり社会に出て使わないのではないか？

という疑問は残りますよね。

実際、ぼくは社会人になってから二次関数の計算をしたことは1度もありません。

しかし、勉強は必要だと言い切れます。

それはなぜか？

実は平方根も二次関数も、中学3年生までに習う範囲です。

ということは『高校や大学入試の試験範囲』になっているんです。

世の中には高校卒業、大学卒業という肩書きが必要な資格がたくさんあります。

など、特殊技能が必要な資格は大学卒業が必須。

ぼくの仕事（理学療法士）もそうです。

しかし、平方根や二次関数が社会で使わないからといって勉強してこなかったらどうでしょう。

当然、高校や大学の入試で失敗する可能性が高くなります。

もしもきみの将来の夢が大卒などの資格や肩書が必要な仕事だった場合、社会で平方根や二次関数は使わないからやらない！とは言えないはずです。

なぜなら、きみの夢をかなえるために通うべき大学や高校の入試にでるから。

平方根や二次関数は、間接的にきみの人生に大きな関わりを持っているんです。

平方根や二次関数は入試外でも絶対に必要になる時期が来る！

先ほども申したように、平方根や二次関数は中学3年生までに『かならず』学びます。

それはこれからも変わらないでしょう。

つまり、きみたちが大人になって、子供が産まれたらその子も中学3年生で平方根や二次関数を習う時が来るんです。

その時に

『お父さん、お母さん、二次関数って何？』

と、こどもに聞かれたらどうしますか？

『社会に出ても使わないからそんなの勉強しなくていいよ』とでも教えますか？

キミはそんな親になりたいですか？

大人の基礎知識として必要な平方根と二次関数

大人であればそれなりの知識は必要だと思います。

ぼくも二次関数の計算はわかりませんが、このように簡単にかいつまんで説明することができるレベルです。

ぼくにとって、この記事を書いているまさに今、中学で勉強した二次関数が役に立っているということ。

じゃあインフルエンサーや、フリーランスはどうなの？

と思うかもしれませんが、彼らも勉強はしていますし、基礎的な学力はあるはずです。

誤解を恐れずにいうと、基礎学力のないバカにお金は稼げませんし、人はついてきません。

最後に、アメリカの研究の記事を紹介します。

エンジニアなど理数系の専門を学んだ人は年収が高くなるとのこと。

【 マーケットハック：米国の大学での専攻と年収の関係 】

平方根や二次関数を将来使わないから！という理由で勉強しないのはちょっと的外れだと思いませんか？

大人になれば、あの時もっと勉強しておけばよかった！と思う時が来ます。

いつ勉強するか？

中学生、高校生は部活やアルバイトで忙しい中勉強している！

私たちミラブロは「 好きな事を仕事にして楽しんでほしい！」と思う反面、「 基礎的な知識はあったほうが良い 」と考えています。

でも学習塾などに時間やお金を取られるのはもったいないので、進研ゼミをおすすめしています。

進研ゼミは「 効率よく、自分のペースで勉強できる 」というのが1番の魅力で、部活動などで家に帰ってからも効率的に勉強できるんです。

教育に長年力を入れているのでノウハウも豊富なので、スキマ時間に取り組めて成績アップを目指せます。

まずはは無料の資料請求から始めてみてはいかがでしょう。
今日からキミは変われます。
ベネッセ 進研ゼミ 高校講座
資料請求プロモーション
ベネッセ 進研ゼミ 中学講座
資料請求プロモーション

# data[].attributes.attachment_link.title
平方根や二次関数って社会で何の役に立つの？大人が使う場面とは

# data[].attributes.attachment_link.description
こんにちは！キム兄（ kimkim3150 ）です。 平方根なんて勉強して何になるの？ 二次関数なんて社会に出て使わないでしょ！ とお考えの学生のみなさん。 社会に出て平方根や二次関数は本当に使わないのでしょうか？ 実は平方根や二次関数に限らず、中学や高校で習う学問には全て学ぶべき理由があり、社会はもちろん、生活する上で必須なものです。 ...

# data[].attributes.body
https://www.dnc.ac.jp/albums/abm.php?f=abm00035624.pdf&n=02-02_%E5%95%8F%E9%A1%8C%E5%86%8A%E5%AD%90_%E6%95%B0%E5%AD%A6%E2%91%A0.pdf

# data[].attributes.body
https://www.toshin.com/kyotsutest/2021/suugaku-1a_question_2.html

# data[].attributes.attachment_link.title
共通テスト2021 数学ⅠA問題｜共通テスト解答速報2021｜予備校の東進

# data[].attributes.attachment_link.description
東進の共通テスト解答速報。数学ⅠAの全体概観・設問別分析を公開しています。大学入学共通テストの解答速報2021のページです。

# data[].attributes.body
https://www.toshin.com/kyotsutest/suugaku-1a_question_2.html

# data[].attributes.attachment_link.title
共通テスト2022 数学ⅠA問題｜共通テスト解答速報2022｜予備校の東進

# data[].attributes.attachment_link.description
東進の共通テスト解答速報。数学ⅠAの全体概観・設問別分析を公開しています。大学入学共通テストの解答速報2022のページです。

# data[].attributes.attachment_link.provider_name
勉強は楽しい！個別指導塾サニティ

# data[].attributes.attachment_link.readable_text
個別指導塾サニティのブログへお越し下さりありがとうございます！

本日はテーマは二次関数！

中学で学んだ二次関数。

二次関数とは、

y=ax^2 (ワイイコールエーエックスの二乗)で表せる関数のことでした。

y=x^2 （ワイイコールエックスの二乗）

y=2x^2　(ワイイコール2エックスの二乗)

などが二次関数です。

「Xの二乗」、この二乗が使われていることから、「二次」という名前が付いています。

また、「関数」とは、ある数が決まるとそれに応じてもう一方の数が決まる関係のことです。

Xの数が決まると、Yの数も決まる、という関係ですね。

と、ざっくりと二次関数のおさらいでした。

さて、この二次関数、どのような使い道があるのでしょうか？

この二次関数が描く曲線は、「放物線」と呼ばれます。

「放物線」とは、物を空中に投げたときの軌道(ものが動いてゆくみちすじ)のこと。

ホームランボールの軌道、投げたボールの軌道、バスケットのシュートの軌道、ホースから撒かれる水の軌道、すべて放物線なのです！

空中を動くものには常にこの放物線の理論が当てはまります。

ということは、空中に動くものの計算をする際には、いつでもこの放物線の理論、「二次関数」が活用できるのです。

ヨーロッパでは、大砲の砲弾の動きを計算する際に、この二次関数が研究されました。

その砲弾がどのような動きをしてどこに落ちるのか、そういった研究に二次関数は使われました。

空中のボールの軌道を計算する時にも、ロケットの動きを計算する時にも、もちろんこの二次関数が活躍します。

他にもたくさんの使い道があるのです！！！

そう考えると、数学も面白くなりませんか？

ただ公式を丸暗記してテストで答えるためのもの、ではありません。

『このデータをどのように使えるか？』

そう考えれば、勉強はもっと楽しくなります！

# data[].attributes.attachment_link.title
『二次関数の使い道...　実は身近にたくさん！』

# data[].attributes.attachment_link.description
個別指導塾サニティのブログへお越し下さりありがとうございます！ 本日はテーマは二次関数！ 中学で学んだ二次関数。 二次関数とは、 y=ax^2 (ワイイコールエーエックスの二乗)で表せる関数のことでした。 y=x^2 （ワイイコールエックスの二乗） y=2x^2　(ワイイコール2エックスの二乗) などが二次関数です。 ...

# data[].attributes.body
神山周