Copy disabled (too large)
Download .txt
Showing preview only (15,500K chars total). Download the full file to get everything.
Repository: kenjihiranabe/The-Art-of-Linear-Algebra
Branch: main
Commit: 3bfe92308bdb
Files: 68
Total size: 14.8 MB
Directory structure:
gitextract_in6dllll/
├── Graphic-Notes-on-LA4E-v1.1-j.pptx
├── Graphic-Notes-on-LA4E-v1.1.pptx
├── Illustrations-j.pptx
├── Illustrations.pptx
├── LICENSE
├── MapofEigenvalues.pptx
├── MatrixWorld.pptx
├── README-zh-CN.md
├── README.md
├── The-Art-of-Linear-Algebra-j.tex
├── The-Art-of-Linear-Algebra-zh-CN.tex
├── The-Art-of-Linear-Algebra.tex
├── The-Art-of-Linear-Algebra.updated.tex
├── figs/
│ ├── 4-Subspaces-j.eps
│ ├── 4-Subspaces.eps
│ ├── 5-Factorizations-j.eps
│ ├── 5-Factorizations.eps
│ ├── A_CR-j.eps
│ ├── A_CR.eps
│ ├── A_LU-j.eps
│ ├── A_LU.eps
│ ├── A_QLQT-j.eps
│ ├── A_QLQT.eps
│ ├── A_QR-j.eps
│ ├── A_QR.eps
│ ├── A_USVT-j.eps
│ ├── A_USVT.eps
│ ├── CR1-j.eps
│ ├── CR1.eps
│ ├── CR2-j.eps
│ ├── CR2.eps
│ ├── EVD-j.eps
│ ├── EVD.eps
│ ├── LU1-j.eps
│ ├── LU1.eps
│ ├── LU2-j.eps
│ ├── LU2.eps
│ ├── MapofEigenvalues-j.eps
│ ├── MapofEigenvalues.eps
│ ├── MatrixTimesMatrix-j.eps
│ ├── MatrixTimesMatrix.eps
│ ├── MatrixTimesVector-j.eps
│ ├── MatrixTimesVector.eps
│ ├── MatrixWorld-j.eps
│ ├── MatrixWorld.eps
│ ├── Pattern11-22-j.eps
│ ├── Pattern11-22.eps
│ ├── Pattern12-j.eps
│ ├── Pattern12.eps
│ ├── Pattern3-j.eps
│ ├── Pattern3.eps
│ ├── Pattern4-j.eps
│ ├── Pattern4.eps
│ ├── QR-j.eps
│ ├── QR.eps
│ ├── SVD-j.eps
│ ├── SVD.eps
│ ├── VectorTimesMatrix-j.eps
│ ├── VectorTimesMatrix.eps
│ ├── VectorTimesVector-j.eps
│ ├── VectorTimesVector.eps
│ ├── ViewingMatrix-4Ways-j.eps
│ ├── ViewingMatrix-4Ways.eps
│ └── epsinclude.tex
├── figs-catalog.tex
├── makefile
├── name-list-book.mak
└── name-list.mak
================================================
FILE CONTENTS
================================================
================================================
FILE: LICENSE
================================================
Creative Commons Legal Code
CC0 1.0 Universal
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
HEREUNDER.
Statement of Purpose
The laws of most jurisdictions throughout the world automatically confer
exclusive Copyright and Related Rights (defined below) upon the creator
and subsequent owner(s) (each and all, an "owner") of an original work of
authorship and/or a database (each, a "Work").
Certain owners wish to permanently relinquish those rights to a Work for
the purpose of contributing to a commons of creative, cultural and
scientific works ("Commons") that the public can reliably and without fear
of later claims of infringement build upon, modify, incorporate in other
works, reuse and redistribute as freely as possible in any form whatsoever
and for any purposes, including without limitation commercial purposes.
These owners may contribute to the Commons to promote the ideal of a free
culture and the further production of creative, cultural and scientific
works, or to gain reputation or greater distribution for their Work in
part through the use and efforts of others.
For these and/or other purposes and motivations, and without any
expectation of additional consideration or compensation, the person
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
is an owner of Copyright and Related Rights in the Work, voluntarily
elects to apply CC0 to the Work and publicly distribute the Work under its
terms, with knowledge of his or her Copyright and Related Rights in the
Work and the meaning and intended legal effect of CC0 on those rights.
1. Copyright and Related Rights. A Work made available under CC0 may be
protected by copyright and related or neighboring rights ("Copyright and
Related Rights"). Copyright and Related Rights include, but are not
limited to, the following:
i. the right to reproduce, adapt, distribute, perform, display,
communicate, and translate a Work;
ii. moral rights retained by the original author(s) and/or performer(s);
iii. publicity and privacy rights pertaining to a person's image or
likeness depicted in a Work;
iv. rights protecting against unfair competition in regards to a Work,
subject to the limitations in paragraph 4(a), below;
v. rights protecting the extraction, dissemination, use and reuse of data
in a Work;
vi. database rights (such as those arising under Directive 96/9/EC of the
European Parliament and of the Council of 11 March 1996 on the legal
protection of databases, and under any national implementation
thereof, including any amended or successor version of such
directive); and
vii. other similar, equivalent or corresponding rights throughout the
world based on applicable law or treaty, and any national
implementations thereof.
2. Waiver. To the greatest extent permitted by, but not in contravention
of, applicable law, Affirmer hereby overtly, fully, permanently,
irrevocably and unconditionally waives, abandons, and surrenders all of
Affirmer's Copyright and Related Rights and associated claims and causes
of action, whether now known or unknown (including existing as well as
future claims and causes of action), in the Work (i) in all territories
worldwide, (ii) for the maximum duration provided by applicable law or
treaty (including future time extensions), (iii) in any current or future
medium and for any number of copies, and (iv) for any purpose whatsoever,
including without limitation commercial, advertising or promotional
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
member of the public at large and to the detriment of Affirmer's heirs and
successors, fully intending that such Waiver shall not be subject to
revocation, rescission, cancellation, termination, or any other legal or
equitable action to disrupt the quiet enjoyment of the Work by the public
as contemplated by Affirmer's express Statement of Purpose.
3. Public License Fallback. Should any part of the Waiver for any reason
be judged legally invalid or ineffective under applicable law, then the
Waiver shall be preserved to the maximum extent permitted taking into
account Affirmer's express Statement of Purpose. In addition, to the
extent the Waiver is so judged Affirmer hereby grants to each affected
person a royalty-free, non transferable, non sublicensable, non exclusive,
irrevocable and unconditional license to exercise Affirmer's Copyright and
Related Rights in the Work (i) in all territories worldwide, (ii) for the
maximum duration provided by applicable law or treaty (including future
time extensions), (iii) in any current or future medium and for any number
of copies, and (iv) for any purpose whatsoever, including without
limitation commercial, advertising or promotional purposes (the
"License"). The License shall be deemed effective as of the date CC0 was
applied by Affirmer to the Work. Should any part of the License for any
reason be judged legally invalid or ineffective under applicable law, such
partial invalidity or ineffectiveness shall not invalidate the remainder
of the License, and in such case Affirmer hereby affirms that he or she
will not (i) exercise any of his or her remaining Copyright and Related
Rights in the Work or (ii) assert any associated claims and causes of
action with respect to the Work, in either case contrary to Affirmer's
express Statement of Purpose.
4. Limitations and Disclaimers.
a. No trademark or patent rights held by Affirmer are waived, abandoned,
surrendered, licensed or otherwise affected by this document.
b. Affirmer offers the Work as-is and makes no representations or
warranties of any kind concerning the Work, express, implied,
statutory or otherwise, including without limitation warranties of
title, merchantability, fitness for a particular purpose, non
infringement, or the absence of latent or other defects, accuracy, or
the present or absence of errors, whether or not discoverable, all to
the greatest extent permissible under applicable law.
c. Affirmer disclaims responsibility for clearing rights of other persons
that may apply to the Work or any use thereof, including without
limitation any person's Copyright and Related Rights in the Work.
Further, Affirmer disclaims responsibility for obtaining any necessary
consents, permissions or other rights required for any use of the
Work.
d. Affirmer understands and acknowledges that Creative Commons is not a
party to this document and has no duty or obligation with respect to
this CC0 or use of the Work.
================================================
FILE: README-zh-CN.md
================================================
[English](README.md) | 中文(简体)
# The-Art-of-Linear-Algebra
Graphic notes on Gilbert Strang's "Linear Algebra for Everyone"
图释 Gilbert Strang 的 “给每个人的线性代数”
> 中译说明:
>
> 中文版尚在翻译中, 欢迎issue提出问题或pr共建, 万分感激!
>
> 英文与日文原版仓库为[kenjihiranabe/The-Art-of-Linear-Algebra](https://github.com/kenjihiranabe/The-Art-of-Linear-Algebra), 中文版在仓库[kf-liu/The-Art-of-Linear-Algebra-zh-CN](https://github.com/kf-liu/The-Art-of-Linear-Algebra-zh-CN)中 (也会定期提pr到英文与日文原版的仓库), 欢迎`✨star`中文版仓库以跟进最新的中文译版.
全文输出文件:
中文版本 "[The-Art-of-Linear-Algebra-zh-CN.pdf](The-Art-of-Linear-Algebra-zh-CN.pdf)" 与 中文最新版"[kf-liu/The-Art-of-Linear-Algebra-zh-CN/The-Art-of-Linear-Algebra-zh-CN.pdf](https://github.com/kf-liu/The-Art-of-Linear-Algebra-zh-CN/blob/main/The-Art-of-Linear-Algebra-zh-CN.pdf)"
英文版本 "[The-Art-of-Linear-Algebra.pdf](The-Art-of-Linear-Algebra.pdf)"
日文版本 "[The-Art-of-Linear-Algebra-j.pdf](The-Art-of-Linear-Algebra-j.pdf)"
## 摘要
我尝试为 Gilbert Strang 在书籍 “Linear Algebra for Everyone” 中介绍的矩阵的重要概念进行可视化图释, 以促进从矩阵分解的角度对向量、矩阵计算和算法的理解.
它们包括矩阵分解 (Column-Row, CR)、高斯消去法 (Gaussian Elimination, LU)、格拉姆-施密特正交化 (Gram-Schmidt Orthogonalization, QR)、特征值和对角化 (Eigenvalues and Diagonalization, QΛQ')、和奇异值分解(Singular Value Decomposition, UΣV').

也包括其他图形.
## 特征值图

- 可以在 PDF "[MapofEigenvalues](MapofEigenvalues.pdf)"中查看
## 矩阵世界

- 可以在 PDF "[MatrixWorld](MatrixWorld.pdf)"中查看
## 许可证
英文与日文版本许可证见[原文](https://github.com/kenjihiranabe/The-Art-of-Linear-Algebra), 译者行文时, 原文版本使用 CC0-1.0 许可证.
中文版本使用<a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc/4.0/80x15.png" /></a>许可证, 请勿商用.
================================================
FILE: README.md
================================================
English | [中文(简体)](README-zh-CN.md)
# The-Art-of-Linear-Algebra
Graphic notes on Gilbert Strang's "Linear Algebra for Everyone"
The output file is "[The-Art-of-Linear-Algebra.pdf](The-Art-of-Linear-Algebra.pdf)"
Japanese version "[The-Art-of-Linear-Algebra-j.pdf](The-Art-of-Linear-Algebra-j.pdf)"
Chinese version "[The-Art-of-Linear-Algebra-zh-CN.pdf](The-Art-of-Linear-Algebra-zh-CN.pdf)" and "[kf-liu/The-Art-of-Linear-Algebra-zh-CN/The-Art-of-Linear-Algebra-zh-CN.pdf](https://github.com/kf-liu/The-Art-of-Linear-Algebra-zh-CN/blob/main/The-Art-of-Linear-Algebra-zh-CN.pdf)" for the latest Chinese version.
## Abstract
I tried intuitive visualizations of important concepts introduced
in "Linear Algebra for Everyone".
This is aimed at promoting understanding of vector/matrix calculations
and algorithms from the perspectives of matrix factorizations.
They include Column-Row (CR), Gaussian Elimination (LU),
Gram-Schmidt Orthogonalization (QR), Eigenvalues and Diagonalization (QΛQ'),
and Singular Value Decomposition (UΣV').

Also includes other graphics.
## Map of Eigenvalues

- Available in PDF "[MapofEigenvalues](MapofEigenvalues.pdf)"
## Matrix World

- Available in PDF "[MatrixWorld](MatrixWorld.pdf)"
================================================
FILE: The-Art-of-Linear-Algebra-j.tex
================================================
\documentclass[letterpaper]{article}
\usepackage{typearea}
\typearea{12}
\usepackage{here}
\usepackage{bm}
\usepackage{amsmath, amsfonts}
\usepackage[top=20truemm,bottom=20truemm,left=25truemm,right=25truemm]{geometry}
\usepackage[dvipdfmx]{hyperref,graphicx}
\usepackage{pxjahyper}
% incorporated from Linear Algebra for Everyone 7/18/2022
\newcommand{\bi}[1]{\hbox{\boldmath$#1$}}
\DeclareRobustCommand\transp{^{\mathrm{T}}}
\DeclareMathAlphabet{\cmrv}{OML}{cmm}{b}{it}
\newcommand{\bu}{\hbox{\boldmath$u$}}
\newcommand{\bv}{\hbox{$\cmrv{v}$}}
\newcommand{\bw}{\hbox{\boldmath$w$}}
\newcommand\mat{{\sf MATLAB}}
% prepare to move figures
\graphicspath{ {figs/} }
\begin{document}
% Manual title block with numbered footnotes
\begin{center}
{\LARGE The Art of Linear Algebra\\
\vspace{5pt}
\large{
-- Graphic Notes on ``Linear Algebra for Everyone" --
}
}
\vspace{1.5em}
Kenji Hiranabe\footnote{twitter: @hiranabe, k-hiranabe@esm.co.jp, \url{https://anagileway.com}} \\
with the kindest help of Gilbert Strang\footnote{Massachusetts Institute of Technology, \url{http://www-math.mit.edu/\~gs/}}
\vspace{1em}
September 1, 2021/updated \today
\end{center}
\vspace{1.5em}
\vspace{-5pt}
\begin{abstract}
Gilbert Strang 教授の書籍『Linear Algebra for Everyone』(邦訳『世界標準MIT教科書 ストラング:教養の線形代数』)
\footnote{``Linear Algebra for Everyone":
\url{http://math.mit.edu/everyone/}邦訳『世界標準MIT教科書 ストラング:教養の線形代数』(近代科学社)2023年}
の中で紹介されている重要なコンセプトについて,直感的で視覚的な表現を試みた.
ベクトルと行列の計算とアルゴリズムを,行列の積分解の視点から理解する新しい教育教材となることを目的としている.
ここで紹介する列・行分解には,($\bm{CR}$)ガウスの消去法($\bm{LU}$),
グラム・シュミットの直交化($\bm{QR}$),対称行列の固有値と対角化($\bm{Q \Lambda Q\transp}$),
特異値分解($\bm{U \Sigma V\transp}$)の5分解が含まれる.
なお,本記事を含む図版は以下の GitHub レポジトリから取得できる.\url{https://github.com/kenjihiranabe/The-Art-of-Linear-Algebra/}.
\end{abstract}
\section*{Preface}
Kenji Hiranabe による行列操作の図解は,線形代数を理解するのに大変優れた手法である.
初学者は行列の積を「行と列の内積」のように最初理解するが,
見方はそれだけではない.「線形結合」や「ランク1行列」によって線形代数のさらなる理解が深まる.
日本語版にこの図解が掲載されることを嬉しく思う.
\begin{flushright}
-- Gilbert Strang \\ Professor of Mathematics at MIT
\end{flushright}
\tableofcontents
\section{行列の見方 -- 4つ}
まず,行列演算の基礎的な事項から確認して,本記事の視覚的文法に慣れてもらおう.
$m \times n$行列には,「$1$ つの行列」,「$mn$ 個のスカラー」,「$n$ 本の列ベクトル」,「$m$ 本の行ベクトル」
の4つの見方がある.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{ViewingMatrix-4Ways-j.eps}\\
\caption{行列の見方 -- 4 つ}
\end{figure}
\begin{equation*}
A= \begin{bmatrix}
a_{11} & a_{12}\\
a_{21} & a_{22}\\
a_{31} & a_{32}
\end{bmatrix}
=
\begin{bmatrix}
| & |\\
\bm{a_1} & \bm{a_2}\\
| & |
\end{bmatrix}
=
\begin{bmatrix}
- \bm{a_1^*} -\\
- \bm{a_2^*} -\\
- \bm{a_3^*} -
\end{bmatrix}
\end{equation*} \\
この記事では,列ベクトルはボールドで $\bm{a_1}$ と書く.行ベクトルは,$\bm{*}$ を肩につけて $\bm{a_1^*}$ と書く.
転置されたベクトルと行列は,$\transp$ を肩に配置して,それぞれ $\bm{a}\transp, A\transp$ と書く.
\section{2つのベクトルの積}
さて,ここからは書籍『世界標準MIT教科書 ストラング:教養の線形代数』の当該箇所
(以下のように節番号を入れている)を指しながら,
そこで紹介されるコンセプトを紹介していく.詳細は本を見ていただくのがよいが,
できるだけこの記事のみでも理解できるように短い解説を加えた.また,
各図解には,v1(ベクトル同士の積の1番),Mv1(行列とベクトルの積の1番)
のような短い名前が付いており,下の (v1) のようにグレイの丸で囲って示した.この名前は議論が展開する中で相互参照される.
\begin{itemize}
\item 1.1 節 ベクトルの線形結合
\item 1.3 節 行列と列空間 --- ランク1の行列
\item 1.4 節 行の列積と $A=CR$ \; --- 行方式と列方式
\end{itemize}
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{VectorTimesVector-j.eps}
\caption{2つのベクトルの積 - (v1), (v2)}
\end{figure}
(v1) は基本的な積で,2つのベクトルからスカラーを作る内積と呼ばれる操作だ.
ところが,(v2) のパターンのように行と列を逆順に掛けることもできる(書籍ではこれを外積と呼ぶ).
結果は行列になる.この行列のランクが1であることが分かるだろうか.各行は1行目のスカラー倍になっている(列も同じく).
\section{行列とベクトルの積 -- 2つの見方}
行列とベクトルの積の結果,新しいベクトルが作られる.これを理解するには2通りの見方がある.
1つ1つの成分を,$A$の行ベクトルと列ベクトル$\bm{x}$の内積とする見方(Mv1).
もう1つは,$\bm{x}$を成分ごとにバラして,$A$の列ベクトルの「線形結合」とする見方(Mv2)である.
\begin{itemize}
\item 1.1節 ベクトルの線形結合
\item 1.3節 行列と列空間
\end{itemize}
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{MatrixTimesVector-j.eps}
\caption{行列とベクトルの積 - (Mv1), (Mv2)}
\end{figure}
初学時は,(Mv1) で積を理解するだろう.しかし,もうひとつの見方 (Mv2) に慣れることで線形代数の理解は
飛躍的に向上する.この見方を使えば,すべての $\bm{x}$ で作られる $A\bm{x}$ によって $A$ の列の線型結合全体が表現されることが分かる.
この積によって生成される部分空間は$A$の列空間と呼ばれ,$\mathbf{C}(A)$ と記述される.
また,$A\bm{x}=\bm{0}$ の解全体となる部分空間は$A$の零空間と呼ばれ,$\mathbf{N}(A)$ と記述される.
零空間を理解するには,(Mv1)の右辺を$\bm{0}$とする.$A$の各行と$\bm{x}$の内積がすべて $0$ すなわち,行空間と直交する空間である.
同様に,(vM1) と (vM2) によって,行ベクトルと行列の積も捉えることができる.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{VectorTimesMatrix-j.eps}
\caption{ベクチョルと行列の積 - (vM1), (vM2)}
\end{figure}
(vM2)の積によって生成される部分空間(を列ベクトルにしたもの)は,$A$の行空間と呼ばれ,$\mathbf{C}(A\transp)$ と記述される.
また,$\bm{y}A=0$ ($A\transp \bm{y}\transp=0$)の解全体となる部分空間(を列ベクトルにしたもの)は
$A$の左零空間と呼ばれ,$\mathbf{N}(A\transp)$ と記述される.(vM1)の右辺を$\bm{0}$とすることによって,
列空間と直交する空間であることが分かる.
本書の最初のハイライトである「4つの基本部分空間」は, $\mathbb{R}^n$ を2つの直交する部分空間で直和分解する
$\mathbf{N}(A)$ + $\mathbf{C}(A\transp)$ と,$\mathbb{R}^m$を2つの直交する部分空間で直和分解する
$\mathbf{N}(A\transp)$ + $\mathbf{C}(A)$ からなる.
\begin{itemize}
\item 3.5節 4つの基本部分空間の次元
\end{itemize}
\begin{figure}[H]
\centering
\includegraphics[width=8cm]{4-Subspaces-j.eps}
\caption{4つの基本部分空間}
\end{figure}
ランクについては,行ランクと列ランクが等しいことを示す $A=CR$ 分解(6.1)参照.
\section{2つの行列の積 -- 4 つの見方}
前の「行列とベクトルの積」から,自然に「行列と行列の積」が導かれる.
\begin{itemize}
\item 1.4 節 行列の積と $A=CR$ \; --- 積 $AB=C$ の4つの見方
\item 裏表紙の図も参照
\end{itemize}
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{MatrixTimesMatrix-j.eps}
\caption{2つの行列の積 - (MM1), (MM2), (MM3), (MM4)}
\end{figure}
\section{実用的なパターン}
ここでは,前章の知識を前提として,実用的なパターンを導入する.これによって,
後半の行列の分解をより直感的に理解できるようになる.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{Pattern12-j.eps}
\caption{パターン 1, 2 - (P1), (P1)}
\end{figure}
(P1)は(MM2)と(Mv2)の組み合わせである.
(P2)は(MM3)と(vM2)の組み合わせである.パターン1が列基本変形(変換行列を右から掛ける),
(P2)が行基本変形(変換行列を左から掛ける)に対応している.
このよく出てくる応用として,次のパターン(P1'), (P2')がある.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{Pattern11-22-j.eps}
\caption{パターン 1$^\prime$, 2$^\prime$ - (P1$^\prime$), (P2$^\prime$)}
\end{figure}
(P1$^\prime$) では,行列の列に対角のスカラーが掛け算される.一方,
(P2$^\prime$) では,行列の行に対角のスカラーが掛け算される.この2つのパターンは,(P1)と(P2)から派生したものだ.
\begin{figure}[H]
\centering
\includegraphics[scale=0.85]{Pattern3-j.eps}
\caption{パターン 3 - (P3)}
\end{figure}
このパターンは,線形微分方程式や漸化式に対応して頻出する.$XD\bi{c}$ はそれぞれ「解の基底を列ベクトルとする行列」,
「固有値を対角成分に含む対角行列」,「初期値の固有ベクトル方向成分の列ベクトル」である.
\begin{itemize}
\item 6章 固有値と固有ベクトル
\item 6.4節 微分方程式への応用
\end{itemize}
\begin{align*}
\frac{d \bm{u}(t) }{dt} &= A \bm{u}(t), \quad \bm{u}(0) =\bm{u}_0\\
\bm{u}_{n+1} &= A \bm{u}_n, \quad \bm{u_0} = \bm{u}_0
\end{align*}
両方の式において,解は $A$ の固有値 ($\lambda_1, \lambda_2, \lambda_3$) と固有ベクトル
$X=\begin{bmatrix} \bm{x}_1 & \bm{x}_2 & \bm{x}_3 \end{bmatrix}$,および,初期値
$\bm{u}(0)=\bm{u}_0$ で決定される係数$\bm{c}=(c_1, c_2, c_3)$ によって表現することができる.
$\bm{c}$は $X$ を基底としたときの初期値 $\bm{u}_0$ の成分(座標)である.
\begin{equation*}
\bm{u}_0 = c_1 \bm{x}_1 + c_2 \bm{x}_2 + c_3 \bm{x}_3
\end{equation*}
\begin{equation*}
\bm{c} =
\begin{bmatrix}
c_1\\
c_2\\
c_3
\end{bmatrix} = X^{-1} \bm{u}_0
\end{equation*}
微分方程式と漸化式の解は,以下のように簡潔に表現できる.
\begin{align*}
\bm{u}(t) &= e^{At} \bm{u}_0 = X e^{\Lambda t} X^{-1} \bm{u_0} &= X e^{\Lambda t} \bm{c} &= c_1 e^{\lambda_1 t} \bm{x}_1 + c_2 e^{\lambda_2 t} \bm{x}_2 + c_3 e^{\lambda_3 t} \bm{x}_3\\
\bm{u}_n &= A^n \bm{u}_0 = X \Lambda^n X^{-1} \bm{u_0} &= X \Lambda^n \bm{c} &= c_1 \lambda_1^n \bm{x}_1 + c_2 \lambda_2^n \bm{x}_2 + c_3 \lambda_3^n \bm{x}_3
\end{align*}
$XDc$ を理解するために,Figure 9 のパターン3(P3) を再度見よ.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{Pattern4-j.eps}
\caption{パターン 4 - (P4)}
\end{figure}
このパターン(P4) は,固有値分解と特異値分解(SVD)の両方で役に立つ.
これらの行列分解は,「対角行列を中央に挟んだ3つの行列の積」として表現されるとともに,
「固有値や特異値を係数とするランク1行列の和」としても表現できる.
行列の分解については次の節でより詳しく解説する.
\clearpage
\section{5つの行列分解}
\begin{itemize}
\item 序文 -- 本書のロードマップ
\end{itemize}
$A=CR, A=LU, A=QR, A=Q \Lambda Q\transp, A=U \Sigma V\transp$ の5分解を図解しよう.
\begin{table}[h]
\begin{tabular}{lll}
\Large{\boldmath $A=CR$} & \includegraphics{A_CR.eps} &
\begin{tabular}{l}
独立列行列 $C$ と行簡約行列 $R$ の積\\行ランク $=$ 列ランクを示す
\end{tabular}\\
\Large{\boldmath $A=LU$} & \includegraphics{A_LU.eps} &
\begin{tabular}{l}
LU分解 $=$ ガウスの消去法\\下三角行列 $L$ と上三角行列 $U$
\end{tabular}\\
\Large{\boldmath $A=QR$} & \includegraphics{A_QR.eps} &
\begin{tabular}{l}
QR分解 $=$ グラム・シュミットの直交化\\直交行列 $Q$ と三角行列 $R$
\end{tabular}\\
\Large{\boldmath $S=Q\Lambda Q\transp$} & \includegraphics{A_QLQT.eps} &
\begin{tabular}{l}
対称行列 $S$ の固有値分解\\固有ベクトル行列 $Q$ と固有値行列 $\Lambda$
\end{tabular}\\
\Large{\boldmath $A=U\Sigma V\transp$} & \includegraphics{A_USVT.eps} &
\begin{tabular}{l}
どんな長方行列 $A$ にも使える特異値分解\\特異値行列 $\Sigma$
\end{tabular}
\end{tabular}
\caption{5つの行列分解}
\end{table}
% \begin{figure}[H]
% \centering
% \includegraphics[scale=0.8]{5-Factorizations-j.eps}
% \caption{5つの行列分解}
% \end{figure}
\subsection{$\boldsymbol{A=CR}$}
\begin{itemize}
\item 1.4 行列の積と $A=CR$
\item 付録:$CR$ 分解
\end{itemize}
長方形行列を含む一般の行列 $A$ の行ランクと列ランクは等しい.
$A=CR$ 分解は,この定理をもっとも直感的に示すことができる.
$C$ は$A$の線形独立な列のみからなり,$R$ は $A$の行簡約階段行列(から0のみの行を除いたもの)である.
$A=CR$ によって,$A$ は $r$本の線形独立な列$C$と$r$本の線形独立な行$R$の積に分解される.
\begin{equation*}
\begin{split}
A &= CR\\
\begin{bmatrix}
1 & 2 & 3 \\
2 & 3 & 5
\end{bmatrix}
& =
\begin{bmatrix}
1 & 2 \\
2 & 3
\end{bmatrix}
\begin{bmatrix}
1 & 0 & 1 \\
0 & 1 & 1
\end{bmatrix}
\end{split}
\end{equation*}
左から右へと $A$の列を見ていく.これまでに現れた列と線形独立なものを$C$に入れ,他は捨てる.
第1列と第2列は生き残り,第3列は捨てられる(第1列と第2列の和になっている).
$A$ の各列を再生するには,$C$ の各列を組み合わせる.その組み合わせ係数が $R$ の各列に成分として表記されている.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{CR1-j.eps}
\caption{$CR$の列ランク}
\end{figure}
$C$の列数が2であるから,列ランクが2である.すなわち,$A$のすべての列は$C$の列の線型結合である.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{CR2-j.eps}
\caption{$CR$の行ランク}
\end{figure}
$R$の行数が2であるから,行ランクも2である.すなわち,$A$ のすべての行は$R$の行の線型結合である.
\subsection{$\boldsymbol{A=LU}$}
ガウスの消去法によって $A\bm{x}=\bm{b}$ を解く.この過程は $LU$ 分解として表現される.
通常,行基本変形行列($E$)を$A$の左から掛けることによって変形し,上三角行列 $U$ を導く.
\begin{align*}
EA &= U\\
A &= E^{-1}U\\
L = E^{-1} \text{として} \; , \quad A &= LU
\end{align*}
すなわち,$A\bm{x}=\bm{b}$ を2ステップで解いている.ステップ1で前進消去 $L\bm{c}=\bm{b}$,ステップ2で後退代入 $U\bm{x}=\bm{c}$ である.
\begin{itemize}
\item 2.3節 行列計算と $\bm{A=LU}$
\end{itemize}
ここでは,$A$から直接 $L$ と $U$ を計算する.
\begin{equation*}
A =
\begin{bmatrix}
|\\
\bm{l}_1\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{u}^*_1 -
\end{bmatrix}
+ \begin{bmatrix}
0 & \begin{matrix} 0 & 0 \end{matrix}\\
\begin{matrix} 0 \\ 0 \end{matrix} & A_2
\end{bmatrix}
=
\begin{bmatrix}
|\\
\bm{l}_1\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{u}^*_1 -
\end{bmatrix}
+
\begin{bmatrix}
|\\
\bm{l}_2\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{u}^*_2 -
\end{bmatrix}
+ \begin{bmatrix}
0 & 0 & 0\\
0 & 0 & 0 \\
0 & 0 & A_3
\end{bmatrix} = LU
\end{equation*}
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{LU1-j.eps}
\caption{再帰的なランク1行列の「皮むき」}
\end{figure}
$L$と$U$を計算するために,まず,$A$の第1行と第1列の外積によって作られるランク1行列の皮をむく.
このランク1行列を $A$ から引き去った残りが $A_2$ である.この過程を$A$に再帰的に適用し,1つずつ
ランク1行列を抜き出していく.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{LU2-j.eps}
\caption{$LU$ から $A$ を再生}
\end{figure}
$LU$ から $A$ を再生するプロセスは,より簡単だ.
\subsection{$\boldsymbol{A=QR}$}
$A=QR$ は $A$ の列を直交行列に変換して $Q$ に格納する.
2つの列空間 $\bm{C}(A) = \bm{C}(Q)$ の関係を維持したまま,この変換を行う.
\begin{itemize}
\item 4.4節 直交行列とグラム・シュミットの直交化
\end{itemize}
グラム・シュミットの直交化では,$\bm{a}_1$ を正規化したベクトル $\bm{q}_1$ がまず選ばれ,
次に,$\bm{a}_2$ を $\bm{q}_1$ との直交成分のみ残して正規化し,それを $\bm{q}_2$ とする.
このプロセスを順に続けていく.
\begin{align*}
\bm{q}_1 &= \bm{a}_1/||\bm{a}_1|| \\
\bm{q}_2 &= \bm{a}_2 - (\bm{q}_1\transp \bm{a}_2)\bm{q}_1 , \quad \bm{q}_2 = \bm{q}_2/||\bm{q}_2|| \\
\bm{q}_3 &= \bm{a}_3 - (\bm{q}_1\transp \bm{a}_3)\bm{q}_1 - (\bm{q}_2\transp \bm{a}_3)\bm{q}_2, \quad \bm{q}_3 = \bm{q}_3/||\bm{q}_3||
\end{align*}
あるいは,$\bm{a}$ を左辺に移動して $r_{ij} = \bm{q}_i\transp \bm{a}_j$ とすると,以下のように記述できる.
\begin{align*}
\bm{a}_1 &= r_{11}\bm{q}_1\\
\bm{a}_2 &= r_{12}\bm{q}_1 + r_{22} \bm{q}_2\\
\bm{a}_3 &= r_{13}\bm{q}_1 + r_{23} \bm{q}_2 + r_{33} \bm{q}_3
\end{align*}
オリジナルの$A$は,直交行列$Q$と上三角行列$R$の積に分解される.
\begin{gather*}
A =
\begin{bmatrix}
| & | & |\\
\bm{q}_1 & \bm{q}_2 & \bm{q}_3\\
| & | & |
\end{bmatrix}
\begin{bmatrix}
r_{11} & r_{12} & r_{13}\\
& r_{22} & r_{23}\\
& & r_{33}
\end{bmatrix} = QR\\
\\
Q Q\transp=Q\transp Q = I
\end{gather*}
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{QR-j.eps}
\caption{$A=QR$}
\end{figure}
$A$ の列ベクトルは,正規直行化された $Q$ の列ベクトルへと変換される.
$A$ の列ベクトルを再生するには,$Q$ と $R$ の掛け算を考えれば簡単である.
ここで,パターン1 (P1) を再度見て視覚的に理解して欲しい.
\subsection{$\boldsymbol{S=Q \Lambda Q\transp}$}
実数成分からなる対称行列 $S$ は,必ず実数固有値と直交する固有ベクトルを持つことが知られている.
この分解で,固有値は$\Lambda$ の対角成分に並び,固有ベクトルは $Q$ の列に配置される.
\begin{itemize}
\item 6.3節 正定値対称行列
\end{itemize}
\begin{align*}
S = Q \Lambda Q\transp
&= \begin{bmatrix}
| & | & |\\
\bm{q}_1 & \bm{q}_2 & \bm{q}_3\\
| & | & |
\end{bmatrix}
\begin{bmatrix}
\lambda_1 \\
& \lambda_2 & \\
& & \lambda_3
\end{bmatrix}
\begin{bmatrix}
- \bm{q}_1\transp -\\
- \bm{q}_2\transp -\\
- \bm{q}_3\transp -
\end{bmatrix}\\
\\
&=
\lambda_1 \begin{bmatrix}
|\\
\bm{q}_1\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{q}_1\transp -
\end{bmatrix}
+
\lambda_2 \begin{bmatrix}
|\\
\bm{q}_2\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{q}_2\transp -
\end{bmatrix}
+
\lambda_3 \begin{bmatrix}
|\\
\bm{q}_3 \\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{q}_3\transp -
\end{bmatrix} \\
&= \lambda_1 P_1 + \lambda_2 P_2 + \lambda_3 P_3
\end{align*}
\begin{equation*}
P_1=\bm{q}_1 \bm{q}_1\transp, \quad P_2=\bm{q}_2 \bm{q}_2\transp, \quad P_3=\bm{q}_3 \bm{q}_3\transp
\end{equation*}
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{EVD-j.eps}
\caption{$S=Q \Lambda Q\transp$}
\end{figure}
対称行列 $S$ は,固有値対角行列 $\lambda$ と直交行列 $Q$ の積に分解される.
さらに,ランク1の射影行列 $P=\bm{q}\bm{q}\transp$ の線形結合の和としても分解される.
これが「スペクトル定理」である.
\begin{gather*}
S=S\transp = \lambda_1 P_1 + \lambda_2 P_2 + \lambda_3 P_3\\
QQ\transp = P_1 + P_2 + P_3 = I \\
P_1 P_2 = P_2 P_3 = P_3 P_1 = O\\
P_1^2 =P_1=P_1\transp, \quad P_2^2=P_2=P_2\transp, \quad P_3^2=P_3=P_3\transp
\end{gather*}
\subsection{$\boldsymbol{A=U \Sigma V\transp}$}
\begin{itemize}
\item 7.1節 特異値分解
\end{itemize}
長方行列を含むすべての行列は,特異値分解(SVD)することができる.
$A=U \Sigma V\transp$ という分解によって,$A$ の左右の特異ベクトルが $U, V$ の列に並び,
対応する特異値は対角行列 $\Sigma$ の対角成分に並ぶ.以下は,簡約形のSVDである.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{SVD-j.eps}
\caption{$A=U \Sigma V\transp$}
\end{figure}
$V$ は $\mathbb{R}^n$ の正規直交基底($A\transp A$ の固有ベクトル)であり,
$U$ は $\mathbb{R}^m$ の正規直交基底($AA\transp$ の固有ベクトル)である.
これら2つの基底によって,$A$ は $\Sigma$ へと対角化される.また,
これを展開すると「ランク1行列の線型結合」としても表現できる.
\begin{align*}
A = U \Sigma V\transp =
\begin{bmatrix}
| & | & |\\
\bm{u}_1 & \bm{u}_2 & \bm{u}_3\\
| & | & |
\end{bmatrix}
\begin{bmatrix}
\sigma_1 \\
& \sigma_2 \\
& &
\end{bmatrix}
\begin{bmatrix}
- \bm{v}_1\transp -\\
- \bm{v}_2\transp -
\end{bmatrix}
& =
\sigma_1 \begin{bmatrix}
|\\
\bm{u}_1\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{v}_1\transp -
\end{bmatrix}
+
\sigma_2 \begin{bmatrix}
|\\
\bm{u}_2\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{v}_2\transp -
\end{bmatrix} \\
& = \sigma_1 \bm{u}_1 \bm{v}_1\transp + \sigma_2 \bm{u}_2 \bm{v}_2\transp
\end{align*}
ここで,以下の関係に注意する.
\begin{align*}
U U\transp &= I_m \\
V V\transp &= I_n
\end{align*}
この視覚的表現として,パターン4 (P4) を参照して欲しい.
\section*{まとめと謝辞}
この小記事では,初学者が混乱しやすい行列とベクトル演算について,システマティックな視覚表現を試みた.
また,それらを利用して「5つの行列分解」の視覚的理解へ適用した.楽しく読んで頂けたら嬉しいし,
これを自身の線形代数の理解や,教育に利用してもらいたい(大学や教育機関で使ってもらえることを想定している).
グラフィックスは gitHub 上に,Creative Commons Zero v1.0 Universal ライセンスで公開してあり,
.pptx や .eps のフォーマットでも活用できる\footnote{https://github.com/kenjihiranabe/The-Art-of-Linear-Algebra/}.
Ashley Fernandes から本記事のフォーマットを美しくするプロフェッショナルなアドバイスを頂いた.
また,``Linear Algebra for Everyone"(邦訳『世界標準MIT教科書 ストラング:教養としての線形代数』) の著者である Gilbert Strang 教授は,
線形代数の新しい教育方法をビデオや本で展開しており,
各コンセプトの直感的な把握によって工学部やデータサイエンスでの実用性を重視したコンテンツを多く手がけている.
記事の細部に渡りアドバイスを頂いた教授に感謝する.
\section*{参考文献と関連記事}
\begin{enumerate}
\item
Gilbert Strang(2020),\emph{Linear Algebra for Everyone}, Wellesley Cambridge Press.,\\
『世界標準MIT教科書 ストラング:教養としての線形代数』(近代科学社)2023年,\\
\url{http://math.mit.edu/everyone},\\
\url{https://www.kindaikagaku.co.jp/book_list/detail/9784764906457}
\item
Gilbert Strang(2016), \emph{Introduction to Linear Algebra},Wellesley Cambridge Press, 6th ed.,\\
『世界標準MIT教科書 ストラング:線形代数イントロダクション(日本語は第4版)』(近代科学社),\\
\url{http://math.mit.edu/linearalgebra}
\item Kenji Hiranabe(2021), \emph{Map of Eigenvalues}, Slidedeck,\\
\url{https://github.com/kenjihiranabe/The-Art-of-Linear-Algebra/blob/main/MapofEigenvalues.pdf}\\
\begin{figure}[H]
\includegraphics[keepaspectratio, width=\linewidth]{MapofEigenvalues-j.eps}
\caption{固有値の地図}
\end{figure}
\item Kenji Hiranabe(2020), \emph{Matrix World}, Slidedeck,\\
\url{https://github.com/kenjihiranabe/The-Art-of-Linear-Algebra/blob/main/MatrixWorld.pdf}\\
\begin{figure}[H]
\centering
\includegraphics[keepaspectratio, width=\linewidth]{MatrixWorld-j.eps}
\caption{Matrix World}
\end{figure}
\item Gilbert Strang, artwork by Kenji Hiranabe, \emph{The Four Subspaces and the solutions to $A\bm{x}=\bm{b}$}\\
\begin{figure}[H]
\centering
\includegraphics[scale=0.6]{TheFourSubspaces.eps}
\caption{4つの部分空間と$A\bm{x}=\bm{b}$ の解}
\end{figure}
\item Kenji Hiranabe, \emph{ストラング先生から学んだ線形代数}, Qiita(blog),\\
\url{https://qiita.com/kenjihiranabe/items/bfa9cd68bb355afc56b7}
\end{enumerate}
\end{document}
================================================
FILE: The-Art-of-Linear-Algebra-zh-CN.tex
================================================
\documentclass[letterpaper]{article}
\usepackage{typearea}
\typearea{12}
\usepackage{here}
\usepackage{bm}
\usepackage{amsmath, amsfonts}
\usepackage[top=20truemm,bottom=20truemm,left=25truemm,right=25truemm]{geometry}
\usepackage[dvipdfmx]{hyperref,graphicx}
\usepackage{xeCJK}
% incorporated from Linear Algebra for Everyone 7/18/2022
\newcommand{\bi}[1]{\hbox{\boldmath$#1$}}
\DeclareRobustCommand\transp{^{\mathrm{T}}}
\DeclareMathAlphabet{\cmrv}{OML}{cmm}{b}{it}
\newcommand{\bu}{\hbox{\boldmath$u$}}
\newcommand{\bv}{\hbox{$\cmrv{v}$}}
\newcommand{\bw}{\hbox{\boldmath$w$}}
\newcommand\mat{{\sf MATLAB}}
%
% prepare to move figures
\graphicspath{ {figs/} }
\begin{document}
\title{The Art of Linear Algebra\\
\vspace{5pt}
\large{
-- Graphic Notes on ``Linear Algebra for Everyone" --
}
}
\author{Kenji Hiranabe
\thanks{twitter: @hiranabe, k-hiranabe@esm.co.jp, \url{https://anagileway.com}} \\
with the kindest help of Gilbert Strang
\thanks{Massachusetts Institute of Technology, \url{http://www-math.mit.edu/\~gs/}} \\
translator: Kefang Liu
\thanks{twitter: \href{https://twitter.com/KFChLiu}{@kfchliu}, 微博用户: \href{https://weibo.com/u/5717297833}{5717297833}}
}
\date{September 1, 2021/updated \today}
\maketitle
\vspace{-5pt}
\begin{abstract}
我尝试为 Gilbert Strang 在书籍 “Linear Algebra for Everyone” 中介绍的矩阵的重要概念进行可视化图释,
以促进从矩阵分解的角度对向量、矩阵计算和算法的理解.
\footnote{``Linear Algebra for Everyone":
\url{http://math.mit.edu/everyone/}.}
它们包括矩阵分解 (Column-Row, $\bm{CR}$)、
高斯消去法 (Gaussian Elimination, $\bm{LU}$)、
格拉姆-施密特正交化 (Gram-Schmidt Orthogonalization, $\bm{QR}$)、
特征值和对角化 (Eigenvalues and Diagonalization, $\bm{Q \Lambda Q\transp}$)、
和奇异值分解 (Singular Value Decomposition, $\bm{U \Sigma V\transp}$).
\end{abstract}
\section*{序言}
我很高兴能看到 Kenji Hiranabe 的线性代数中的矩阵运算的图片!
这样的图片是展示代数的绝佳方式. 我们当然可以通过 行 $\bm{\cdot}$ 列 的点乘来想象矩阵乘法,
但那绝非全部 —— 它是``线性组合"与``秩1矩阵"组成的代数与艺术.
我很感激能看到日文翻译的书籍和 Kenji 的图片中的想法.
\begin{flushright}
-- Gilbert Strang \\ 麻省理工学院数学教授
\end{flushright}
\tableofcontents
\section{理解矩阵——4个视角}
一个矩阵 ($m \times n$) 可以被视为$1$个矩阵, $mn$个数, $n$个列和$m$个行.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{ViewingMatrix-4Ways.eps}\\
\caption{从四个角度理解矩阵}
\end{figure}
\begin{equation*}
A= \begin{bmatrix}
a_{11} & a_{12}\\
a_{21} & a_{22}\\
a_{31} & a_{32}
\end{bmatrix}
=
\begin{bmatrix}
| & |\\
\bm{a_1} & \bm{a_2}\\
| & |
\end{bmatrix}
=
\begin{bmatrix}
- \bm{a_1^*} -\\
- \bm{a_2^*} -\\
- \bm{a_3^*} -
\end{bmatrix}
\end{equation*} \\
在这里, 列向量被标记为粗体$\bm{a_1}$.
行向量则有一个$\bm{*}$号, 标记为$\bm{a_1^*}$.
转置向量和矩阵则用$\mathrm{T}$标记为
$\bm{a}\transp$和$A\transp$.
\section{向量乘以向量——2个视角}
后文中, 我将介绍一些概念, 同时列出“Linear Algebra for Everyone”一书中的相应部分 (部分编号插入如下).
详细的内容最好看书, 这里我也添加了一个简短的解释, 以便您可以通过这篇文章尽可能多地理解.
此外, 每个图都有一个简短的名称, 例如 v1 (数字 1 表示向量的乘积)、Mv1 (数字 1 表示矩阵和向量的乘积), 以及如下图 (v1) 所示的彩色圆圈.
如你所见, 随着讨论的进行, 该名称将被交叉引用.
\begin{itemize}
\item 1.1节 (p.2) Linear combination and dot products
\item 1.3节 (p.25) Matrix of Rank One
\item 1.4节 (p.29) Row way and column way
\end{itemize}
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{VectorTimesVector.eps}
\caption{向量乘以向量 - (v1), (v2)}
\end{figure}
(v1) 是两个向量之间的基础运算, 而 (v2) 将列乘以行并产生一个秩1矩阵.
理解 (v2) 的结果 (秩1) 是接下来章节的关键.
\section{矩阵乘以向量——2个视角}
一个矩阵乘以一个向量将产生三个点积组成的向量 (Mv1) 和
一种$A$的列向量的线性组合.
\begin{itemize}
\item 1.1节 (p.3) Linear combinations
\item 1.3节 (p.21) Matrices and Column Spaces
\end{itemize}
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{MatrixTimesVector.eps}
\caption{矩阵乘以向量- (Mv1), (Mv2)}
\end{figure}
往往你会先学习 (Mv1). 但当你习惯了从 (Mv2) 的视角看待它, 会理解$A\bm{x}$是$A$的列的线性组合.
矩阵$A$的列向量的所有线性组合生成的子空间记为$\mathbf{C}(A)$.
$A\bm{x}=\bm{0}$的解空间则是零空间, 记为$\mathbf{N}(A)$.
同理, 由 (vM1) 和 (vM2) 可见, 行向量乘以矩阵也是同一种理解方式.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{VectorTimesMatrix.eps}
\caption{向量乘以矩阵 - (vM1), (vM2)}
\end{figure}
上图$A$的行向量的所有线性组合生成的子空间记为$\mathbf{C}(A\transp)$.
$yA=0$的解空间是$A$的左零空间, 记为 $\mathbf{N}(A\transp)$.
本书的一大亮点即为四个基本子空间: 在$\mathbb{R}^n$ 上的
$\mathbf{N}(A)$ + $\mathbf{C}(A\transp)$ (相互正交)
和在$\mathbb{R}^m$ 上的$\mathbf{N}(A\transp)$ + $\mathbf{C}(A)$ (相互正交).
\begin{itemize}
\item 3.5节 (p.124) Dimensions of the Four Subspaces
\end{itemize}
\begin{figure}[H]
\centering
\includegraphics[keepaspectratio, width=8cm]{4-Subspaces.eps}
\caption{四个子空间}
\end{figure}
关于秩$r$, 请见$A=CR$ (6.1节) .
\section{矩阵乘以矩阵——4个视角}
由``矩阵乘以向量"自然延伸到``矩阵乘以矩阵".
\begin{itemize}
\item 1.4节 (p.35) Four ways to multiply $\bm{AB=C}$
\item 也可以见书的封底
\end{itemize}
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{MatrixTimesMatrix.eps}
\caption{矩阵乘以矩阵 - (MM1), (MM2), (MM3), (MM4)}
\end{figure}
\section{实用模式}
在这里, 我展示了一些实用的模式, 可以让你更直观地理解接下来的内容。
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{Pattern12.eps}
\caption{图 1, 2 - (P1), (P1)}
\end{figure}
P1 是 (MM2) 和 (Mv2) 的结合.
P2 是 (MM3) 和 (vM2) 的扩展.
注意, P1 是列运算 (右乘一个矩阵),
而 P2 是行运算 (左乘一个矩阵).
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{Pattern11-22.eps}
\caption{图 1$^\prime$, 2$^\prime$ - (P1$^\prime$), (P2$^\prime$)}
\end{figure}
(P1$^\prime$) 将对角线上的数乘以矩阵的列,
而 (P2$^\prime$) 将对角线上的数乘以矩阵的行.
两个分别为 (P1) 和 (P2) 的变体.
\begin{figure}[H]
\centering
\includegraphics[scale=0.85]{Pattern3.eps}
\caption{图 3 - (P3)}\label{fig:P3}
\end{figure}
当解决微分方程和递归方程时的也会出现这一模式:
\begin{itemize}
\item 6节 (p.201) Eigenvalues and Eigenvectors
\item 6.4节 (p.243) Systems of Differential Equations
\end{itemize}
\begin{align*}
\frac{d \bm{u}(t) }{dt} &= A \bm{u}(t), \quad \bm{u}(0)=\bm{u}_0\\
\bm{u}_{n+1} &= A \bm{u}_n, \quad \bm{u_0} = \bm{u}_0
\end{align*}
在两种问题中, 它的解都可以用$A$的特征值($\lambda_1, \lambda_2, \lambda_3$)、
特征向量$X=\begin{bmatrix} \bm{x}_1 & \bm{x}_2 & \bm{x}_3 \end{bmatrix}$
和系数$c=\begin{bmatrix} c_1 & c_2 & c_3 \end{bmatrix}\transp$表示.
其中$C$是以$X$为基底的初始值$\bm{u}(0)=\bm{u}_0$的坐标.
\begin{equation*}
\bm{u}_0 = c_1 \bm{x}_1 + c_2 \bm{x}_2 + c_3 \bm{x}_3
\end{equation*}
\begin{equation*}
\bm{c} =
\begin{bmatrix}
c_1\\
c_2\\
c_3
\end{bmatrix} = X^{-1} \bm{u}_0
\end{equation*}
以上两个问题的通解为:
\begin{align*}
\bm{u}(t) &= e^{At} \bm{u}_0 = X e^{\Lambda t} X^{-1} \bm{u_0} &= X e^{\Lambda t} \bm{c} &= c_1 e^{\lambda_1 t} \bm{x}_1 + c_2 e^{\lambda_2 t} \bm{x}_2 + c_3 e^{\lambda_3 t} \bm{x}_3\\
\bm{u}_n &= A^n \bm{u}_0 = X \Lambda^n X^{-1} \bm{u_0} &= X \Lambda^n \bm{c} &= c_1 \lambda_1^n \bm{x}_1 + c_2 \lambda_2^n \bm{x}_2 + c_3 \lambda_3^n \bm{x}_3
\end{align*}
见Figure\ref{fig:P3}: 通过P3可以得到$XDc$.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{Pattern4.eps}
\caption{Pattern 4 - (P4)}
\end{figure}
P4在特征值分解和特异值分解中都会用到.
两种分解都可以表示为三个矩阵之积, 其中中间的矩阵均为对角矩阵.
且都可以表示为带特征值/特异值系数的秩1矩阵之积.
更多细节将在下一节中讨论.
\clearpage
\section{矩阵的五种分解}
\begin{itemize}
\item 前言 p.vii, The Plan for the Book.
\end{itemize}
$A=CR, A=LU, A=QR, A=Q \Lambda Q\transp, A=U \Sigma V\transp$ 将一一说明.
\begin{table}[h]
\begin{tabular}{lll}
\Large{\boldmath $A=CR$} & \includegraphics{A_CR.eps} &
\begin{tabular}{l}
$C$为$A$的线性无关列\\
$R$为$A$的行阶梯形矩阵\\
可推知 列秩 = 行秩
\end{tabular}\\
\Large{\boldmath $A=LU$} & \includegraphics{A_LU.eps} &
\begin{tabular}{l}
$LU$分解通过\\
高斯消去法\\
(下三角)(上三角)
\end{tabular}\\
\Large{\boldmath $A=QR$} & \includegraphics{A_QR.eps} &
\begin{tabular}{l}
$QR$分解为\\
格拉姆-施密特正交化中的\\
正交矩阵$Q$和三角矩阵$R$
\end{tabular}\\
\Large{\boldmath $S=Q\Lambda Q\transp$} & \includegraphics{A_QLQT.eps} &
\begin{tabular}{l}
对称矩阵$S$可以进行\\
特征值分解\\
特征向量组成$Q$, 特征值组成$\Lambda$
\end{tabular}\\
\Large{\boldmath $A=U\Sigma V\transp$} & \includegraphics{A_USVT.eps} &
\begin{tabular}{l}
所有矩阵$A$的\\
奇异值分解 \\
奇异值组成$\Sigma$
\end{tabular}
\end{tabular}
\caption{五种分解}
\end{table}
\subsection{$\boldsymbol{A=CR}$}
\begin{itemize}
\item 1.4节 Matrix Multiplication and $\bm{A=CR}$ (p.29)
\end{itemize}
所有一般的长矩阵$A$都有相同的行秩和列秩.
这个分解是理解这一定理最直观的方法.
$C$由$A$的线性无关列组成, $R$为$A$的行阶梯形矩阵 (消除了零行).
$A=CR$将$A$化简为$r$的线性无关列$C$和线性无关行$R$的乘积.
\begin{equation*}
\begin{split}
A &= CR\\
\begin{bmatrix}
1 & 2 & 3 \\
2 & 3 & 5
\end{bmatrix}
& =
\begin{bmatrix}
1 & 2 \\
2 & 3
\end{bmatrix}
\begin{bmatrix}
1 & 0 & 1 \\
0 & 1 & 1
\end{bmatrix}
\end{split}
\end{equation*}
推导过程: 从左往右看$A$的列. 保留其中线性无关的列, 去掉可以由前者线性表出的列.
则第1、2列被保留, 而第三列因为可以由前两列之和表示而被去掉.
而要通过线性无关的1、2两列重新构造出$A$, 需要右乘一个行阶梯矩阵$R$.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{CR1.eps}
\caption{$CR$中列的秩}
\end{figure}
现在你会发现列的秩为2, 因为$C$中只有2个线性无关列.
而$A$中所有的列都可以由$C$中的2列线性表出.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{CR2.eps}
\caption{$CR$中行的秩}
\end{figure}
同样, 行秩也为2, 因为$R$中只有2个线性无关行, 且$A$中所有的行都可以由$R$中的2行线性表出.
\subsection{$\boldsymbol{A=LU}$}
用高斯消除法求解$A\bm{x}=\bm{b}$也被称为$LU$分解.
通常, 是$A$左乘一个初等行变换矩阵($E$)来得到一个上三角矩阵$U$.
\begin{align*}
EA &= U\\
A &= E^{-1}U\\
\text{let} \; L = E^{-1}, \quad A &= LU
\end{align*}
现在, 求解$A\bm{x}=\bm{b}$有2步: (1)求解$L\bm{c}=\bm{b}$, (2)代回$U\bm{x}=\bm{c}$.
\begin{itemize}
\item 2.3节 (p.57) Matrix Computations and $\bm{A=LU}$
\end{itemize}
在这里, 我们直接通过$A$计算$L$和$U$.
\begin{equation*}
A =
\begin{bmatrix}
|\\
\bm{l}_1\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{u}^*_1 -
\end{bmatrix}
+ \begin{bmatrix}
0 & \begin{matrix} 0 & 0 \end{matrix}\\
\begin{matrix} 0 \\ 0 \end{matrix} & A_2
\end{bmatrix}
=
\begin{bmatrix}
|\\
\bm{l}_1\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{u}^*_1 -
\end{bmatrix}
+
\begin{bmatrix}
|\\
\bm{l}_2\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{u}^*_2 -
\end{bmatrix}
+ \begin{bmatrix}
0 & 0 & 0\\
0 & 0 & 0 \\
0 & 0 & A_3
\end{bmatrix} = LU
\end{equation*}
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{LU1.eps}
\caption{$A$的递归秩1矩阵分离}
\end{figure}
要计算$L$和$U$, 首先分离出由$A$的第一行和第一列组成的外积.
余下的部分为$A_2$.
递归执行此操作, 将$A$分解为秩1矩阵之和.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{LU2.eps}
\caption{由$LU$重新构造$A$}
\end{figure}
由$L$乘以$U$来重新构造$A$则相对简单.
\subsection{$\boldsymbol{A=QR}$}
$A=QR$是在保持$\bm{C}(A) = \bm{C}(Q)$的条件下, 将$A$转化为正交矩阵$Q$.
\begin{itemize}
\item 4.4节 Orthogonal matrices and Gram-Schmidt (p.165)
\end{itemize}
在格拉姆-施密特正交化中, 首先, 单位化的$\bm{a}_1$被用作$\bm{q}_1$,
然后求出$\bm{a}_2$与$\bm{q}_1$正交所得到的$\bm{q}_2$, 以此类推.
\begin{align*}
\bm{q}_1 &= \bm{a}_1/||\bm{a}_1|| \\
\bm{q}_2 &= \bm{a}_2 - (\bm{q}_1\transp \bm{a}_2)\bm{q}_1 , \quad \bm{q}_2 = \bm{q}_2/||\bm{q}_2|| \\
\bm{q}_3 &= \bm{a}_3 - (\bm{q}_1\transp \bm{a}_3)\bm{q}_1 - (\bm{q}_2\transp \bm{a}_3)\bm{q}_2, \quad \bm{q}_3 = \bm{q}_3/||\bm{q}_3||
\end{align*}
或者你也可以写作$r_{ij} = \bm{q}_i\transp \bm{a}_j$:
\begin{align*}
\bm{a}_1 &= r_{11}\bm{q}_1\\
\bm{a}_2 &= r_{12}\bm{q}_1 + r_{22} \bm{q}_2\\
\bm{a}_3 &= r_{13}\bm{q}_1 + r_{23} \bm{q}_2 + r_{33} \bm{q}_3
\end{align*}
原本的$A$就可以表示为$QR$: 正交矩阵乘以上三角矩阵.
\begin{gather*}
A =
\begin{bmatrix}
| & | & |\\
\bm{q}_1 & \bm{q}_2 & \bm{q}_3\\
| & | & |
\end{bmatrix}
\begin{bmatrix}
r_{11} & r_{12} & r_{13}\\
& r_{22} & r_{23}\\
& & r_{33}
\end{bmatrix} = QR\\
\\
Q Q\transp=Q\transp Q = I
\end{gather*}
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{QR.eps}
\caption{$A=QR$}
\end{figure}
$A$的列向量就可以转化为一个正交集合: $Q$的列向量.
$A$的每一个列向量都可以用$Q$和上三角矩阵$R$重新构造出.
图释可以回头看P1.
\subsection{$\boldsymbol{S=Q \Lambda Q\transp}$}
所有对称矩阵$S$都必须有实特征值和正交特征向量.
特征值是$\Lambda$的对角元素, 特征向量在$Q$中.
\begin{itemize}
\item 6.3节 (p.227) Symmetric Positive Definite Matrices
\end{itemize}
\begin{align*}
S = Q \Lambda Q\transp
&= \begin{bmatrix}
| & | & |\\
\bm{q}_1 & \bm{q}_2 & \bm{q}_3\\
| & | & |
\end{bmatrix}
\begin{bmatrix}
\lambda_1 \\
& \lambda_2 & \\
& & \lambda_3
\end{bmatrix}
\begin{bmatrix}
- \bm{q}_1\transp -\\
- \bm{q}_2\transp -\\
- \bm{q}_3\transp -
\end{bmatrix}\\
\\
&=
\lambda_1 \begin{bmatrix}
|\\
\bm{q}_1\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{q}_1\transp -
\end{bmatrix}
+
\lambda_2 \begin{bmatrix}
|\\
\bm{q}_2\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{q}_2\transp -
\end{bmatrix}
+
\lambda_3 \begin{bmatrix}
|\\
\bm{q}_3 \\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{q}_3\transp -
\end{bmatrix} \\
&= \lambda_1 P_1 + \lambda_2 P_2 + \lambda_3 P_3
\end{align*}
\begin{equation*}
P_1=\bm{q}_1 \bm{q}_1\transp, \quad P_2=\bm{q}_2 \bm{q}_2\transp, \quad P_3=\bm{q}_3 \bm{q}_3\transp
\end{equation*}
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{EVD.eps}
\caption{$S=Q \Lambda Q\transp$}
\end{figure}
一个对称矩阵$S$通过一个正交矩阵$Q$和它的转置矩阵, 对角化为$\Lambda$.
然后被分解为一阶投影矩阵$P=qq\transp$的组合. 这就是谱定理.
注意, 这里的分解用到了P4.
\begin{gather*}
S=S\transp = \lambda_1 P_1 + \lambda_2 P_2 + \lambda_3 P_3\\
QQ\transp = P_1 + P_2 + P_3 = I \\
P_1 P_2 = P_2 P_3 = P_3 P_1 = O\\
P_1^2 =P_1=P_1\transp, \quad P_2^2=P_2=P_2\transp, \quad P_3^2=P_3=P_3\transp
\end{gather*}
\subsection{$\boldsymbol{A=U \Sigma V\transp}$}
\begin{itemize}
\item 7.1节 (p.259) Singular Values and Singular Vectors
\end{itemize}
包括长方阵在内的所有矩阵都具有奇异值分解(SVD).
$A=U \Sigma V\transp$中, 有$A$的奇异向量$U$和$V$.
奇异值则排列在$\Sigma$的对角线上.
下图就是“简化版”的SVD.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{SVD.eps}
\caption{$A=U \Sigma V\transp$}
\end{figure}
你可以发现, $V$是$\mathbb{R}^n$ ($A\transp A$的特征向量) 的标准正交基,
而$U$是 $\mathbb{R}^m$ ($AA\transp$的特征向量) 的标准正交基.
它们共同将$A$对角化为$\Sigma$.
这也可以表示为秩1矩阵的线性组合.
\begin{align*}
A = U \Sigma V\transp =
\begin{bmatrix}
| & | & |\\
\bm{u}_1 & \bm{u}_2 & \bm{u}_3\\
| & | & |
\end{bmatrix}
\begin{bmatrix}
\sigma_1 \\
& \sigma_2 \\
& &
\end{bmatrix}
\begin{bmatrix}
- \bm{v}_1\transp -\\
- \bm{v}_2\transp -
\end{bmatrix}
& =
\sigma_1 \begin{bmatrix}
|\\
\bm{u}_1\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{v}_1\transp -
\end{bmatrix}
+
\sigma_2 \begin{bmatrix}
|\\
\bm{u}_2\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{v}_2\transp -
\end{bmatrix} \\
& = \sigma_1 \bm{u}_1 \bm{v}_1\transp + \sigma_2 \bm{u}_2 \bm{v}_2\transp
\end{align*}
注意:
\begin{align*}
U U\transp &= I_m \\
V V\transp &= I_n
\end{align*}
图释见P4.
\section*{总结和致谢}
我展示了矩阵/向量乘法的系统可视化与它们在五种矩阵分解中的应用.
我希望你能够喜欢它们、通过它们加深对线性代数的理解.
Ashley Fernandes 在排版时帮我美化了这篇论文, 使它更加一致和专业.
在结束这篇论文之前, 我要感谢 Gilbert Strang 教授出版了《Linear Algebra for Everyone》一书.
它引导我们通过新的视角去了解线性代数中这些美丽的风景.
其中介绍了当代和传统的数据科学和机器学习, 每个人都可以通过实用的方式对它的基本思想进行基本理解. 矩阵世界的重要组成部分.
\section*{参考文献与相关工作}
\begin{enumerate}
\item
Gilbert Strang(2020),\emph{Linear Algebra for Everyone}, Wellesley Cambridge Press.,\\
\href{http://math.mit.edu/everyone}{http://math.mit.edu/everyone}
\item
Gilbert Strang(2016), \emph{Introduction to Linear Algebra},Wellesley Cambridge Press, 5th ed.,\\
\href{http://math.mit.edu/linearalgebra}{http://math.mit.edu/linearalgebra}
\item Kenji Hiranabe(2021), \emph{Map of Eigenvalues}, An Agile Way(blog),\\
\href{https://anagileway.com/2021/10/01/map-of-eigenvalues/}{https://anagileway.com/2021/10/01/map-of-eigenvalues/}\\
\begin{figure}[H]
\centering
\includegraphics[keepaspectratio, width=\linewidth]{MapofEigenvalues-zh-CN.png}
\caption{特征值图}
\end{figure}
\item Kenji Hiranabe(2020), \emph{Matrix World}, An Agile Way(blog),\\
\href{https://anagileway.com/2020/09/29/matrix-world-in-linear-algebra-for-everyone/}{https://anagileway.com/2020/09/29/matrix-world-in-linear-algebra-for-everyone/}
\begin{figure}[H]
\centering
\includegraphics[keepaspectratio, width=\linewidth]{MatrixWorld-zh-CN.png}
\caption{矩阵世界}
\end{figure}
\end{enumerate}
\end{document}
================================================
FILE: The-Art-of-Linear-Algebra.tex
================================================
\documentclass[letterpaper]{article}
\usepackage{typearea}
\typearea{12}
\usepackage{here}
\usepackage{bm}
\usepackage{amsmath, amsfonts}
\usepackage[top=20truemm,bottom=20truemm,left=25truemm,right=25truemm]{geometry}
\usepackage[dvipdfmx]{hyperref,graphicx}
% incorporated from Linear Algebra for Everyone 7/18/2022
\newcommand{\bi}[1]{\hbox{\boldmath$#1$}}
\DeclareRobustCommand\transp{^{\mathrm{T}}}
\DeclareMathAlphabet{\cmrv}{OML}{cmm}{b}{it}
\newcommand{\bu}{\hbox{\boldmath$u$}}
\newcommand{\bv}{\hbox{$\cmrv{v}$}}
\newcommand{\bw}{\hbox{\boldmath$w$}}
\newcommand\mat{{\sf MATLAB}}
%
% prepare to move figures
\graphicspath{ {figs/} }
\begin{document}
% Manual title block with numbered footnotes
\begin{center}
{\LARGE The Art of Linear Algebra\\
\vspace{5pt}
\large{
-- Graphic Notes on ``Linear Algebra for Everyone" --
}
}
\vspace{1.5em}
Kenji Hiranabe\footnote{twitter: @hiranabe, k-hiranabe@esm.co.jp, \url{https://anagileway.com}} \\
with the kindest help of Gilbert Strang\footnote{Massachusetts Institute of Technology, \url{http://www-math.mit.edu/\~gs/}}
\vspace{1em}
September 1, 2021/updated \today
\end{center}
\vspace{1.5em}
\vspace{-5pt}
\begin{abstract}
I try to intuitively visualize some important concepts introduced
in ``Linear Algebra for Everyone",\footnote{``Linear Algebra for Everyone":
\url{http://math.mit.edu/everyone/} with Japanese translation from Kindai Kagaku.}
which include Column-Row ($\bm{CR}$), Gaussian Elimination ($\bm{LU}$),
Gram-Schmidt Orthogonalization ($\bm{QR}$), Eigenvalues and Diagonalization ($\bm{Q \Lambda Q\transp}$),
and Singular Value Decomposition ($\bm{U \Sigma V\transp}$).
This paper aims at promoting the understanding of vector/matrix calculations
and algorithms from the perspective of matrix factorization.
All the artworks including the article itself are maintained under the GitHub repository \url{https://github.com/kenjihiranabe/The-Art-of-Linear-Algebra/}.
\end{abstract}
\section*{Foreword}
I am happy to see Kenji Hiranabe's pictures of matrix operations in linear algebra !
The pictures are an excellent way to show the algebra. We can think of matrix
multiplications by row $\bm{\cdot}$ column dot products, but that is not all -- it is ``linear combinations"
and ``rank 1 matrices" that complete the algebra and the art.
I am very grateful to see the books in Japanese translation
and the ideas in Kenji's pictures.
\begin{flushright}
-- Gilbert Strang \\ Professor of Mathematics at MIT
\end{flushright}
\tableofcontents
\section{Viewing a Matrix -- 4 Ways}
A matrix ($m \times n$) can be viewed as $1$ matrix, $mn$ numbers, $n$ columns and $m$ rows.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{ViewingMatrix-4Ways.eps}\\
\caption{Viewing a Matrix in 4 Ways}
\end{figure}
\begin{equation*}
A= \begin{bmatrix}
a_{11} & a_{12}\\
a_{21} & a_{22}\\
a_{31} & a_{32}
\end{bmatrix}
=
\begin{bmatrix}
| & |\\
\bm{a_1} & \bm{a_2}\\
| & |
\end{bmatrix}
=
\begin{bmatrix}
- \bm{a_1^*} -\\
- \bm{a_2^*} -\\
- \bm{a_3^*} -
\end{bmatrix}
\end{equation*} \\
Here, the column vectors are in bold as $\bm{a_1}$.
Row vectors include $\bm{*}$ as in $\bm{a_1^*}$.
Transposed vectors and matrices are indicated by $\mathrm{T}$ as
in $\bm{a}\transp$ and $A\transp$.
\section{Vector times Vector -- 2 Ways}
Hereafter I point to specific sections of ``Linear Algebra for Everyone"
and present graphics which illustrate the concepts with short names
in gray circles.
\begin{itemize}
\item Sec. 1.1 (p.2) Linear combination and dot products
\item Sec. 1.3 (p.25) Matrix of Rank One
\item Sec. 1.4 (p.29) Row way and column way
\end{itemize}
\begin{figure}[H]
\centering
\includegraphics[scale=0.6]{VectorTimesVector.eps}
\caption{Vector times Vector - (v1), (v2)}
\end{figure}
(v1) is an elementary operation of two vectors, but (v2) multiplies the column to the row
and produces a rank 1 matrix. Knowing this outer product (v2) is the key to the following sections.
\section{Matrix times Vector -- 2 Ways}
A matrix times a vector creates a vector of three dot products (Mv1)
as well as a linear combination (Mv2) of the column vectors of $A$.
\begin{itemize}
\item Sec. 1.1 (p.3) Linear combinations
\item Sec. 1.3 (p.21) Matrices and Column Spaces
\end{itemize}
\begin{figure}[H]
\centering
\includegraphics[scale=0.6]{MatrixTimesVector.eps}
\caption{Matrix times Vector - (Mv1), (Mv2)}
\end{figure}
At first, you learn (Mv1). But when you get used to viewing it as (Mv2),
you can understand $A\bm{x}$ as a linear combination of the columns of $A$.
Those products fill the column space of $A$ denoted as $\mathbf{C}(A)$.
The solution space of $A\bm{x}=\bm{0}$ is the nullspace of $A$ denoted as $\mathbf{N}(A)$.
To understand the nullspace, let the right-hand side of (Mv1) be $\bm{0}$
and see all the dot products are zero.
Also, (vM1) and (vM2) show the same pattern for a row vector times a matrix.
\begin{figure}[H]
\centering
\includegraphics[scale=0.6]{VectorTimesMatrix.eps}
\caption{Vector times Matrix - (vM1), (vM2)}
\end{figure}
The products fill the row space of $A$ denoted as $\mathbf{C}(A\transp)$.
The solution space of $yA=0$ is the left-nullspace of $A$, denoted as $\mathbf{N}(A\transp)$.
The four subspaces consist of $\mathbf{N}(A)$ + $\mathbf{C}(A\transp)$
(which are perpendicular to each other) in $\mathbb{R}^n$ and
$\mathbf{N}(A\transp)$ + $\mathbf{C}(A)$ in $\mathbb{R}^m$
(which are perpendicular to each other).
\begin{itemize}
\item Sec. 3.5 (p.124) Dimensions of the Four Subspaces
\end{itemize}
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{4-Subspaces.eps}
\caption{The Four Subspaces}
\end{figure}
See $A=CR$ (Sec 6.1) for the rank $r$.
\section{Matrix times Matrix -- 4 Ways}
``Matrix times Vector" naturally extends to ``Matrix times Matrix".
\begin{itemize}
\item Sec. 1.4 (p.35) Four Ways to Multiply $\bm{AB=C}$
\item Also see the back cover of the book
\end{itemize}
\begin{figure}[H]
\centering
\includegraphics[scale=0.6]{MatrixTimesMatrix.eps}
\caption{Matrix times Matrix - (MM1), (MM2), (MM3), (MM4)}
\end{figure}
\section{Practical Patterns}
Here, I show some practical patterns which allow you to capture
the upcoming factorizations in a more intuitive way.
\begin{figure}[H]
\centering
\includegraphics[scale=0.6]{Pattern12.eps}
\caption{Pattern 1, 2 - (P1), (P1)}
\end{figure}
Pattern 1 is a combination of (MM2) and (Mv2).
Pattern 2 is an extension of (MM3). Note that Pattern 1 is a column operation (multiplying a matrix from right),
whereas Pattern 2 is a row operation (multiplying a matrix from left).
\begin{figure}[H]
\centering
\includegraphics[scale=0.6]{Pattern11-22.eps}
\caption{Pattern 1$^\prime$, 2$^\prime$ - (P1$^\prime$), (P2$^\prime$)}
\end{figure}
(P1$^\prime$) multiplies the diagonal numbers to the columns of the matrix,
whereas (P2$^\prime$) multiplies the diagonal numbers to the row of the matrix.
Both are variants of (P1) and (P2).
\begin{figure}[H]
\centering
\includegraphics[scale=0.6]{Pattern3.eps}
\caption{Pattern 3 - (P3)}
\end{figure}
This pattern emerges when you solve differential equations and recurrence equations:
\begin{itemize}
\item Sec. 6 (p.201) Eigenvalues and Eigenvectors
\item Sec. 6.4 (p.243) Systems of Differential Equations
\end{itemize}
\begin{align*}
\frac{d \bm{u}(t) }{dt} &= A \bm{u}(t), \quad \bm{u}(0)=\bm{u}_0\\
\bm{u}_{n+1} &= A \bm{u}_n, \quad \bm{u_0} = \bm{u}_0
\end{align*}
In both cases, the solutions are expressed with
eigenvalues ($\lambda_1, \lambda_2, \lambda_3$),
eigenvectors $X=\begin{bmatrix} \bm{x}_1 & \bm{x}_2 & \bm{x}_3 \end{bmatrix}$ of $A$, and
the coefficients $c=\begin{bmatrix} c_1 & c_2 & c_3 \end{bmatrix}\transp$
which are the coordinates of the initial condition $\bm{u}(0)=\bm{u}_0$ in terms of
the eigenvectors $X$.
\begin{equation*}
\bm{u}_0 = c_1 \bm{x}_1 + c_2 \bm{x}_2 + c_3 \bm{x}_3
\end{equation*}
\begin{equation*}
\bm{c} =
\begin{bmatrix}
c_1\\
c_2\\
c_3
\end{bmatrix} = X^{-1} \bm{u}_0
\end{equation*}
and the general solution of the two equations are:
\begin{align*}
\bm{u}(t) &= e^{At} \bm{u}_0 = X e^{\Lambda t} X^{-1} \bm{u_0} &= X e^{\Lambda t} \bm{c} &= c_1 e^{\lambda_1 t} \bm{x}_1 + c_2 e^{\lambda_2 t} \bm{x}_2 + c_3 e^{\lambda_3 t} \bm{x}_3\\
\bm{u}_n &= A^n \bm{u}_0 = X \Lambda^n X^{-1} \bm{u_0} &= X \Lambda^n \bm{c} &= c_1 \lambda_1^n \bm{x}_1 + c_2 \lambda_2^n \bm{x}_2 + c_3 \lambda_3^n \bm{x}_3
\end{align*}
See Figure 9: Pattern 3 (P3) above again to get $XDc$.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{Pattern4.eps}
\caption{Pattern 4 - (P4)}
\end{figure}
This pattern (P4) works in both eigenvalue decomposition and singular value decomposition.
Both decompositions are expressed as a product of three matrices with a diagonal matrix in the middle,
and also a sum of rank 1 matrices with the eigenvalue/singular value coefficients.
More details are discussed in the next section.
\clearpage
\section{The Five Factorizations of a Matrix}
\begin{itemize}
\item Preface p.vii, The Plan for the Book.
\end{itemize}
$A=CR, A=LU, A=QR, A=Q \Lambda Q\transp, A=U \Sigma V\transp$ are
illustrated one by one.
\begin{table}[h]
\begin{tabular}{lll}
\Large{\boldmath $A=CR$} & \includegraphics{A_CR.eps} &
\begin{tabular}{l}
Independent columns in $C$\\
Row echelon form in $R$\\
Leads to column rank = row rank
\end{tabular}\\
\Large{\boldmath $A=LU$} & \includegraphics{A_LU.eps} &
\begin{tabular}{l}
$LU$ decomposition from\\
Gaussian elimination\\
(Lower triangular)(Upper triangular)
\end{tabular}\\
\Large{\boldmath $A=QR$} & \includegraphics{A_QR.eps} &
\begin{tabular}{l}
$QR$ decomposition as\\
Gram-Schmidt orthogonalization\\
Orthogonal $Q$ and triangular $R$
\end{tabular}\\
\Large{\boldmath $S=Q\Lambda Q\transp$} & \includegraphics{A_QLQT.eps} &
\begin{tabular}{l}
Eigenvalue decomposition\\
of a symmetric matrix $S$\\
Eigenvectors in $Q$, eigenvalues in $\Lambda$
\end{tabular}\\
\Large{\boldmath $A=U\Sigma V\transp$} & \includegraphics{A_USVT.eps} &
\begin{tabular}{l}
Singular value decomposition\\
of all matrices $A$\\
Singular values in $\Sigma$
\end{tabular}
\end{tabular}
\caption{The Five Factorization}
\end{table}
\subsection{$\boldsymbol{A=CR}$}
\begin{itemize}
\item Sec.1.4 Matrix Multiplication and $\bm{A=CR}$ (p.29)
\end{itemize}
The row rank and the column rank of a general rectangular matrix $A$ are equal.
This factorization is the most intuitive way to understand this theorem.
$C$ consists of independent columns of $A$, and $R$ is the row reduced echelon form of $A$.
$A=CR$ reduces to $r$ independent columns in $C$ times $r$ independent rows in $R$.
\begin{equation*}
\begin{split}
A &= CR\\
\begin{bmatrix}
1 & 2 & 3 \\
2 & 3 & 5
\end{bmatrix}
& =
\begin{bmatrix}
1 & 2 \\
2 & 3
\end{bmatrix}
\begin{bmatrix}
1 & 0 & 1 \\
0 & 1 & 1
\end{bmatrix}
\end{split}
\end{equation*}
Procedure: Look at the columns of $A$ from left to right. Keep independent ones,
discard dependent ones which can be created by the former columns.
The column 1 and the column 2 survive, and the column 3 is discarded
because it is expressed as a sum of the former two columns.
To rebuild $A$ by the independent columns 1 and 2, you find a row echelon form $R$
appearing on the right.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{CR1.eps}
\caption{Column Rank in $CR$}
\end{figure}
Now the column rank is two because there are only two independent columns in $C$
and all the columns of $A$ are linear combinations of the two columns of $C$.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{CR2.eps}
\caption{Row Rank in $CR$}
\end{figure}
And the row rank is also two because there are only two independent rows in $R$
and all the rows of $A$ are linear combinations of the two rows of $R$.
\subsection{$\boldsymbol{A=LU}$}
Solving $A\bm{x}=\bm{b}$ via Gaussian elimination can be represented as an $LU$ factorization.
Usually, you apply elementary row operation matrices ($E$) to $A$ to make upper triangular $U$.
\begin{align*}
EA &= U\\
A &= E^{-1}U\\
\text{let} \; L = E^{-1}, \quad A &= LU
\end{align*}
Now solve $A\bm{x}=\bm{b}$ in 2 steps: (1) forward $L\bm{c}=\bm{b}$ and (2) back $U\bm{x}=\bm{c}$.
\begin{itemize}
\item Sec.2.3 (p.57) Matrix Computations and $\bm{A=LU}$
\end{itemize}
Here, we directly calculate $L$ and $U$ from $A$.
\begin{equation*}
A =
\begin{bmatrix}
|\\
\bm{l}_1\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{u}^*_1 -
\end{bmatrix}
+ \begin{bmatrix}
0 & \begin{matrix} 0 & 0 \end{matrix}\\
\begin{matrix} 0 \\ 0 \end{matrix} & A_2
\end{bmatrix}
=
\begin{bmatrix}
|\\
\bm{l}_1\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{u}^*_1 -
\end{bmatrix}
+
\begin{bmatrix}
|\\
\bm{l}_2\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{u}^*_2 -
\end{bmatrix}
+ \begin{bmatrix}
0 & 0 & 0\\
0 & 0 & 0 \\
0 & 0 & A_3
\end{bmatrix} = LU
\end{equation*}
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{LU1.eps}
\caption{Recursive Rank 1 Matrix Peeling from $A$}
\end{figure}
To find $L$ and $U$, peel off the rank 1 matrix made of
the first row and the first column of $A$.
This leaves $A_2$. Do this recursively and decompose $A$ into the sum of rank 1 matrices.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{LU2.eps}
\caption{$LU$ rebuilds $A$}
\end{figure}
To rebuild $A$ from $L$ times $U$, use column-row multiplication.
\subsection{$\boldsymbol{A=QR}$}
$A=QR$ changes the columns of $A$ into perpendicular columns of $Q$, keeping $\bm{C}(A) = \bm{C}(Q)$.
\begin{itemize}
\item Sec.4.4 Orthogonal matrices and Gram-Schmidt (p.165)
\end{itemize}
In Gram-Schmidt, the normalized $\bm{a}_1$ is $\bm{q}_1$.
Then $\bm{a}_2$ is adjusted to be perpendicular to $\bm{q}_1$ to create $\bm{q}_2$.
This procedure gives:
\begin{align*}
\bm{q}_1 &= \bm{a}_1/||\bm{a}_1|| \\
\bm{q}_2 &= \bm{a}_2 - (\bm{q}_1\transp \bm{a}_2)\bm{q}_1 , \quad \bm{q}_2 = \bm{q}_2/||\bm{q}_2|| \\
\bm{q}_3 &= \bm{a}_3 - (\bm{q}_1\transp \bm{a}_3)\bm{q}_1 - (\bm{q}_2\transp \bm{a}_3)\bm{q}_2, \quad \bm{q}_3 = \bm{q}_3/||\bm{q}_3||
\end{align*}
In the reverse direction, let $r_{ij} = \bm{q}_i\transp \bm{a}_j$ and you will get:
\begin{align*}
\bm{a}_1 &= r_{11}\bm{q}_1\\
\bm{a}_2 &= r_{12}\bm{q}_1 + r_{22} \bm{q}_2\\
\bm{a}_3 &= r_{13}\bm{q}_1 + r_{23} \bm{q}_2 + r_{33} \bm{q}_3
\end{align*}
The original $A$ becomes $QR$: orthogonal $Q$ times upper triangular $R$.
\begin{gather*}
A =
\begin{bmatrix}
| & | & |\\
\bm{q}_1 & \bm{q}_2 & \bm{q}_3\\
| & | & |
\end{bmatrix}
\begin{bmatrix}
r_{11} & r_{12} & r_{13}\\
& r_{22} & r_{23}\\
& & r_{33}
\end{bmatrix} = QR\\
\\
Q Q\transp=Q\transp Q = I
\end{gather*}
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{QR.eps}
\caption{$A=QR$}
\end{figure}
Each column vector of $A$ can be rebuilt from $Q$ and $R$.
See Pattern 1 (P1) again for the graphic interpretation.
\subsection{$\boldsymbol{S=Q \Lambda Q\transp}$}
All symmetric matrices $S$ must have real eigenvalues and orthogonal eigenvectors.
The eigenvalues are the diagonal elements of $\Lambda$ and the eigenvectors are in $Q$.
\begin{itemize}
\item Sec.6.3 (p.227) Symmetric Positive Definite Matrices
\end{itemize}
\begin{align*}
S = Q \Lambda Q\transp
&= \begin{bmatrix}
| & | & |\\
\bm{q}_1 & \bm{q}_2 & \bm{q}_3\\
| & | & |
\end{bmatrix}
\begin{bmatrix}
\lambda_1 \\
& \lambda_2 & \\
& & \lambda_3
\end{bmatrix}
\begin{bmatrix}
- \bm{q}_1\transp -\\
- \bm{q}_2\transp -\\
- \bm{q}_3\transp -
\end{bmatrix}\\
\\
&=
\lambda_1 \begin{bmatrix}
|\\
\bm{q}_1\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{q}_1\transp -
\end{bmatrix}
+
\lambda_2 \begin{bmatrix}
|\\
\bm{q}_2\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{q}_2\transp -
\end{bmatrix}
+
\lambda_3 \begin{bmatrix}
|\\
\bm{q}_3 \\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{q}_3\transp -
\end{bmatrix} \\
&= \lambda_1 P_1 + \lambda_2 P_2 + \lambda_3 P_3
\end{align*}
\begin{equation*}
P_1=\bm{q}_1 \bm{q}_1\transp, \quad P_2=\bm{q}_2 \bm{q}_2\transp, \quad P_3=\bm{q}_3 \bm{q}_3\transp
\end{equation*}
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{EVD.eps}
\caption{$S=Q \Lambda Q\transp$}
\end{figure}
A symmetric matrix $S$ is diagonalized into $\Lambda$ by an orthogonal matrix $Q$
and its transpose. And it is broken down into a combination of rank 1 projection matrices $P=qq\transp$.
This is the spectral theorem.
Note that Pattern 4 (P4) is working for the decomposition.
\begin{gather*}
S=S\transp = \lambda_1 P_1 + \lambda_2 P_2 + \lambda_3 P_3\\
QQ\transp = P_1 + P_2 + P_3 = I \\
P_1 P_2 = P_2 P_3 = P_3 P_1 = O\\
P_1^2 =P_1=P_1\transp, \quad P_2^2=P_2=P_2\transp, \quad P_3^2=P_3=P_3\transp
\end{gather*}
\subsection{$\boldsymbol{A=U \Sigma V\transp}$}
\begin{itemize}
\item Sec.7.1 (p.259) Singular Values and Singular Vectors
\end{itemize}
Every matrix (including rectangular one) has a singular value decomposition (SVD).
$A=U \Sigma V\transp$ has the singular vectors of $A$ in $U$ and $V$.
The following figure illustrates the 'reduced' SVD.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{SVD.eps}
\caption{$A=U \Sigma V\transp$}
\end{figure}
You can find $V$ as an orthonormal basis of $\mathbb{R}^n$ (eigenvectors of $A\transp A$)
and $U$ as an orthonormal basis of $\mathbb{R}^m$ (eigenvectors of $AA\transp$).
Together they diagonalize $A$ into $\Sigma$.
This can be also expressed as a combination of rank 1 matrices.
\begin{align*}
A = U \Sigma V\transp =
\begin{bmatrix}
| & | & |\\
\bm{u}_1 & \bm{u}_2 & \bm{u}_3\\
| & | & |
\end{bmatrix}
\begin{bmatrix}
\sigma_1 \\
& \sigma_2 \\
& &
\end{bmatrix}
\begin{bmatrix}
- \bm{v}_1\transp -\\
- \bm{v}_2\transp -
\end{bmatrix}
& =
\sigma_1 \begin{bmatrix}
|\\
\bm{u}_1\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{v}_1\transp -
\end{bmatrix}
+
\sigma_2 \begin{bmatrix}
|\\
\bm{u}_2\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{v}_2\transp -
\end{bmatrix} \\
& = \sigma_1 \bm{u}_1 \bm{v}_1\transp + \sigma_2 \bm{u}_2 \bm{v}_2\transp
\end{align*}
Note that:
\begin{align*}
U U\transp &= I_m \\
V V\transp &= I_n
\end{align*}
See Pattern 4 (P4) for the graphic notation.
\section*{Conclusion and Acknowledgements}
I have presented a systematic visualization of matrix/vector multiplication and
its applications to the Five Matrix Factorizations. I hope you
enjoy them and find them useful
in understanding Linear Algebra.
Ashley Fernandes helped me with typesetting, which
makes this paper much more appealing and professional.
To conclude this paper, I'd like to thank Prof. Gilbert Strang for
publishing ``Linear Algebra for Everyone". It presents a new pathway to these beautiful landscapes in Linear Algebra.
Everyone can reach a fundamental understanding of its underlying ideas
in a practical manner that introduces us to contemporary and also
traditional data science and machine learning.
\section*{References and Related Works}
\begin{enumerate}
\item
Gilbert Strang(2020),\emph{Linear Algebra for Everyone}, Wellesley Cambridge Press.,\\
\url{http://math.mit.edu/everyone}
\item
Gilbert Strang(2016), \emph{Introduction to Linear Algebra},Wellesley Cambridge Press, 6th ed.,\\
\url{http://math.mit.edu/linearalgebra}
\item Kenji Hiranabe(2021), \emph{Map of Eigenvalues}, Slidedeck,\\
\url{https://github.com/kenjihiranabe/The-Art-of-Linear-Algebra/blob/main/MapofEigenvalues.pdf}
\begin{figure}[H]
\centering
\includegraphics[keepaspectratio, width=\linewidth]{MapofEigenvalues.eps}
\caption{Map of Eigenvalues}
\end{figure}
\item Kenji Hiranabe(2020), \emph{Matrix World}, Slidedeck,\\
\url{https://github.com/kenjihiranabe/The-Art-of-Linear-Algebra/blob/main/MatrixWorld.pdf}\\
\begin{figure}[H]
\centering
\includegraphics[keepaspectratio, width=\linewidth]{MatrixWorld.eps}
\caption{Matrix World}
\end{figure}
\item Gilbert Strang, artwork by Kenji Hiranabe, \emph{The Four Subspaces and the solutions to $A\bm{x}=\bm{b}$}\\
\begin{figure}[H]
\centering
\includegraphics[scale=0.6]{TheFourSubspaces.eps}
\caption{The Four Subspaces and the solutions to $A\bm{x}=\bm{b}$}
\end{figure}
\end{enumerate}
\end{document}
================================================
FILE: The-Art-of-Linear-Algebra.updated.tex
================================================
\documentclass[letterpaper]{article}
\usepackage{typearea}
\typearea{12}
\usepackage{here}
\usepackage{bm}
\usepackage{amsmath, amsfonts}
\usepackage[top=20truemm,bottom=20truemm,left=25truemm,right=25truemm]{geometry}
\usepackage[dvipdfmx]{hyperref,graphicx}
% incorporated from Linear Algebra for Everyone 7/18/2022
\newcommand{\bi}[1]{\hbox{\boldmath$#1$}}
\DeclareRobustCommand\transp{^{\mathrm{T}}}
\DeclareMathAlphabet{\cmrv}{OML}{cmm}{b}{it}
\newcommand{\bu}{\hbox{\boldmath$u$}}
\newcommand{\bv}{\hbox{$\cmrv{v}$}}
\newcommand{\bw}{\hbox{\boldmath$w$}}
\newcommand\mat{{\sf MATLAB}}
%
% prepare to move figures
\graphicspath{ {figs/} }
\begin{document}
\title{The Art of Linear Algebra\\
\vspace{5pt}
\large{
-- Graphic Notes on ``Linear Algebra for Everyone" --
}
}
\author{Kenji Hiranabe
\thanks{twitter: @hiranabe, k-hiranabe@esm.co.jp, \url{https://anagileway.com}} \\
with the kindest help of Gilbert Strang
\thanks{Massachusetts Institute of Technology, \url{http://www-math.mit.edu/\~gs/}}
}
\date{September 1, 2021/updated \today}
\maketitle
\vspace{-5pt}
\begin{abstract}
I tried intuitive visualizations of important concepts introduced
in ``Linear Algebra for Everyone".\footnote{``Linear Algebra for Everyone":
\url{http://math.mit.edu/everyone/} with Japanese translation started by Kindai Kagaku.}\linebreak
This is aimed at promoting understanding of vector/matrix calculations
and algorithms from the\linebreak perspectives of matrix factorizations.
They include Column-Row ($\bm{CR}$), Gaussian Elimination ($\bm{LU}$),
Gram-Schmidt Orthogonalization ($\bm{QR}$), Eigenvalues and Diagonalization ($\bm{Q \Lambda Q\transp}$),
and Singular Value Decomposition ($\bm{U \Sigma V\transp}$). All the artworks including this article are maintained in the GitHub repository \url{https://github.com/kenjihiranabe/The-Art-of-Linear-Algebra/}.
\end{abstract}
\section*{Foreword}
I am happy to see Kenji Hiranabe's pictures of matrix operations in linear algebra !
The pictures are an excellent way to show the algebra. We can think of matrix
multiplications by row $\bm{\cdot}$ column dot products, but that is not all -- it is ``linear combinations"
and ``rank 1 matrices" that complete the algebra and the art.
I am very grateful to see the books in Japanese translation
and the ideas in Kenji's pictures.
\begin{flushright}
-- Gilbert Strang \\ Professor of Mathematics at MIT
\end{flushright}
\tableofcontents
\section{Viewing a Matrix -- 4 Ways}
A matrix ($m \times n$) can be seen as $1$ matrix, $mn$ numbers, $n$ columns and $m$ rows.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{ViewingMatrix-4Ways.eps}\\
\caption{Viewing a Matrix in 4 Ways}
\end{figure}
\begin{equation*}
A= \begin{bmatrix}
a_{11} & a_{12}\\
a_{21} & a_{22}\\
a_{31} & a_{32}
\end{bmatrix}
=
\begin{bmatrix}
| & |\\
\bm{a_1} & \bm{a_2}\\
| & |
\end{bmatrix}
=
\begin{bmatrix}
- \bm{a_1^*} -\\
- \bm{a_2^*} -\\
- \bm{a_3^*} -
\end{bmatrix}
\end{equation*} \\
Here, the column vectors are in bold as $\bm{a_1}$.
Row vectors include $\bm{*}$ as in $\bm{a_1^*}$.
Transposed vectors and matrices are indicated by $\mathrm{T}$ as
in $\bm{a}\transp$ and $A\transp$.
\section{Vector times Vector -- 2 Ways}
Hereafter I point to specific sections of ``Linear Algebra for Everyone"
and present graphics which illustrate the concepts with short names
in colored circles.
\begin{itemize}
\item Sec. 1.1 (p.2) Linear combination and dot products
\item Sec. 1.3 (p.25) Matrix of Rank One
\item Sec. 1.4 (p.29) Row way and column way
\end{itemize}
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{VectorTimesVector.eps}
\caption{Vector times Vector - (v1), (v2)}
\end{figure}
(v1) is a elementary operation of two vectors, but (v2) multiplies the column to the row
and produce a rank 1 matrix. Knowing this outer product (v2) is the key for the later sections.
\section{Matrix times Vector -- 2 Ways}
A matrix times a vector creates a vector of three dot products (Mv1)
as well as a linear combination (Mv2) of the column vectors of $A$.
\begin{itemize}
\item Sec. 1.1 (p.3) Linear combinations
\item Sec. 1.3 (p.21) Matrices and Column Spaces
\end{itemize}
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{MatrixTimesVector.eps}
\caption{Matrix times Vector - (Mv1), (Mv2)}
\end{figure}
At first, you learn (Mv1). But when you get used to viewing it as (Mv2),
you can understand $A\bm{x}$ as a linear combination of the columns of $A$.
Those products fill the column space of $A$ denoted as $\mathbf{C}(A)$.
The solution space of $A\bm{x}=\bm{0}$ is the nullspace of $A$ denoted as $\mathbf{N}(A)$.
Also, (vM1) and (vM2) shows the same patterns for a row vector times a matrix.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{VectorTimesMatrix.eps}
\caption{Vector times Matrix - (vM1), (vM2)}
\end{figure}
The products fill the row space of $A$ denoted as $\mathbf{C}(A\transp)$.
The solution space of $yA=0$ is the left-nullspace of $A$ denoted as $\mathbf{N}(A\transp)$.
The four subspaces consists of $\mathbf{N}(A)$ + $\mathbf{C}(A\transp)$
(which are perpendicular to each other) in $\mathbb{R}^n$ and
$\mathbf{N}(A\transp)$ + $\mathbf{C}(A)$ in $\mathbb{R}^m$
(which are perpendicular to each other).
\begin{itemize}
\item Sec. 3.5 (p.124) Dimensions of the Four Subspaces
\end{itemize}
\begin{figure}[H]
\centering
\includegraphics[keepaspectratio, width=8cm]{4-Subspaces.eps}
\caption{The Four Subspaces}
\end{figure}
See $A=CR$ (Sec 6.1) for the rank $r$.
\section{Matrix times Matrix -- 4 Ways}
``Matrix times Vector" naturally extends to ``Matrix times Matrix".
\begin{itemize}
\item Sec. 1.4 (p.35) Four Ways to Multiply $\bm{AB=C}$
\item Also see the back cover of the book
\end{itemize}
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{MatrixTimesMatrix.eps}
\caption{Matrix times Matrix - (MM1), (MM2), (MM3), (MM4)}
\end{figure}
\section{Practical Patterns}
Here, I show some practical patterns which allow you to capture
the coming factorizations more intuitively.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{Pattern12.eps}
\caption{Pattern 1, 2 - (P1), (P1)}
\end{figure}
Pattern 1 is a combination of (MM2) and (Mv2).
Pattern 2 is an extention of (MM3). Note that Pattern 1 is a column operation (multiplying a matrix from right),
whereas Pattern 2 is a row operation (multiplying a matrix from left).
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{Pattern11-22.eps}
\caption{Pattern 1$^\prime$, 2$^\prime$ - (P1$^\prime$), (P2$^\prime$)}
\end{figure}
(P1$^\prime$) multipies the diagonal numbers to the columns of the matrix,
whereas (P2$^\prime$) multipies the diagonal numbers to the row of the matrx.
Both are variants of (P1) and (P2).
\begin{figure}[H]
\centering
\includegraphics[scale=0.85]{Pattern3.eps}
\caption{Pattern 3 - (P3)}
\end{figure}
This pattern appears when you solve differential equations and recurrence equations:
\begin{itemize}
\item Sec. 6 (p.201) Eigenvalues and Eigenvectors
\item Sec. 6.4 (p.243) Systems of Differential Equations
\end{itemize}
\begin{align*}
\frac{d \bm{u}(t) }{dt} &= A \bm{u}(t), \quad \bm{u}(0)=\bm{u}_0\\
\bm{u}_{n+1} &= A \bm{u}_n, \quad \bm{u_0} = \bm{u}_0
\end{align*}
In both cases, the solutions are expressed with
eigenvalues ($\lambda_1, \lambda_2, \lambda_3$),
eigenvectors $X=\begin{bmatrix} \bm{x}_1 & \bm{x}_2 & \bm{x}_3 \end{bmatrix}$ of $A$, and
the coefficients $c=\begin{bmatrix} c_1 & c_2 & c_3 \end{bmatrix}\transp$
which are the coordinates of the initial condition $\bm{u}(0)=\bm{u}_0$ in terms of
the eigenvectors $X$.
\begin{equation*}
\bm{u}_0 = c_1 \bm{x}_1 + c_2 \bm{x}_2 + c_3 \bm{x}_3
\end{equation*}
\begin{equation*}
\bm{c} =
\begin{bmatrix}
c_1\\
c_2\\
c_3
\end{bmatrix} = X^{-1} \bm{u}_0
\end{equation*}
and the general solution of the two equations are:
\begin{align*}
\bm{u}(t) &= e^{At} \bm{u}_0 = X e^{\Lambda t} X^{-1} \bm{u_0} &= X e^{\Lambda t} \bm{c} &= c_1 e^{\lambda_1 t} \bm{x}_1 + c_2 e^{\lambda_2 t} \bm{x}_2 + c_3 e^{\lambda_3 t} \bm{x}_3\\
\bm{u}_n &= A^n \bm{u}_0 = X \Lambda^n X^{-1} \bm{u_0} &= X \Lambda^n \bm{c} &= c_1 \lambda_1^n \bm{x}_1 + c_2 \lambda_2^n \bm{x}_2 + c_3 \lambda_3^n \bm{x}_3
\end{align*}
See Figure 9: Pattern 3 (P3) above again to get $XDc$.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{Pattern4.eps}
\caption{Pattern 4 - (P4)}
\end{figure}
This pattern (P4) works in both eigenvalue decomposition and singular value decomposition.
Both decompositions are expressed as a product of three matrices with a diagonal matrix in the middle,
and also a sum of rank 1 matrices with the eigenvalue/singular value coefficients.
More details are discussed in the next section.
\clearpage
\section{The Five Factorizations of a Matrix}
\begin{itemize}
\item Preface p.vii, The Plan for the Book.
\end{itemize}
$A=CR, A=LU, A=QR, A=Q \Lambda Q\transp, A=U \Sigma V\transp$ are
illustrated one by one.
\begin{table}[h]
\begin{tabular}{lll}
\Large{\boldmath $A=CR$} & \includegraphics{A_CR.eps} &
\begin{tabular}{l}
Independent columns in $C$\\
Row echelon form in $R$\\
Leads to column rank = row rank
\end{tabular}\\
\Large{\boldmath $A=LU$} & \includegraphics{A_LU.eps} &
\begin{tabular}{l}
$LU$ decomposition from\\
Gaussian elimination\\
(Lower triangular)(Upper triangular)
\end{tabular}\\
\Large{\boldmath $A=QR$} & \includegraphics{A_QR.eps} &
\begin{tabular}{l}
$QR$ decomposition as\\
Gram-Schmidt orthogonalization\\
Orthogonal $Q$ and triangular $R$
\end{tabular}\\
\Large{\boldmath $S=Q\Lambda Q\transp$} & \includegraphics{A_QLQT.eps} &
\begin{tabular}{l}
Eigenvalue decomposition\\
of a symmetric matrix $S$\\
Eigenvectors in $Q$, eigenvalues in $\Lambda$
\end{tabular}\\
\Large{\boldmath $A=U\Sigma V\transp$} & \includegraphics{A_USVT.eps} &
\begin{tabular}{l}
Singular value decomposition\\
of all matrices $A$\\
Singular values in $\Sigma$
\end{tabular}
\end{tabular}
\caption{The Five Factorization}
\end{table}
\subsection{$\boldsymbol{A=CR}$}
\begin{itemize}
\item Sec.1.4 Matrix Multiplication and $\bm{A=CR}$ (p.29)
\end{itemize}
All general rectangular matrices $A$ have the same row rank as the column rank.
This factorization is the most intuitive way to understand this theorem.
$C$ consists of independent columns of $A$, and $R$ is the row reduced echelon form of $A$.
$A=CR$ reduces to $r$ independent columns in $C$ times $r$ independent rows in $R$.
\begin{equation*}
\begin{split}
A &= CR\\
\begin{bmatrix}
1 & 2 & 3 \\
2 & 3 & 5
\end{bmatrix}
& =
\begin{bmatrix}
1 & 2 \\
2 & 3
\end{bmatrix}
\begin{bmatrix}
1 & 0 & 1 \\
0 & 1 & 1
\end{bmatrix}
\end{split}
\end{equation*}
Procedure: Look at the columns of $A$ from left to right. Keep independent ones,
discard dependent ones which can be created by the former columns.
The column 1 and the column 2 survive, and the column 3 is discarded
because it is expressed as a sum of the former two columns.
To rebuild $A$ by the independent columns 1, 2, you find a row echelon form $R$
appearing in the right.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{CR1.eps}
\caption{Column Rank in $CR$}
\end{figure}
Now you see the column rank is two because there are only two independent columns in $C$
and all the columns of $A$ are linear combinations of the two columns of $C$.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{CR2.eps}
\caption{Row Rank in $CR$}
\end{figure}
And you see the row rank is two because there are only two independent rows in $R$
and all the rows of $A$ are linear combinations of the two rows of $R$.
\subsection{$\boldsymbol{A=LU}$}
Solving $A\bm{x}=\bm{b}$ via Gaussian elimination can be expressed as an $LU$ factorization.
Usually, you apply elementary row operation matrices ($E$) to $A$ to make upper trianglar $U$.
\begin{align*}
EA &= U\\
A &= E^{-1}U\\
\text{let} \; L = E^{-1}, \quad A &= LU
\end{align*}
Now solve $A\bm{x}=\bm{b}$ in 2 steps: (1) forward $L\bm{c}=\bm{b}$ and (2) back $U\bm{x}=\bm{c}$.
\begin{itemize}
\item Sec.2.3 (p.57) Matrix Computations and $\bm{A=LU}$
\end{itemize}
Here, we directly calculate $L$ and $U$ from $A$.
\begin{equation*}
A =
\begin{bmatrix}
|\\
\bm{l}_1\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{u}^*_1 -
\end{bmatrix}
+ \begin{bmatrix}
0 & \begin{matrix} 0 & 0 \end{matrix}\\
\begin{matrix} 0 \\ 0 \end{matrix} & A_2
\end{bmatrix}
=
\begin{bmatrix}
|\\
\bm{l}_1\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{u}^*_1 -
\end{bmatrix}
+
\begin{bmatrix}
|\\
\bm{l}_2\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{u}^*_2 -
\end{bmatrix}
+ \begin{bmatrix}
0 & 0 & 0\\
0 & 0 & 0 \\
0 & 0 & A_3
\end{bmatrix} = LU
\end{equation*}
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{LU1.eps}
\caption{Recursive Rank 1 Matrix Peeling from $A$}
\end{figure}
To find $L$ and $U$, peel off the rank 1 matrix made of
the first row and the first column of $A$.
This leaves $A_2$. Do this recursively and decompose $A$ into the sum of rank 1 matrices.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{LU2.eps}
\caption{$LU$ rebuilds $A$}
\end{figure}
To rebuild $A$ from $L$ times $U$, use column-row multiplication.
\subsection{$\boldsymbol{A=QR}$}
$A=QR$ changes the columns of $A$ into perpendicular columns of $Q$, keeping $\bm{C}(A) = \bm{C}(Q)$.
\begin{itemize}
\item Sec.4.4 Orthogonal matrices and Gram-Schmidt (p.165)
\end{itemize}
In Gram-Schmidt, the normalized $\bm{a}_1$ is $\bm{q}_1$.
Then $\bm{a}_2$ is adjusted to be perpendicular to $\bm{q}_1$ to create $\bm{q}_2$.
This procedure gives:
\begin{align*}
\bm{q}_1 &= \bm{a}_1/||\bm{a}_1|| \\
\bm{q}_2 &= \bm{a}_2 - (\bm{q}_1\transp \bm{a}_2)\bm{q}_1 , \quad \bm{q}_2 = \bm{q}_2/||\bm{q}_2|| \\
\bm{q}_3 &= \bm{a}_3 - (\bm{q}_1\transp \bm{a}_3)\bm{q}_1 - (\bm{q}_2\transp \bm{a}_3)\bm{q}_2, \quad \bm{q}_3 = \bm{q}_3/||\bm{q}_3||
\end{align*}
In the reverse direction, letting $r_{ij} = \bm{q}_i\transp \bm{a}_j$ and you get:
\begin{align*}
\bm{a}_1 &= r_{11}\bm{q}_1\\
\bm{a}_2 &= r_{12}\bm{q}_1 + r_{22} \bm{q}_2\\
\bm{a}_3 &= r_{13}\bm{q}_1 + r_{23} \bm{q}_2 + r_{33} \bm{q}_3
\end{align*}
The original $A$ becomes $QR$: orthogonal $Q$ times upper triangular $R$.
\begin{gather*}
A =
\begin{bmatrix}
| & | & |\\
\bm{q}_1 & \bm{q}_2 & \bm{q}_3\\
| & | & |
\end{bmatrix}
\begin{bmatrix}
r_{11} & r_{12} & r_{13}\\
& r_{22} & r_{23}\\
& & r_{33}
\end{bmatrix} = QR\\
\\
Q Q\transp=Q\transp Q = I
\end{gather*}
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{QR.eps}
\caption{$A=QR$}
\end{figure}
Each column vector of $A$ can be rebuilt from $Q$ and $R$ .
See Pattern 1 (P1) again for the graphic interpretation.
\subsection{$\boldsymbol{S=Q \Lambda Q\transp}$}
All symmetric matrices $S$ must have real eigenvalues and orthogonal eigenvectors.
The eigenvalues are the diagonal elements of $\Lambda$ and the eigenvectors are in $Q$.
\begin{itemize}
\item Sec.6.3 (p.227) Symmetric Positive Definite Matrices
\end{itemize}
\begin{align*}
S = Q \Lambda Q\transp
&= \begin{bmatrix}
| & | & |\\
\bm{q}_1 & \bm{q}_2 & \bm{q}_3\\
| & | & |
\end{bmatrix}
\begin{bmatrix}
\lambda_1 \\
& \lambda_2 & \\
& & \lambda_3
\end{bmatrix}
\begin{bmatrix}
- \bm{q}_1\transp -\\
- \bm{q}_2\transp -\\
- \bm{q}_3\transp -
\end{bmatrix}\\
\\
&=
\lambda_1 \begin{bmatrix}
|\\
\bm{q}_1\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{q}_1\transp -
\end{bmatrix}
+
\lambda_2 \begin{bmatrix}
|\\
\bm{q}_2\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{q}_2\transp -
\end{bmatrix}
+
\lambda_3 \begin{bmatrix}
|\\
\bm{q}_3 \\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{q}_3\transp -
\end{bmatrix} \\
&= \lambda_1 P_1 + \lambda_2 P_2 + \lambda_3 P_3
\end{align*}
\begin{equation*}
P_1=\bm{q}_1 \bm{q}_1\transp, \quad P_2=\bm{q}_2 \bm{q}_2\transp, \quad P_3=\bm{q}_3 \bm{q}_3\transp
\end{equation*}
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{EVD.eps}
\caption{$S=Q \Lambda Q\transp$}
\end{figure}
A symmetric matrix $S$ is diagonalized into $\Lambda$ by an orthogonal matrix $Q$
and its transpose. And it is broken down into a combination of rank 1 projection matrices $P=qq\transp$.
This is the spectral theorem.
Note that Pattern 4 (P4) is working for the decomposition.
\begin{gather*}
S=S\transp = \lambda_1 P_1 + \lambda_2 P_2 + \lambda_3 P_3\\
QQ\transp = P_1 + P_2 + P_3 = I \\
P_1 P_2 = P_2 P_3 = P_3 P_1 = O\\
P_1^2 =P_1=P_1\transp, \quad P_2^2=P_2=P_2\transp, \quad P_3^2=P_3=P_3\transp
\end{gather*}
\subsection{$\boldsymbol{A=U \Sigma V\transp}$}
\begin{itemize}
\item Sec.7.1 (p.259) Singular Values and Singular Vectors
\end{itemize}
Every matrix (including rectangular one) has a singular value decomposition (SVD).
$A=U \Sigma V\transp$ has the singular vectors of $A$ in $U$ and $V$.
The following illustrates the 'reduced' SVD.
\begin{figure}[H]
\centering
\includegraphics[scale=0.8]{SVD.eps}
\caption{$A=U \Sigma V\transp$}
\end{figure}
You can find $V$ as an orthonormal basis of $\mathbb{R}^n$ (eigenvectors of $A\transp A$),
and $U$ as an orthonormal basis of $\mathbb{R}^m$ (eigenvectors of $AA\transp$).
Together they diagonalize $A$ into $\Sigma$.
This is also expressed as a combination of rank 1 matrices.
\begin{align*}
A = U \Sigma V\transp =
\begin{bmatrix}
| & | & |\\
\bm{u}_1 & \bm{u}_2 & \bm{u}_3\\
| & | & |
\end{bmatrix}
\begin{bmatrix}
\sigma_1 \\
& \sigma_2 \\
& &
\end{bmatrix}
\begin{bmatrix}
- \bm{v}_1\transp -\\
- \bm{v}_2\transp -
\end{bmatrix}
& =
\sigma_1 \begin{bmatrix}
|\\
\bm{u}_1\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{v}_1\transp -
\end{bmatrix}
+
\sigma_2 \begin{bmatrix}
|\\
\bm{u}_2\\
|
\end{bmatrix}
\begin{bmatrix}
- \bm{v}_2\transp -
\end{bmatrix} \\
& = \sigma_1 \bm{u}_1 \bm{v}_1\transp + \sigma_2 \bm{u}_2 \bm{v}_2\transp
\end{align*}
Note that:
\begin{align*}
U U\transp &= I_m \\
V V\transp &= I_n
\end{align*}
See Pattern 4 (P4) for the graphic notation.
\section*{Conclusion and Acknowledgements}
I presented systematic visualizations of matrix/vector multiplication and
their application to the Five Matrix Factorizations. I hope you
enjoyed them and will use them
in your understanding of Linear Algebra.
Ashley Fernandes helped me with beautifying this paper in typesetting
and made it much more consistent and professional.
To conclude this paper, I'd like to thank Prof. Gilbert Strang for
publishing ``Linear Algebra for Everyone". It guides us
through a new vision to these beautiful landscapes in Linear Algebra.
Everyone can reach a fundamental understanding of its underlying ideas
in a practical manner that introduces us to contemporary and also
traditional data science and machine learning. An important part of the matrix world.
\section*{References and Related Works}
\begin{enumerate}
\item
Gilbert Strang(2020),\emph{Linear Algebra for Everyone}, Wellesley Cambridge Press.,\\
\href{http://math.mit.edu/everyone}{http://math.mit.edu/everyone}
\item
Gilbert Strang(2016), \emph{Introduction to Linear Algebra},Wellesley Cambridge Press, 5th ed.,\\
\href{http://math.mit.edu/linearalgebra}{http://math.mit.edu/linearalgebra}
\item Kenji Hiranabe(2021), \emph{Map of Eigenvalues}, Slidedeck,\\
\url{https://github.com/kenjihiranabe/The-Art-of-Linear-Algebra/blob/main/MapofEigenvalues.pdf}\\
\begin{figure}[H]
\centering
\includegraphics[keepaspectratio, width=\linewidth]{MapofEigenvalues.eps}
\caption{Map of Eigenvalues}
\end{figure}
\item Kenji Hiranabe(2020), \emph{Matrix World}, Slidedeck,\\
\url{https://github.com/kenjihiranabe/The-Art-of-Linear-Algebra/blob/main/MatrixWorld.pdf}\\
\begin{figure}[H]
\centering
\includegraphics[keepaspectratio, width=\linewidth]{MatrixWorld.eps}
\caption{Matrix World}
\end{figure}
\item Gilbert Strang, artwork by Kenji Hiranabe, \emph{The Four Subspaces and the solutions to $A\bm{x}=\bm{b}$}\\
\begin{figure}[H]
\centering
\includegraphics[keepaspectratio]{TheFourSubspaces.eps}
\caption{The Four Subspaces and the solutions to $A\bm{x}=\bm{b}$}
\end{figure}
\end{enumerate}
\end{document}
================================================
FILE: figs/4-Subspaces-j.eps
================================================
%!PS-Adobe-2.0 EPSF-2.0
%%BoundingBox: 0 0 450 381
%%HiResBoundingBox: 0 0 448 379
%APL_DSC_Encoding: UTF8
%APLProducer: (Version 13.4 (Build 22F66) Quartz PS Context)
%%Title: (Illustrations-j)
%%Creator: (PowerPoint: cgpdftops CUPS filter)
%%CreationDate: (Tuesday, August 22 2023 15:07:15 JST)
%%For: (hiranabe)
%%DocumentData: Clean7Bit
%%LanguageLevel: 2
%%PageOrder: Ascend
%RBINumCopies: 1
%%EndComments
% EPSF created by ps2eps 1.68
%%BeginProlog
-190 509 translate
-90 rotate
save
countdictstack
mark
newpath
/showpage {} def
/setpagedevice {pop} def
%%EndProlog
%%Page 1 1
userdict/dscInfo 5 dict dup begin
/Title(Illustrations-j)def
/Creator(PowerPoint: cgpdftops CUPS filter)def
/CreationDate(Tuesday, August 22 2023 15:07:15 JST)def
/For(hiranabe)def
/Pages 46 def
end put
%%BeginProlog
%%BeginFile: lw8_errorhandler-2.0
/currentpacking where
{ pop /oldpack currentpacking def /setpacking where
{
pop false setpacking
}if
}if
/$brkpage 64 dict def $brkpage begin
/prnt
{dup type/stringtype ne{=string cvs}if dup length 6 mul/tx exch def/ty 10 def
currentpoint/toy exch def/tox exch def 1 setgray newpath
tox toy 2 sub moveto 0 ty rlineto tx 0 rlineto 0 ty neg rlineto
closepath fill tox toy moveto 0 setgray show}bind def
/nl{currentpoint exch pop lmargin exch moveto 0 -10 rmoveto}def
/=={/cp 0 def typeprint nl}def
/typeprint{dup type exec}readonly def
/lmargin 72 def
/rmargin 72 def
/tprint
{dup length cp add rmargin gt{nl/cp 0 def}if
dup length cp add/cp exch def prnt}readonly def
/cvsprint{=string cvs tprint( )tprint}readonly def
/integertype{cvsprint}readonly def
/realtype{cvsprint}readonly def
/booleantype{cvsprint}readonly def
/operatortype{(--)tprint =string cvs tprint(-- )tprint}readonly def
/marktype{pop(-mark- )tprint}readonly def
/dicttype{pop(-dictionary- )tprint}readonly def
/nulltype{pop(-null- )tprint}readonly def
/filetype{pop(-filestream- )tprint}readonly def
/savetype{pop(-savelevel- )tprint}readonly def
/fonttype{pop(-fontid- )tprint}readonly def
/nametype{dup xcheck not{(/)tprint}if cvsprint}readonly def
/stringtype
{dup rcheck{(\()tprint tprint(\))tprint}{pop(-string- )tprint}ifelse
}readonly def
/arraytype
{dup rcheck{dup xcheck
{({)tprint{typeprint}forall(})tprint}
{([)tprint{typeprint}forall(])tprint}ifelse}{pop(-array- )tprint}ifelse
}readonly def
/packedarraytype
{dup rcheck{dup xcheck
{({)tprint{typeprint}forall(})tprint}
{([)tprint{typeprint}forall(])tprint}ifelse}{pop(-packedarray- )tprint}ifelse
}readonly def
/courier/Courier findfont 10 scalefont def
end %$brkpage
errordict/handleerror
{systemdict begin $error begin $brkpage begin newerror
{/newerror false store
vmstatus pop pop 0 ne{grestoreall}if initgraphics courier setfont
lmargin 720 moveto(ERROR: )prnt errorname prnt
nl(OFFENDING COMMAND: )prnt/command load prnt
$error/ostack known{
$error/ostack get type dup/arraytype eq exch /packedarraytype eq or
{nl nl(STACK:)prnt nl nl $error/ostack get aload length{==}repeat}if}if
systemdict/showpage get exec(%%[ Error: )print
errorname =print(; OffendingCommand: )print/command
load =print( ]%%)= flush}if end end end}
dup 0 systemdict put dup 4 $brkpage put bind readonly put
/currentpacking where
{ pop /setpacking where
{
pop oldpack setpacking
}if
}if
%%EndFile
%%BeginFile: cg-pdf.ps
%%Copyright: Copyright 2000-2004 Apple Computer Incorporated.
%%Copyright: All Rights Reserved.
currentpacking true setpacking
/cg_md 141 dict def
cg_md begin
/L3? languagelevel 3 ge def
/bd{bind def}bind def
/ld{load def}bd
/xs{exch store}bd
/xd{exch def}bd
/cmmtx matrix def
mark
/sc/setcolor
/scs/setcolorspace
/dr/defineresource
/fr/findresource
/T/true
/F/false
/d/setdash
/w/setlinewidth
/J/setlinecap
/j/setlinejoin
/M/setmiterlimit
/i/setflat
/rc/rectclip
/rf/rectfill
/rs/rectstroke
/f/fill
/f*/eofill
/sf/selectfont
/s/show
%/as/ashow
/xS/xshow
/yS/yshow
/xyS/xyshow
/S/stroke
/m/moveto
/l/lineto
/c/curveto
/h/closepath
/n/newpath
/q/gsave
/Q/grestore
counttomark 2 idiv
%dup (number of ld's = )print == flush % *** how many
{ld}repeat pop
/SC{ % CSname
/ColorSpace fr scs
}bd
/sopr /setoverprint where{pop/setoverprint}{/pop}ifelse ld
/soprm /setoverprintmode where{pop/setoverprintmode}{/pop}ifelse ld
/cgmtx matrix def
/sdmtx{cgmtx currentmatrix pop}bd
/CM {cgmtx setmatrix}bd % pop the ctm: our gstate ctm on host is now identity
/cm {cmmtx astore CM concat}bd % reset the matrix and then concat
/W{clip newpath}bd
/W*{eoclip newpath}bd
statusdict begin product end dup (HP) anchorsearch{
pop pop pop % pop off the search results
true
}{
pop % previous search result
(hp) anchorsearch{
pop pop true
}{
pop false
}ifelse
}ifelse
{ % HP is the product: we use this method of stroking because of a bug in their clone printers with certain T3 fonts
{
{ % charCode Wx Wy
pop pop % charCode
(0)dup 0 4 -1 roll put
F charpath
}cshow
}
}{
{F charpath}
}ifelse
/cply exch bd
/cps {cply stroke}bd
/pgsave 0 def
/bp{/pgsave save store}bd
/ep{pgsave restore showpage}def % dont' bind
/re{4 2 roll m 1 index 0 rlineto 0 exch rlineto neg 0 rlineto h}bd
/scrdict 10 dict def
/scrmtx matrix def
/patarray 0 def
/createpat{patarray 3 1 roll put}bd
/makepat{
scrmtx astore pop
gsave
initgraphics
CM
patarray exch get
scrmtx
makepattern
grestore
setpattern
}bd
/cg_BeginEPSF{
userdict save/cg_b4_Inc_state exch put
userdict/cg_endepsf/cg_EndEPSF load put
count userdict/cg_op_count 3 -1 roll put
countdictstack dup array dictstack userdict/cg_dict_array 3 -1 roll put
3 sub{end}repeat
/showpage {} def
0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin
10 setmiterlimit [] 0 setdash newpath
false setstrokeadjust false setoverprint % don't use F
}bd
/cg_EndEPSF{
countdictstack 3 sub { end } repeat
cg_dict_array 3 1 index length 3 sub getinterval
{begin}forall
count userdict/cg_op_count get sub{pop}repeat
userdict/cg_b4_Inc_state get restore
F setpacking
}bd
/cg_biproc{currentfile/RunLengthDecode filter}bd
/cg_aiproc{currentfile/ASCII85Decode filter/RunLengthDecode filter}bd
/ImageDataSource 0 def
L3?{
/cg_mibiproc{pop pop/ImageDataSource{cg_biproc}def}bd
/cg_miaiproc{pop pop/ImageDataSource{cg_aiproc}def}bd
}{
/ImageBandMask 0 def
/ImageBandData 0 def
/cg_mibiproc{
string/ImageBandMask xs
string/ImageBandData xs
/ImageDataSource{[currentfile/RunLengthDecode filter dup ImageBandMask/readstring cvx
/pop cvx dup ImageBandData/readstring cvx/pop cvx]cvx bind}bd
}bd
/cg_miaiproc{
string/ImageBandMask xs
string/ImageBandData xs
/ImageDataSource{[currentfile/ASCII85Decode filter/RunLengthDecode filter
dup ImageBandMask/readstring cvx
/pop cvx dup ImageBandData/readstring cvx/pop cvx]cvx bind}bd
}bd
}ifelse
/imsave 0 def
/BI{save/imsave xd mark}bd
/EI{imsave restore}bd
/ID{
counttomark 2 idiv
dup 2 add % leave room for imagetype and imagematrix
dict begin
{def} repeat
pop % remove mark
/ImageType 1 def
/ImageMatrix[Width 0 0 Height neg 0 Height]def
currentdict dup/ImageMask known{ImageMask}{F}ifelse exch
% currentdict on stack
L3?{
dup/MaskedImage known
{
pop
<<
/ImageType 3
/InterleaveType 2
/DataDict currentdict
/MaskDict
<< /ImageType 1
/Width Width
/Height Height
/ImageMatrix ImageMatrix
/BitsPerComponent 1
/Decode [0 1]
currentdict/Interpolate known
{/Interpolate Interpolate}if
>>
>>
}if
}if
exch
{imagemask}{image}ifelse
end % pop imagedict from dict stack
}bd
/cguidfix{statusdict begin mark version end
{cvr}stopped{cleartomark 0}{exch pop}ifelse
2012 lt{dup findfont dup length dict begin
{1 index/FID ne 2 index/UniqueID ne and
{def} {pop pop} ifelse}forall
currentdict end definefont pop
}{pop}ifelse
}bd
/t_array 0 def
/t_i 0 def
/t_c 1 string def
/x_proc{ % x y
exch t_array t_i get add exch moveto
/t_i t_i 1 add store
}bd
/y_proc{ % x y
t_array t_i get add moveto
/t_i t_i 1 add store
}bd
/xy_proc{
% x y
t_array t_i 2 copy 1 add get 3 1 roll get
4 -1 roll add 3 1 roll add moveto
/t_i t_i 2 add store
}bd
/sop 0 def % don't bind sop
/cp_proc/x_proc ld % default moveto proc is for xwidths only
/base_charpath % string array
{
/t_array xs
/t_i 0 def
{ % char
t_c 0 3 -1 roll put
currentpoint
t_c cply sop
cp_proc
}forall
/t_array 0 def
}bd
/sop/stroke ld % default sop is stroke. Done here so we don't bind in /base_charpath
% default sop is stroke
/nop{}def
/xsp/base_charpath ld
/ysp{/cp_proc/y_proc ld base_charpath/cp_proc/x_proc ld}bd
/xysp{/cp_proc/xy_proc ld base_charpath/cp_proc/x_proc ld}bd
/xmp{/sop/nop ld /cp_proc/x_proc ld base_charpath/sop/stroke ld}bd
/ymp{/sop/nop ld /cp_proc/y_proc ld base_charpath/sop/stroke ld}bd
/xymp{/sop/nop ld /cp_proc/xy_proc ld base_charpath/sop/stroke ld}bd
/refnt{ % newname encoding fontname
findfont dup length dict copy dup
/Encoding 4 -1 roll put
definefont pop
}bd
/renmfont{ % newname fontname
findfont dup length dict copy definefont pop
}bd
L3? dup dup{save exch}if
% languagelevel2 ONLY code goes here
/Range 0 def
/DataSource 0 def
/val 0 def
/nRange 0 def
/mulRange 0 def
/d0 0 def
/r0 0 def
/di 0 def
/ri 0 def
/a0 0 def
/a1 0 def
/r1 0 def
/r2 0 def
/dx 0 def
/Nsteps 0 def
/sh3tp 0 def
/ymax 0 def
/ymin 0 def
/xmax 0 def
/xmin 0 def
/setupFunEval % funDict -- % this calculates and sets up a function dict for evaulation.
{
begin
/nRange Range length 2 idiv store
/mulRange % precompute the range data needed to map a sample value from the table to a range value
% this data looks like [ range0mul range0min range1mul range1min ... rangeN-1mul rangeN-1min ]
[
0 1 nRange 1 sub
{ % index
2 mul/nDim2 xd % 2*dimension# we are dealing with
Range nDim2 get % ymin
Range nDim2 1 add get % ymin ymax
1 index sub % ymin (ymax-ymin)
% xmin = 0, xmax = 255 (2^bitspersample - 1)
255 div % ymin (ymax-ymin)/(xmax - xmin)
exch % (ymax-ymin)/(xmax - xmin) ymin
}for
]store
end
}bd
/FunEval % val1 fundict -> comp1 comp2 ... compN
{
begin
% the value passed in is the base index into the table
nRange mul /val xd % compute the actual index to the table
% since there are nRange entries per base index
0 1 nRange 1 sub
{
dup 2 mul/nDim2 xd % dim
val % base value to use to do our lookup
add DataSource exch get % lookedupval
mulRange nDim2 get mul % lookedupval*(ymax-ymin)/(xmax-xmin)
mulRange nDim2 1 add get % lookedupval*(ymax-ymin)/(xmax-xmin) ymin
add % interpolated result
}for % comp1 comp2 ... compN
end
}bd
/max % a b -> max(a, b)
{
2 copy lt
{exch pop}{pop}ifelse
}bd
/sh2
{ % emulation of shading type 2. Assumes shading dictionary is top dictionary on the dict stack
/Coords load aload pop % x0 y0 x1 y1
3 index 3 index translate % origin is now at beginning point of shading
% x0 y0 x1 y1
3 -1 roll sub % x0 x1 y1-y0
3 1 roll exch % y1-y0 x1 x0
sub % y1-y0 x1-x0
2 copy
dup mul exch dup mul add sqrt % length of segment between two points
dup
scale
atan % atan (dy/dx)
%dup (rotation angle = )print ==
rotate % now line between 0,0 and 1,0 is the line perpendicular to which the axial lines are drawn
/Function load setupFunEval % may need to setup function dictionary by calling setupFunEval
% this is now specific to axial shadings. Compute the maximum bounds to fill
clippath {pathbbox}stopped {0 0 0 0}if newpath % x0 y0 x1 y1
/ymax xs
/xmax xs
/ymin xs
/xmin xs
currentdict/Extend known
{
/Extend load 0 get
{
0/Function load FunEval sc % evaluate the function to get a color and set it
xmin ymin xmin abs ymax ymin sub rectfill
}if
}if
% paint the rects. The sampling frequency is that of our table
/Nsteps/Function load/Size get 0 get 1 sub store
/dx 1 Nsteps div store
gsave
/di ymax ymin sub store
/Function load
% loop Nsteps + 1 times, incrementing the index by 1 each time
0 1 Nsteps
{
1 index FunEval sc
0 ymin dx di rectfill
dx 0 translate
}for
pop % pop our function
grestore % origin is back to start point
currentdict/Extend known
{
/Extend load 1 get
{
Nsteps/Function load FunEval sc % last element
1 ymin xmax 1 sub abs ymax ymin sub rectfill
}if
}if
}bd
/shp % this paints our shape for shading type 3
{ % x1 r1 x0 r0 -
4 copy
% fill interior arc
dup 0 gt{
0 exch a1 a0 arc
}{
pop 0 moveto
}ifelse
dup 0 gt{
0 exch a0 a1 arcn
}{
pop 0 lineto
}ifelse
fill
% fill exterior arc
dup 0 gt{
0 exch a0 a1 arc
}{
pop 0 moveto
}ifelse
dup 0 gt{
0 exch a1 a0 arcn
}{
pop 0 lineto
}ifelse
fill
}bd
/calcmaxs
{ % calculate maximum distance vector from origin to corner points
% of bbox
xmin dup mul ymin dup mul add sqrt % (xmin2 + ymin2)
xmax dup mul ymin dup mul add sqrt % (xmax2 + ymin2)
xmin dup mul ymax dup mul add sqrt % (xmin2 + ymax2)
xmax dup mul ymax dup mul add sqrt % (xmax2 + ymax2)
max max max % maximum value
}bd
/sh3
{ % emulation of shading type 3. Assumes shading dictionary is top dictionary on the dict stack
/Coords load aload pop % x0 y0 r1 x1 y1 r2
5 index 5 index translate % origin is now at first circle origin
3 -1 roll 6 -1 roll sub % y0 r1 y1 r2 dx
3 -1 roll 5 -1 roll sub % r1 r2 dx dy
2 copy dup mul exch dup mul add sqrt
/dx xs % r1 r2 dx dy
2 copy 0 ne exch 0 ne or
{
% r1 r2 dx dy
exch atan rotate % we are now rotated so dy is zero and positive values of dx move us as expected
}{
pop pop
}ifelse
% r1 r2
/r2 xs
/r1 xs
/Function load
dup/Size get 0 get 1 sub % this is the size of our table minus 1
/Nsteps xs % at some point we should optimize this better so NSteps is based on needed steps for the device
setupFunEval % may need to setup function dictionary by calling setupFunEval
% determine the case:
% case 0: circle1 inside circle2
% case 1: circle 2 inside circle 1
% case 2: r1 = r2
% case 3: r1 != r2
dx r2 add r1 lt{
% circle 2 inside of circle 1
0
}{
dx r1 add r2 le
{ % circle 1 inside of circle 2
1
}{ % circles don't contain each other
r1 r2 eq
{ % equal
2
}{ % r1 != r2
3
}ifelse
}ifelse
}ifelse
/sh3tp xs % sh3tp has the number of our different cases
clippath {pathbbox}stopped {0 0 0 0}if
newpath % x0 y0 x1 y1
/ymax xs
/xmax xs
/ymin xs
/xmin xs
% Arc angle atan( sqrt((dx*dx + dy*dy) - dr*dr), dr)
dx dup mul r2 r1 sub dup mul sub dup 0 gt
{
sqrt r2 r1 sub atan
/a0 exch 180 exch sub store
/a1 a0 neg store
}{
pop
/a0 0 store
/a1 360 store
}ifelse
currentdict/Extend known
{
/Extend load 0 get r1 0 gt and % no need to extend if the radius of the first end is 0
{
0/Function load FunEval sc % evaluate the function to get a color and set it
% case 0: circle1 inside circle2
% case 1: circle 2 inside circle 1
% case 2: circles don't contain each other and r1 == r2
% case 3: circles don't contain each other and r1 != r2
{
{ % case 0
dx 0 r1 360 0 arcn
xmin ymin moveto
xmax ymin lineto
xmax ymax lineto
xmin ymax lineto
xmin ymin lineto
eofill % for the bigger radius we fill everything except our circle
}
{ % case 1
r1 0 gt{0 0 r1 0 360 arc fill}if
}
{ % case 2
% r1 == r2, extend 0
% r3 = r, x3 = -(abs(minx) + r), x1 = 0
% x(i+1) r(i+1) x(i) r(i) shp
0 r1 xmin abs r1 add neg r1 shp
}
{ % case 3
% no containment, r1 != r2
r2 r1 gt{ % the endpoint we are drawing is that with a circle of zero radius
% x(i+1) r(i+1) x(i) r(i) shp
0 r1
r1 neg r2 r1 sub div dx mul % this is point of beginning circle
0 % point of ending circle
shp % takes x(i+1) r(i+1) x(i) r(i)
}{ % the first circle is the bigger of the two
% we find a circle on our line which is outside the bbox in the
% negative direction
% x(i+1) r(i+1) x(i) r(i) shp
0 r1 calcmaxs % 0 r1 maxs
dup
% calculating xs: (-(maxs+r2)*x2)/(x2-(r1-r2))
r2 add dx mul dx r1 r2 sub sub div
neg % maxs xs'
exch 1 index % xs' maxs xs'
abs exch sub
shp
}ifelse
}
}sh3tp get exec % execute the extend at beginning proc for our shading type
}if
}if
% now do the shading
/d0 0 store
/r0 r1 store
/di dx Nsteps div store
/ri r2 r1 sub Nsteps div store
/Function load
0 1 Nsteps
{ % function t(i)
1 index FunEval sc
d0 di add r0 ri add d0 r0 shp
{
% fill interior arc
d0 0 r0 a1 a0 arc
d0 di add 0 r0 ri add a0 a1 arcn
fill
% fill exterior arc
d0 0 r0 a0 a1 arc
d0 di add 0 r0 ri add a1 a0 arcn
fill
}pop
% advance to next
/d0 d0 di add store
/r0 r0 ri add store
}for
pop % pop our function dict
% handle Extend
currentdict/Extend known
{
/Extend load 1 get r2 0 gt and % no need to extend if the radius of the last end is 0
{
Nsteps/Function load FunEval sc % last element
% case 0: circle1 inside circle2
% case 1: circle 2 inside circle 1
% case 2: circles don't contain each other and r1 == r2
% case 3: circles don't contain each other and r1 != r2
{
{
dx 0 r2 0 360 arc fill
}
{
dx 0 r2 360 0 arcn
xmin ymin moveto
xmax ymin lineto
xmax ymax lineto
xmin ymax lineto
xmin ymin lineto
eofill % for the bigger radius we fill everything except our circle
}
{ % r1 == r2, extend 1
% r3 = r, x3 = (abs(xmax) + r), x1 = dx
% x(i+1) r(i+1) x(i) r(i) shp
xmax abs r1 add r1 dx r1 shp
}
{ % no containment, r1 != r2
r2 r1 gt{
% we find a circle on our line which is outside the bbox in the
% positive direction
% x(i+1) r(i+1) x(i) r(i) shp
calcmaxs dup % maxs maxs
% calculating xs: ((maxs+r1)*x2)/(x2-(r2-r1))
r1 add dx mul dx r2 r1 sub sub div % maxs xs
exch 1 index % xs maxs xs
exch sub
dx r2
shp
}{ % the endpoint we are drawing is that with a circle of zero radius
% x(i+1) r(i+1) x(i) r(i) shp
r1 neg r2 r1 sub div dx mul % this is point of ending circle
0 % radius of ending circle
dx % point of starting circle
r2 % radius of starting circle
shp
}ifelse
}
}
sh3tp get exec % execute the extend at end proc for our shading type
}if
}if
}bd
/sh % emulation of shfill operator for type 2 and type 3 shadings based on type 0 functions
{ % shadingDict --
begin
/ShadingType load dup dup 2 eq exch 3 eq or
{ % shadingtype
gsave
newpath
/ColorSpace load scs
currentdict/BBox known
{
/BBox load aload pop % llx lly urx ury
2 index sub % llx lly urx ury-lly
3 index % llx lly urx ury-lly llx
3 -1 roll exch sub
exch rectclip
}if
2 eq
{sh2}{sh3}ifelse
grestore
}{
% shadingtype
pop
(DEBUG: shading type unimplemented\n)print flush
}ifelse
end
}bd
% end of language level 2 ONLY code
{restore}if not dup{save exch}if
% languagelevel3 ONLY code goes here
L3?{ % we do these loads conditionally or else they will fail on a level 2 printer
/sh/shfill ld
/csq/clipsave ld
/csQ/cliprestore ld
}if
{restore}if
%currentdict dup maxlength exch length sub (number of extra slots in md = )print == flush % *** how many entries are free
end
setpacking
% count 0 ne { pstack(***extras on stack during prolog execution***\n)print flush}if % *** BARK if anything is left on stack
%%EndFile
%%EndProlog
%%BeginSetup
% Disable CTRL-D as an end-of-file marker...
userdict dup(\004)cvn{}put (\004\004)cvn{}put
[{
%%BeginFeature: *OKMultiOutputMode False
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *Collate True
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKAboutDriver Name
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKAlwaysKToner True
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKBlackFinish Gloss
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKColorBrightness 0
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKColorContrast 0
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKColorRenderStyle Auto
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKControl Auto
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKDrumCleaning False
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKDuplex None
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKHardCollate True
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKLongEdgeFeed True
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKMPTPaperSizeCheck True
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKMediaType PrinterDefault
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKOptionTray 0
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKOutputToFile False
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKPaperSizeCheck True
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKPaperSource Auto
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKPhotoMode False
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKResolution 600x600dpi
<< /HWResolution [600 600] >> setpagedevice
<< /cupsColorOrder 0/cupsColorSpace 1/cupsBitsPerColor 8 >> setpagedevice
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *OKTraySwitch True
%%EndFeature
} stopped cleartomark
[{
%%BeginFeature: *PageSize A4
<</PageSize[595 842]/ImagingBBox null>>setpagedevice
%%EndFeature
} stopped cleartomark
userdict/ESPrc/rectclip where{pop/rectclip load}
{{newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
neg 0 rlineto closepath clip newpath}bind}ifelse put
userdict/ESPrf/rectfill where{pop/rectfill load}
{{gsave newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
neg 0 rlineto closepath fill grestore}bind}ifelse put
userdict/ESPrs/rectstroke where{pop/rectstroke load}
{{gsave newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
neg 0 rlineto closepath stroke grestore}bind}ifelse put
userdict/ESPwl{}bind put
%%EndSetup
%%Page: 12 1
%%PageBoundingBox: 0 0 595 842
%%BeginPageSetup
595.0 0.0 translate 90 rotate
%%EndPageSetup
cg_md begin
bp
sdmtx
%RBIBeginFontSubset: DHGYSU+CambriaMath
%!FontType1-1.0: DHGYSU+CambriaMath 1.0000.6.9000
14 dict begin
/FontName /DHGYSU+CambriaMath def
/PaintType 0 def
/Encoding 256 array 0 1 255 {1 index exch/.notdef put} for
dup 33 /gid3 put
dup 34 /gid8 put
dup 35 /gid18 put
dup 36 /gid19 put
dup 37 /gid30 put
dup 38 /gid2 put
dup 39 /gid17 put
dup 40 /gid16 put
dup 41 /gid29 put
dup 42 /gid15 put
dup 43 /gid6 put
dup 44 /gid31 put
dup 45 /gid32 put
dup 46 /gid7 put
dup 47 /gid4 put
dup 48 /gid28 put
dup 49 /gid5 put
dup 50 /gid22 put
dup 51 /gid24 put
readonly def
42/FontType resourcestatus{pop pop false}{true}ifelse
%APLsfntBegin
{currentfile 0(%APLsfntEnd\n)/SubFileDecode filter flushfile}if
/FontType 42 def
/FontMatrix matrix def
/FontBBox[2048 -3020 1 index div -5046 2 index div 5873 3 index div 6383 5 -1 roll div]cvx def
/sfnts [<
74727565000900000000000063767420000000000000009C000000046670676D00000000000000A000000004676C796600000000000000A4000009A4686561640000000000000A4800000036686865610000000000000A8000000024686D74780000000000000AA4000000506C6F63610000000000000AF40000002A6D6178700000000000000B2000000020707265700000000000000B40000000040000000000000000000400BE0000048605540028002C0030003400000135343E02373E0335342623220E020723353E0133321E0215140E02070E031D01171523350111211101112111023706162A2417261B0F413E2030241909603C894346633E1C0F243C2C20261507129001FCFD060361FC3801E71616252A3527192F3339234B521424321E821E2E1D334629263E3D462D212C27281C066EA1A1FEE4049AFB6604F7FAAC055400020081FFF003ED0565000D001C00000522021134123E013332121110020110123332121134022623220E02022CD8D34175A461DBD6E5FE3C797F79753C6B4C455D3918100154015AB8010CAF54FEAEFEAAFE9EFE9502CCFEBAFECF011F012DE6011D7C529ADD0000040079000005F505550030004F0053005E00001321321E01151405151E011F011E031715212E0127032E032B0111141E02171521353E023511342E0227012411342627071E0115140607151E021F011E011733352E012F012E012701331123051133323E01353426232279029ECCE873FEF53352384A1A282C2E1FFE1A0E1E1D93162F1F2326120B16272DFD903E2A0D0A17262E03200131ACA905584E75821826201E7615280EC714300F5F2F6049FDC4A8A80117515664286B6B45055553A37AF9750A1B6266882F4236200A31133337011C2958210EFEB4484121160C31311027484A0361453F23150DFD695301057D98170A369A6891A6270C10293339E12A48150A144B1DB559661AFDEC04A510FDBD4A815F8F8C0001009100000469049A001F00000115211E0333211521222E0435343E0233211521220E03070469FCC6052C598D7C01A7FE556290746740203E92CCA2019AFE65637B5243260502988B5D9065308B18366D84A6619ECFA1468B16315A8353000001007C000004D204FB0007000033352111331121157C01E48E01E4850476FB8A8500010076FFF004500565001E00000111232E0123220211101233323E013733110E0123222402353412243332160450881868549EA2948F495C3714896EB662D0FEF97D93011EC765A40536FEDE716BFED1FED6FEEBFEE3316259FED11A1896012FE8D90141AE16000001006C0000052B0555002F000001150E0315112301262723161511141E01171521353E023511342E01273521011E011733261135342E022735052B2821170CFEFE3E5B2B090A0F2736FE8635270F0D2935
01950162216A29100B0A16212A0555420D121E3D3FFBA6030A9E5AD7EFFEBE4B3C230E42420E253A4B03614B39260E42FD993AC658EF011BBA42391E130D42000002FFF3000004A10565001D0024000021373E0135342F0121070E011514170721373E02370133131E0217070121032E01352302F60B3B3A0307FE48372724650BFE670B1F373E3802819748051A2D2B0BFD4B01871103040B31055267272E816245632654103131042953600454FBA54F592B0631021C014242C62C00010018FFF0069D03CD00510000013E013332161D0114073E01333216151407030615141633323637170E0123222635343F013E0135342623220E02070323133E0135342623220E02070323133635342623220607273E0133321615140701B85CB65D60640156AB5C5C641D411B1A1C1E443E39568052414E212C180F2E342A606A43145BAD73150F333626616E3E155FAD92161A1C1F453C39587F4C3F491702BE89856D670E07087A776A603F74FEFA6D2D28243145385B565D48417EAD5E5A1C453D3F85815DFE4B01FC5D5920483D3F8B805CFE4F027A603428243343385C555343373E00010018FFF0047F03CD003A0000013635342623220607273E01333216151407173E01333216151407030615141633323637170E0123222635343F013E0135342623220E020703230111161A1C1F453C395C7A4D3F49180C62B15E5D641D411B1A1C1E443E39568052414E212C180F2E342A616D42155FAD027A60342824334338605153433541048A856B5F3F74FEFA6D2D28243145385C555D48417EAD5E5A1C453D43877F5DFE4F0000010017000003AA03CD00250000013E0133321707232E0223220E02070323133E0135342623220607273E0133321615140701BC62B55D4931306706161E1724556A3F155FAD910E081A1C1F453C395C7C4B3F491302CB857C0BE02A2E123E847A5EFE4F027A3C421628243343386051534332350001001EFFF0042403CD004C0000012E0423220E0107273E0133321E0417333E0333321707232623220E030F011E0533323637170E0123222E01272627230E0323222737331633323E0201DD0F202216191315222821413F744F1F2F241C1A17090A6063443F342F1E2846061D09141D384625441220191316170F1B33304146714E2B3C2C111F070A6A67433F342F1E2846061D0E1F3A6601C44F927E270F132F322B5F5E0E1D2E4F753F877D3D190CB52A06143A542E55608C5D361B0B2A4A2B68551F4448804495823E190CB52A0F397A00010007FE4C045C03CC00360000052627022726272623220607273E013332171E0317161217361236353426273721170607060706070607062322262737331433323601E91D32351115170E152038294145784A291D14281F170E182D1061873B28300A01071B4C8280A59E6949
44363D15370F2B4F2C3A9A02AFF701083F4C150D34402B67550B082542524D81FEE37A8C010CC63E2F22033132D0EDE8E6DB62431D160706C240910000010087FFF004E70565002200000103232E022322060A0115141E013332363733030E0123222635343736123E01333204E74083031E403754A48B551F4D44688937834061C06ED5E4121D86CBFD93AB0534FEDC595A2D84FEF5FE9492546E3C687FFED91C19E9DB536CAB0122C5600000010037000005DB0555002F000001211316173336371336353426273721070E01070323032E012F01060B010E01151416170721373E0137133635342627014A017CC14F2E0D1D2F460D272C0E01700E393618F1E4F01C2C1F0F1242480706272C0EFE900E393618B60D272C0555FDCAE7B1ADD201413C392A2706424210506CFBB902BB528F6E0190FED9FEBA202F262A2706424210506C03393B3A2A27060000010095FFC7056504CC000B000001112311213521113311211503448EFDDF02218E02210207FDC00240850240FDC0850001009502070565028C00030000133521159504D00207858500000300950137058F035B00030007000800001335211501352115139504D0FB3004D02A02D68585FE618585011200000100B4FE3C032C05A5000D000001101217072400111000251706020161E1E718FEDBFEC8013901241BEAE101FAFEA2FE3A4D4D4D01FD016A016901FF4D4D4DFE4100010026FE3C029E05A5000D0000011002273704001110000527361201F1E0EB1B01240139FEC8FEDB18E7E101FA015201BF4D4D4DFE01FE97FE96FE034D4D4D01C6000100000006E66638EF545C5F0F3CF5001B080000000000B9E6983D00000000D18D01E4F434EC4A16F118EF00000009000200000000000000010000079AFE390000175AF434FDA416F1000100000000000000000000000000000014054400BE046E008105F5007904FC0091054E007C04B40076058D006C0511FFF306B500180497001803CE00170442001E047A0007050500870614003705FA009505FA009505FA0095035200B403520026000000500084011001400151018501CE020C027F02D4030E037703CC04040454046C0479049004B104D20000000100000014005F00040000000000020010002F0086000009A411280000000000000000
00>] def
/CharStrings 20 dict dup begin
/.notdef 0 def
/gid2 1 def
/gid3 2 def
/gid4 3 def
/gid5 4 def
/gid6 5 def
/gid7 6 def
/gid8 7 def
/gid15 8 def
/gid16 9 def
/gid17 10 def
/gid18 11 def
/gid19 12 def
/gid22 13 def
/gid24 14 def
/gid28 15 def
/gid29 16 def
/gid30 17 def
/gid31 18 def
/gid32 19 def
end readonly def
currentdict dup/FontName get exch definefont pop end
%APLsfntEnd
42/FontType resourcestatus{pop pop true}{false}ifelse
{currentfile 0(%APLT1End\n)/SubFileDecode filter flushfile}if
/FontType 1 def
/FontMatrix [ 0.00048828125 0 0 0.00048828125 0 0 ] readonly def
/FontBBox {-3020 -5046 5873 6383} readonly def
/UniqueID 4480348 def
currentdict end
currentfile eexec
54544758EC884CF30C3CD503CEDBFF3839C47C3C3333173232E3FDBFF439491DB843E1924E63AA7726BBB0485AB56D93D8C0906F647A47162891E73FFC2A9873C4B1EAC5EEBDFFC4D06084FBD84139DF4583C6E259D10699944D1068C9C45667DCCCFB9B7EA01B606435EDCBD273ABAC093D14085CCBAC149BD7382E842CFE0D7FE4FD2EF589A2471F6074A80A8B675C2F7A50D63AC1EF90D787BADD11633CB01CF6EE3B37AAF9078A69AC4740E9B6525D78BBD839551A1CB80DB8682FA5E87591BBD6EE8B946063A2A58D9CA3685AB305495DC5FB5747EB8A9A059C4976C0FE4EEAB1D56FF47F1E9664ED9F4A7DAB763AF92B2F6CF2FA7DEC24710E0B9096E30F772BA7FEA9BDBE496C42ED2CEB58F54E80BDF57CE7B4DB6CCFE7182F43BF93CCA0767AF95D62C5D2C3DC6AE1E6D139F51A2C63432117F1714C5566572EE9967A715420ABDCD1D7BD74F8450B89965FCC81C6ACA565C5F3CCF91D430D1F953E4F1A645300A98DD8C47CD64555F08F422340A85404EAE0D3229C4F9336B9470CACBD6BBF3395104750A915CC6EAAC197668267B8C62D2764C8CD69FD937CA3C924D997A0EDE7964BEB9EA2F92EF70C5E5DA0AA55675454E59AEC12A68086DDD95476477C46AE143377694529C58844212FC811560E27EEE2CF00BCB281E2150EE8A95E8E056CF63C096EC954E9AB4D39A5004249114C46FAE277AB81A3D6A4AED40F170AFC7E8DFB9E059B8F6C53C0033EDB8B5B02775EBCD71DC0A1D4811462ED12BB0D3CA8B3855B6BA68D0DF2809A5EAFDE97610C3BECBBA1DDCC5F3493A9C153B0CEF50BB543F9F0F1793C6E8E1D53953BD4A43CCFF02BCC92661B9386101B96534C0F5AAB457D8AD94F472A22EF8F39D45FCA5ADB5FC440387795AE6CD1E420C80EB8202F449921DA0A40FC14208F804E153C40195419E378187279956442B47F490E28EA1882729AB4D52869695D269AADD1F203D8A3601DE2BDC35729682FA6C73664029FF98409E52DD0088ADFD439875E98E24A041C9286A981DE36C91877AD7B3752D45A99C541C1B18B2BF2AC244589CD537FC45AD4167E335559B5108D192269D4012F7205E29E555F8B607BBAF82A85A9BA9088F0D2A21DF433DB1E210F7DFC5828AEB575BED452C986F062613D777D2E3CF464E96A620D882A4A1C7072C67A5EF5630BFF66EA02A68659AC6722EC030203512CBECAE6F4C314397C446207CCFCDE54CA2066A76E2B62F9FDDFA86FD1B28300F3D20754DEFEC7364C82CD34006BEDF5984665367DA956F83E272BDBCDC2FE9061FB9AD4C354CA211B68371F82DFBE222402A64941506B53A81AF39D2F4B399096B371BE1192BE9E0CA786E9CE7A86A19925FD06C8CF3F73F6E5555832DCF843CA67F8ED6A40ECABD0F46ACE4F970557A8371BFA7F4D7D28E368EFE4219C2C00E9728B148207FF
51EE35853EC2326117F4CB5E57BC2FEB64A29F959588A9E10E4DFE88E4AB42C7246BC12B7433F7A8F45F1A98D97896E2AC062F906FDBC45F673439060AD49B291218BBEC74A40ADF412084198D09EE8BE12977B94F6F17470163599B088A13F9A69B3BE3A2D9A4510520616819AC08E8364C1A0E85B2D6A3B569D1F2C09FA28A88C873776E9780010236D1E8DCDB540D0EF9D1424E5D8690EC204F2A1B75478F067C43F7A24775DB7051476086FEC624C18DA86681887CF3C9416408D26D2021CA175824C90D3F5BD52C0718D53022DC8C5A453FB95A272546BE6DB59A148ECD8E21D93CC1E19E24FECE9ADF84169CA9D0256955A171695461C6BA8FC32F71BE2A77860337E5EC44806B6A53BDE7ED239CC9FD6636DBEF651631D40243931B0D9234E61F8E41B08CA70961D4CA15FA1C018FDE0B1934F8E16B0533876454E49BCD0B48A53EE9588172988A5051B10EF2F7859944DF1B204AF286FF345CAEBDC57B13350532F993C5C5B3307A01900CA4542E842680A3D771E028CE1E7FA6E2EC3482D2B6F4223DB66FCF43EC7CF14580F146C0FFED997014E9B99878858E00AFC8BFD778129D86639BF533B34D8E6A614E6648783904CB0CA521B8534E4270BB7E216A88A9175F006E40FAC7EB165711B4FF4C9E57984DEDD4DD901C366D217782ADBADC65DDBFE3210EF32C53DB35CEF442E344FAE11360DCDDB0DE32F3E20F4104A0B75E746BA6DA8501155E83C22F2093D2A10B1906F6D5AFF3166F9919C67E21E78424B72E1D30F096C99D58EC458D385AB10109CF9A59EDF7229B01D077FEE023CBC2BCA3C9A8F7516F5B8C775B53650EBA97A6EB574CC6575302DE78FEBD9F7ADDAA586C88A44E0B31D48F7A328367361E8CD005D281362841F8F644A42C5334CE8090793F5589EC7AD2E170223B2F58966276C723E531EA4FF5369F20BBE4EAD23808F95A5D3A25F98BD1235787784668AED03283724B6B1EAA3E7738400299821BE694CA357478618EA295AB8F7727EFD29711B63D18ACDE6AF411337445FD4AD069BD09C80D39BB471C8030E07FAD5F5A6BAC249F77C1368E1FFFF576934AE87BB6648B476CF5B451A6B22105EB8431214F9E35C592A994C707F96EFD0940649605654971C32A07BE19BE63CAF93F645FDD05B8CF7FC9A92CE3AAF20C227A6B70EBB73EF308C3C1DD031BD21C6B4482F21F1D4CE51D2772BEB915343CB102EEB4F7BC875AD0EEE21A6AA26CE266B0BCB8593767449F1A187CDD4241C00E1AAFBA7E286CF357193499D98C722C0DF74979531D0727C2801183A9194D52D3BBB30737527846E18EF1102A3F8FF6A946DDDBE323F91BE00067E1F17D959994FBA674CB1BCDCABFC655F7DC6134DDD8CC7B75F31C400208069C01CA1FC36DC81C82E6C22457A11929EBE28FDA3660C3F39C83D51C15CD9C31526950E903
98E5C3E9FD7B00A4B1A072A767CB9039D57A082090E746234284E2C9058200D042FF29CF58E4FF561FCDC65A4BB1E923F838E409F0208AD3C57BFB9063CBA4D5346E35EE3BA43FF7E5791E0DBF91A014CBE8413A540EF082CDE14CE2B9D6E27DAC4D6093F329A09877DD768B15A59C1CC52CDDA76A4C833086A1295F9DEEA1B17DD6D348EB76D9F21F27FFA8EAE43C0BB1C61F923CDE9E3A2620240FF8A0639396BB8C5F9FD645E2E8B754FFAE733F27802F221F96A15EC7954F47573EE2D8C0CC1D8A2A0B71DA4F963860CD5418E5FD1EF736B46ACA55118E43500B6DEE76E63128D08D56969115DC63190A29F2A5E456CC0999494C0CC14FF51D0AEE13F4E3370AE1677F5FD2944BFD59B69255CB20E0ECC4F38B5CAC11CFC18D22A3A6F534DA469A5E0C55AE9C690B283664709C5610B664AC488FF88ED40EA8CAC1EA994DC9B7FB25E33B232BBA11D53B8323C81708D5083777718094ACEEA9E9B5686732CC270D8711AD2CEF58032E370E564B8A2902144279C5557232F80CA2733904FC025C4E7B407DE7FCBE4A248455DE32003E89A6179F0BD93F2FBA02B2420C475AF4E026C03D6C54740053B2953E8221CF6DE6B9820482172D9C1E4C6A359104004AC033F7BA7D747C2926D66491DB409E1CECEB88465F825E75918D7C14C021F12FAAB7975BE5CF69B6A55FF8E52E15EB2DFFD031E127BC3EFD7B659E2122C1FF1B36A68B5D3CDF8BD0D417CD5B2E3E380B415922C97FBB0B142069485906E3147A85D866300EDF79A76724A18ECFBE93955033F264D4DA642C58A3EE398C3723ADF857A552AD2C0F79E85CB87A8DF3DD7C30E9A4EEDCB8D2B9AF8904E93905A31DC00AA1E4A623CA35A731C73FDE4FBE1A86CD5C8E77340825E271D4FD54A10337C839DC4202F57378E0751FB27F881918A2036D8942B47405C97B73EF8B47A191ED5BD3997A133E0F8BE78A44519B112DBDB1820F586FA558BB34D51D37F0A0F1B8296D133FDA9DA6B37CCB055AEECDE11642522F3964CB85FB74BED71BB9AA13D729454850910E08A82E281E1E1AFADAC3158AA32669893F263C8D19C8419F89A0F3E83E8782BA797516033CCB50550F3096B5281AA02B56D172174368CE898A0FEAAC1073D125BF0F2939FD8A75E79F3D513AE5B1A0C53EE40F2319AAE94657A776BF974391101F79AAE47392FBFC8FBF5DE92DC3078632E324CFF0A28FC112C8A26A8AC44B4D1D3F579A40E335B55788DA3E876E728A077AFEEE628857A855EBF269E2A07890523A99720003503A5C867884BA17E10F86D38FDC33F412411D00FC2804C2FE9D3E96F823B4AA40C57B2B72B925EFACA47C12DFEEA2A600D3ECEEDCE4B4234C5BA53B1398B8C22A3E7A34C761E5EE277264812BC8FB93813DAE7FC203828A99C0E4BD8EE8320FC5EA94314C65A8A1644DAE016D8B73E9379D
2AC6A6DBDB745C3A8399501B3E2CADAA5F5B2788835A422313E033462FD4D51401C3CAEA91FAA7CE56CD46522C93B89F3CDE665622353B8AB1667DAD67FE4FAC496871006346DBD8E22B182D3106C74EC55D6AC4242FDBBA624F92F33A60D3455294F071B825A1AD3978A741CB6AF6FC4179B89B94C0C3D8EBF05DD94ACDD896D71ACA4BCAAC2173DCFD9440793F97726C9CB3BFC2514F86DB6344B7975CB314954776909E1D8F08A9024ECA50D3F319D4CADF2DAF493A5061882802A5B9C149598578A48C14B6BB4142331435C3284F8EC4F14E4F1A727E7AC5B52EE2502A0B395661DFCC675F28FCAFEE05C7EBEF2C09F9E7B021CBA96A5D2D1F2529C0A9503C6FFA8E03288E65CEFA3D10608290BFBE160B05C996496431A033F6C68199063B2C490CE3DFEDF4AA027695C5668B037FB52AADACA7069BAB9CE0FA670FB3C59305660434F6182A7F4E570D0B3EE6DC2CEEC913EF8A8D823707BAA0BD3E4EB3A21311B9068489FD155DC0796B3716923DAADEF03B4AC66C9103C519E92E30A7E26B433715EF43AEB7997D942BFD5815BFDF4F18A8422410349D0F47E82BD7C64D5E29E7811B490FB8D966403C2B2ADBC7CA80427A76293429BA2652E1977489F2647061201F073CF6B3B00F89DF453CF07ECAD93DE8E5C325CB7FBC66CAA2D41E05B7BBCC7A5C22C26D4EC93E95E7FA2B947A1E08CC2F7D2758D4D321B9C68DC3E22A1216BD465DEFA336DF2D0773846B01646E38ACF6E0DCE11C33A7998830DDF1B98230AC4381257ABB033B0D484129CDD3B6EE74F631B0FA07CFB8FE59AD33BF6FFFECF1EBD1B6C955B3A67C3739CCFF1F4FF15F97C117753BA8781CA20D18FCE062CD855002C5657533A6A48867E9B68B99C908B945F1AE675314F4998FEBD2EB67E3D4D5E8B9A505081855499A44E718F00A0993BE5B31B568A55E20066F11ED3EDC5326FC65F3C84C1E7D948A361446F0E4926EB5408E675DF0A1625CFCEA6E0E798CF9F5086C15F71A2F81297522101EEB1FEE3CFF750202375F5CF61588EFACB87C8035DADB4FFAD39E639F580976453FBE5CC9D45EFC13CF9DF047C6BA2B6BA7D55B3E3811829B91DFA1CBD2891D04873B160E03E7432E254B534B818F65D327F3644E2227F2AF84ED6588B5F19BC1F51B98DE6975082EC9052A4934E338869F29A91A501BB5C1EE5DF41A5EFAE919580093B72B9FC95E9A7DD7AFAFC5A62097E9E81954EADB65CA1FE204F3A4382BE3B5D9262D0FE8FE01BFF0CFD3C399A83405F5206845F9971CF7C5D9E0A6A4EEA8C5C4D2E62515F2DE7993009C7D90A5E85C021B8B62B44885D965119487B43CED80D6E75BA83E747CDB752833B668F33357A386AD2F64AE36FAAFD05262C2892EBA7404CA5AB596ABB000BFEE72DC641875B9F46EE9BF1240A91BC4ADA9C23281594F0D41A1D2C7826FEE2C
86BC552CE789F2C195E98F1F045A3D8875355509DF390BA8F6C51CE6CC6D4746364C30FE6FF3B8D0225DF453F6BF50EE01585C1D8D76FC9ECB8B8641E0D07575C67E5ED7B191831646257A99FC09B5529E306A7285F910D9D511618F1D21397A4BB3B2C03C228BF56F2E67D64C25C286DB6CEF4B01E27B7B1464F626A5D708D9E536862DE6884705825E07C84447C2B0117285638D5F8D6BD56A55CC6413FB531B89FB7CB7779EF5ED4A28DD6EDD551566B49A3892ECB4939C5EB97F09753DDDB308A0970529FD4AEE0B932794099A2BFAA3CA011F841D67B11A50C2AC27CA6762C02C9610D4DD0ED3DD22F1C9495D4D63C3B3113D3123C51C7A8861D9034CF86EA1D1691FFD3E4E66587724B8331FF06B8E3B096F9E5615A6196D36791439273CEB7804DFF8B8A0E4BFBB50DE89E9AAC95BE5CCD7039E63654547C30B3BD9B5A9159A7C77C3EABF72C591C46D13472401895973763F83EFA932F9224E4793676E4FAF63FD7CCAF1F6AF60396C4AEE96DBB44B1C936F5040EE668C144BA653D5AA96C26F0D233E0B306D48B9DDFC9F76AA95EF8614F580333F81172EFAC1492D9D10BDF5FAB9218195EBE55E41386A3326564A03EB0D1809A381A5D6C92FAE089E0E7D46BC1F3BDAE4B88C99382D5713D234724BE3E3F766AC9831CB2364C4B0FA1B4251F2CBB6381C05E6F64C2F48D2C00305339C59D802CD30889F3F7FC62FEA1DC269C2E374E9BE6D294A60AC953C93CC5E0ED055CF08CE9A416473318FAD5FFE69112208A9E2504D491D0DEC91706B4859C7DB99CED84D55250BC42946596CC477B7E62619C163D86535E67F5D2CEFA4D7974AB87F3FB44409CF1A98CA5C3B62D1561E69404E448A70FBD0E4F23882C67F73B110183527BAC4562246E2AC8E9D238C65FF5619B1688678847CE029DE7532BA9AC9A738ABC94726ACCD60AF09A0968C0A4B69C9433E5E5A62EF04D653B273ECADDA79B2C20B188F45CCA6B2907AE3A28AB751E0C0DD66704D1FC295A30D9B58FC59B237A31DBF397CEF54830E7DA878087B97E7F9B51943D71917DE588BA6E6A2534283E44388F22D4682F747D5FF7EAF55FBFB7C6BA9703A2726023EA36F40692140E833E9C4D01DEB789721AC39FCA7B1CAEC8AD1FD816E9179DD27048304B1E732DCFFD3322DE643A3C86F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%APLT1End
%RBIEndFontSubset
/DHGYSU+CambriaMath cguidfix
/F1.1/DHGYSU+CambriaMath renmfont
%RBIBeginFontSubset: SSXNGJ+CambriaMath
%!FontType1-1.0: SSXNGJ+CambriaMath 1.0000.6.9000
14 dict begin
/FontName /SSXNGJ+CambriaMath def
/PaintType 0 def
/Encoding 256 array 0 1 255 {1 index exch/.notdef put} for
dup 33 /gid69 put
dup 34 /gid68 put
dup 35 /gid67 put
dup 36 /gid71 put
readonly def
42/FontType resourcestatus{pop pop false}{true}ifelse
%APLsfntBegin
{currentfile 0(%APLsfntEnd\n)/SubFileDecode filter flushfile}if
/FontType 42 def
/FontMatrix matrix def
/FontBBox[2048 -3020 1 index div -5046 2 index div 5873 3 index div 6383 5 -1 roll div]cvx def
/sfnts [<
74727565000900000000000063767420000000000000009C000000046670676D00000000000000A000000004676C796600000000000000A40000032E6865616400000000000003D40000003668686561000000000000040C00000024686D74780000000000000430000000146C6F636100000000000004440000000C6D617870000000000000045000000020707265700000000000000470000000040000000000000000000400BE0000048605540028002C0030003400000135343E02373E0335342623220E020723353E0133321E0215140E02070E031D01171523350111211101112111023706162A2417261B0F413E2030241909603C894346633E1C0F243C2C20261507129001FCFD060361FC3801E71616252A3527192F3339234B521424321E821E2E1D334629263E3D462D212C27281C066EA1A1FEE4049AFB6604F7FAAC055400010047000004EB055500220000132111232E032723111E03171521353E03351123220E02070E0107234704A47115273448368801081D3A34FE0227372411871D2B221C0D192C14730555FE8F4E63391602FC1B32412A190B4040071025473E03E5050C130D185F5A0000010029FFEE075703FD0068000021233E0535342623220E02070323133E01353423220E0207273E0333321615140607173E01333216151C0107333E0133321615140E02070E0315141633323E0237170E0323222E023534373E0335342623220E040703BBC30E2324211A103136306E634E1066C4960D0C3B122529301E4531534D4A284A5106080C5FBE646A6902045DB8646A69141D220F090B06021C1F122429311E4530534D4C2A263E2B1823131F160D2F321F4647443A2D0C409396927F651E3F3B4875934BFE24028C36501A490F1E2E1F4132492F17614F162A140585846D6A0911097F7B72671F697E873C273121180E26220E1E2F214232482F171C31432852814177654F1A3E3A20394E5B64330000010029FFEE050D03FD004B0000013E0133321615140E0415141633323E0237170E0323222E02353436373E0335342623220E04070323133E01353423220E0207273E0333321615140607020561BD656A69121C201C121C1F132528301E4531524D4C2B243D2C181111121F170D2F341E454643382B0A70C4960D0C3B122529301E4532534B4A294A51070902F4858472671F6E828974520A26220E1E2F214232482F171C314328286B404177654F1A3E3A1F374B555D2EFE0A028C34521A490F1E2E1F4133492F16614F142C14000100B4001E0503046D000B0000090107090127090137090117034201C164FE40FE325D01C9FE396401C501C55E0248FE3A6401C9FE3B5E01C801C164FE3C01C45D0000000100000006E66638EF545C5F0F3CF5001B080000000000B9E6983D00000000D18D01E4F434EC4A16F118EF
00000009000200000000000000010000079AFE390000175AF434FDA416F1000100000000000000000000000000000005054400BE05320047077B00290532002905B700B4000000500085010F01760197000100000005006900040000000000020010002F0086000009A411280000000000000000
00>] def
/CharStrings 5 dict dup begin
/.notdef 0 def
/gid67 1 def
/gid68 2 def
/gid69 3 def
/gid71 4 def
end readonly def
currentdict dup/FontName get exch definefont pop end
%APLsfntEnd
42/FontType resourcestatus{pop pop true}{false}ifelse
{currentfile 0(%APLT1End\n)/SubFileDecode filter flushfile}if
/FontType 1 def
/FontMatrix [ 0.00048828125 0 0 0.00048828125 0 0 ] readonly def
/FontBBox {-3020 -5046 5873 6383} readonly def
/UniqueID 4480348 def
currentdict end
currentfile eexec
54544758EC884CF30C3CD503CEDBFF3839C47C3C3333173232E3FDBFF439491DB843E1924E63AA7726BBB0485AB56D93D8C0906F647A47162891E73FFC2A9873C4B1EAC5EEBDFFC4D06084FBD84139DF4583C6E259D10699944D1068C9C45667DCCCFB9B7EA01B606435EDCBD273ABAC093D14085CCBAC149BD7382E842CFE0D7FE4FD2EF589A2471F6074A80A8B675C2F7A50D63AC1EF90D787BADD11633CB01CF6EE3B37AAF9078A69AC4740E9B6525D78BBD839551A1CB80DB8682FA5E87591BBD6EE8B946063A2A58D9CA3685AB305495DC5FB5747EB8A9A059C4976C0FE4EEAB1D56FF47F1E9664ED9F4A7DAB763AF92B2F6CF2FA7DEC24710E0B9096E30F772BA7FEA9BDBE496C42ED2CEB58F54E80BDF57CE7B4DB6CCFE7182F43BF93CCA0767AF95D62C5D2C3DC6AE1E6D139F51A2C63432117F1714C5566572EE9967A715420ABDCD1D7BD74F8450B89965FCC81C6ACA565C5F3CCF91D430D1F953E4F1A645300A98DD8C47CD64555F08F422340A85404EAE0D3229C4F9336B9470CACBD6BBF3395104750A915CC6EAAC197668267B8C62D2764C8CD69FD937CA3C924D997A0EDE7964BEB9EA2F92EF70C5E5DA0AA55675454E59AEC12A68086DDD95476477C46AE143377694529C58844212FC811560E27EEE2CF00BCB286FAF7263B5B68DE54D4A7E5E5AE8FB225BCAC76913AC93E95998B5B364FFA8043716AF73C2CF345A3A7991E41B970288ADFA59B6933CD2E08646CE8521520E9BFDE3E63DECC5469BE153BD1399610C6E5F857CC135979D5516C8105695A49182D3263013CFE3E713C22E3B664F813F4D611D75D63909BFF2E9E5CD203592AC19CF224B9FD2E0298DD5872D5BF40F88BE9547A26ADBCEEBCDBF705D5A75A78682065B4FEC90A25DBB88B89F98A74FC15EBD10DFCFBC881CD584169C755271B9B5379F8B1E52CE96C8F7FACD3E16151C634D2F12FAB68D60E65B6134E53E4CF4E7F0CB2D161828B235D361BBE9F0FAF39830FB0C03EFE37ACF8B3B2B0AD67D2775D0FC72FA23C9C08F4E11B1018FA729C79F0DA5A459ED874E9390ABFAB5FB977A503E346A5B9B4C74841C8ADC1A22CCDB778FEA23A2CAA762C42C9BA56FE2644F1D33FC41B1B43167BD6F70632330529BA67E8E89E63C2AE66A31EF016CD6A2729DCF531037A927165E0EB527541B831031502D230B0948B4C325B804E11C4E07619F7EF0ADEF7A9B2E2E37F83F92562D8CDCD44119BDA58BB57F3DD3ADF25C8DB65A25ADA008B5BE59946537D9460E2DC6946D59C8F98606BF911E396E92A73AD3C9DCCE16854A32D628E39566391D0E06B3A5894B044A974B082F1164D3D3A2EBEFEB42A19B7A20A781BF44BED86F440333A600D621ED759693BF5A42529E8C3C60CB1695FA400D6912B922459E5DE92397E03EFBFF143EAC6D595734881D91837DE50
62AF40E0BB0B8C6443F6846959CCD80B8F5D7E9098544086965B0FF31FA5C23D979802D665897517885F5C987A402C7FBAEB696CA3FD5D0C47C5ACBD0E8FBA08A540D9049922A64DEE94784BBB29BAE9F53E02166366CAF24BFDE5FDBC3EFF629CCF6FC823112DA07FB73E4F04916A2B932B01E33E95913E61773AB212BCB59359CAE6CB9B4CEDAE1332208BC755AE6317F9E00240B06B37B01BD207308C53F1D06A08967348869B0D7BDF8A2BE2C9AF99C7E05EB7CD27DA7BE863F5DC31E4E6AEAC8C1E76DC0693FA88FF38E93CF9EC8D214B4ED9399995D9F8282C93FFD1317AA0A10ABF44D021EA278E1182089DD9C3F5B78DCE271CEA86252949E7FA4A01F186EE76C5DD5A92F59343347F25E078F3FAF45A6F0BB59DD0F27F50D02F58B1519CA02A726A89B3B25C6186C2EDD24B526DF87EDC9DCE1058DE18B4F0759E52188C1A6AB5184A2710AA412D909A9873141627D31DA6CFE67D8226EDF513E9DCCBCACDEBA31362022AF7375F1953A6603F12DBAC160F3200D556D51629729A05E9E4CCAC1198F0CA4954A2EBBC2AE8CF6D4B137EB673F25630C91F23B98A5D69DBD2B18BF9FF9B564ECCC9BF02C0D22F5BA4370BB059D9FE4D89BE83E8193BC6CAE4DE9EF70A92A483F7A49E6FF90471122EEEA79765A047230D1E116CA961D69A676A84C44FA79814FBC2714B7347F5AA089878B68307FD9D6856A537C7063841C02227A6D61D446A9F888C406D38B9A22F4C9201A33E087BA39A51D3AC36CA00FF35C38319ED5ECB0657E7E31412FF7DED3EEFE62FAA964DB240D8EA61562FA644DD80712F4B9BCA65E4A41E38498ADB32198B84E9C34DA3E1026D6C6474F944733E5E22B8C3A5876E4E84F34A5E61A162DDC0A40A67A01E7EE73E536F678B822362BDB454E95527265EBE5727A3BCCC8DB834EB4336C81D58B646904BD17A8C192C6F735F54E936F733AC6E1F49F39AA69E3E0C027A8EBD4946925B1D56E445F6C7B98A3E21A066C9AEAE50B2C705E6C0BAD7F3926756B58707BE20401247769D4D35B3F7C7053789FA29AEF45367F0393DEAE7BD6A0FD5EA62910E1F22C43C6DBE316EBD46E64C5ABB3BAF60DFE04F403CA93212B54CB10E43712DA9B38915E3812532A6CBE24EA8FD0DF95477D140EBFC7A540AE88EB715FF44FA4822CE47F1A8BF529CCBE18FDB32819BC1BF3DA3D5A3A352403D9AABE3111ACE0DC95763383BC72BB67E97DC78391E9218E91DEFD40A53B6CEC0656BA06E2F188E40A8D17E7A41AA8C083FE4CE98D30D4CF4B0D7408E11908D75B0BB624F5D6C9EB5519B73791D749A2C669BF91CBA994AA63E38E5EBA9DCB17EAD13E9956FA673F3391C1623EF0CEE5E5195F3EA19D9F91EDA74E6B54667107AD46F6F5D2D80B70A48CCDF2291354B821CE341EB08690E3731E9B7BBFCB0056ADFA2C8AA6D64C514DF
28A41AEDF8A782596FB7D2521AAFD526991DC11345AEBD16D000425835F9E1399C85BC24A86F20102150D061EDB3565B9322EB0FF199DD25E35903DD7D1727504E60BA304F1F83758516049172740ED0C02D7F77E6D70A464947DE048EE6C3A9DEADA0018FFDEF2242B6
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%APLT1End
%RBIEndFontSubset
/SSXNGJ+CambriaMath cguidfix
/F2.1/SSXNGJ+CambriaMath renmfont
%RBIBeginFontSubset: VAEMDM+MS-Mincho
%!FontType1-1.0: VAEMDM+MS-Mincho 1.0000.5.3000
14 dict begin
/FontName /VAEMDM+MS-Mincho def
/PaintType 0 def
/Encoding 256 array 0 1 255 {1 index exch/.notdef put} for
dup 33 /gid2 put
dup 34 /gid5 put
dup 35 /gid7 put
dup 36 /gid6 put
dup 37 /gid8 put
dup 38 /gid3 put
dup 39 /gid4 put
dup 40 /gid1 put
readonly def
42/FontType resourcestatus{pop pop false}{true}ifelse
%APLsfntBegin
{currentfile 0(%APLsfntEnd\n)/SubFileDecode filter flushfile}if
/FontType 42 def
/FontMatrix matrix def
/FontBBox[256 -250 1 index div -35 2 index div 255 3 index div 220 5 -1 roll div]cvx def
/sfnts [<
74727565000900000000000063767420000000000000009C0000017C6670676D000000000000021800000497676C796600000000000006B000000918686561640000000000000FC80000003668686561000000000000100000000024686D74780000000000001024000000246C6F63610000000000001048000000146D617870000000000000105C0000002070726570000000000000107C000003C400010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000700000010001100000009000A0000000E000F00000010001100000009000A0000001300140000000600070000FFFF000000000006000700000013001400000009000A00000017001800000010001100000010001100000015001600000009000A0000001B001C00000006000700000013001400000009000A0000001700180000000E000F00000010001100000010001100000009000A0000FFFF00000000000600070000001000110000000E000F0000000D000E00000010001100000009000A0000000A000B0000001300140000001B001C00000009000A00000009000A0000001300140000001400150000FFFF00000000000B000C0000FFFF00000000FFFF00000000FFFF00000000000600070000000D000E0000000400050000000B000C0000000C000D00000009000A0000000A000B0000000F00100000000800090000B0002C212045B020606620B000545821B03F1BB001615965442DB0012CB8000245234660482DB0022CB8000345382DB0032CB8000845234660482DB0042CB8000945382DB0052CB8000545234660482DB0062CB8000645382DB0072CB8000B45234660482DB0082CB8000C45382DB0092CB8001745234660482DB00A2CB8001845382DB00B2CB8001445234660482DB00C2CB8001545382DB00D2CB8001A45234660482DB00E2CB8001B45382DB00F2CB8000E45234660482DB0102CB8000F45382DB0112CB8001145234660482DB0122CB8001245382DB0132CB0011611352DB0142C0110C02DB0152C0010C02DB0162C0120112320124623465558391B21592DB0172C0020112320124623465558391B21592DB0182C2046B0206066B02061482DB0192C2046B0206067B02061482DB01A2C20B0182BB020382DB01B2C20B0192BB8FFE0382DB01C2C20003901392DB01D2C212DB01E2CB1011C4544B1021D4544B1031E4544B1041F4544B105204544B106214544B107224544B108234544B109244544B10A254544B10B264544B10C274544B10D284544B10E294544B10F2A4544B1102B4544B1112C4544B1122D4544B1132E4544B1142F4544B115304544B116314544B117324544B118334544B119344544B11A354544B11B3645442DB01F2CB101374544
B102384544B103394544B1043A4544B1053B4544B1063C4544B1073D4544B1083E4544B1093F4544B10A404544B10B414544B10C424544B10D434544B10E444544B10F454544B110464544B111474544B112484544B113494544B1144A4544B1154B4544B1164C4544B1174D4544B1184E4544B1194F4544B11A504544B11B5145442DB0202CB101524544B102534544B103544544B104554544B105564544B106574544B107584544B108594544B1095A4544B10A5B4544B10B5C4544B10C5D4544B10D5E4544B10E5F4544B10F604544B110614544B111624544B112634544B113644544B114654544B115664544B116674544B117684544B118694544B1196A4544B11A6B4544B11B6C45442DB0212CB1016D4544B1026E4544B1036F4544B104704544B105714544B106724544B107734544B108744544B109754544B10A764544B10B774544B10C784544B10D794544B10E7A4544B10F7B4544B1107C4544B1117D4544B1127E4544B1137F4544B114804544B115814544B116824544B117834544B118844544B119854544B11A864544B11B8745442DB0222CB101884544B102894544B1038A4544B1048B4544B1058C4544B1068D4544B1078E4544B1088F4544B109904544B10A914544B10B924544B10C934544B10D944544B10E954544B10F964544B110974544B111984544B112994544B1139A4544B1149B4544B1159C4544B1169D4544B1179E4544B1189F4544B119A04544B11AA14544B11BA245442DB0232CB101A34544B102A44544B103A54544B104A64544B105A74544B106A84544B107A94544B108AA4544B109AB4544B10AAC4544B10BAD4544B10CAE4544B10DAF4544B10EB04544B10FB14544B110B24544B111B34544B112B44544B113B54544B114B64544B115B74544B116B84544B117B94544B118BA4544B119BB4544B11ABC4544B11BBD45442D0000020022FFFE00DE00BA00030007001FB01F2B01400A020403040500060004092A00400A000603060401050104032A37153335172335332BAA09BCBCB1AAAAB3BC0000000004000EFFEB00F700CB000B0014002C0039001CB0232B01B5352D362D02052A00B5322D332D02012AB431303201172A36151423222726272637161706371716070607223716372627371617363717162306071617060726270607263737333717160723353335171607E8070409122A040523169A1C100A12222505033F29160E080C171511120B111414293F100535263041050574480F130606DC65120B106809090C19130301081119380A060230160446291C240324171826090720161E08030E0F1F290A0203B40F0E050206270304040000040007FFED00F700C6001F0026003900400040B0232B01400A372838283E3B3F3B04052A00400E1012111217121812201A261A06012A40
193635373D3C3E02160F0E1016151719181A21202225242605172A2A370607063736370627262706070637363723353337171607230607333717162727060716073637360715140706232235342727263733323535170607150635351786145E080633170705041712140805310A33660D10060640060730070F04084407082B04100A7D10070707040511050519091227100D12795A300206242004100E0E190F04073445060D0C05021B12070F0601070F0C13161B293F04B30C060606060103020209B90318047E0C0B8A0300000000010003FFFF00F300CC0028003DB0232B01B52219231902052A0040160103020310031103181319131F1A201A231324130A012A40140028010F0E101211131716181E1D1F25242606172A36372335333637171607060733371716072306073337171607231533371716072335333523060706373C143E3F05051707100504630F13060687080B6D0D110606483D0F130606C5593916270805444E061123050603180E0F0E05021E1A0D0C05024F0F0E0502064F2D23030700050013FFE200F900CE000D00110015001900390062B0232B0140220B010C010F1F101F131F141F171F181F221F231F270E280E2A1A2B1A2E1A2F1A10052A00401E070208021012111214161516181A191A230E240E2B2D2C2D382D392D0E012A40130A090B212022262527031606050737363802172A2A360715333717160723150635351717333523353335233533352337333717160715063535231506353517333523353335171607153337171607233C10A50F130606C70D122D5353535353532E220710080F0D530D0F1F6C6C120B103F0F130606617E04770F0E05020F0C0B98035D20061B061C06090B06026E0C0B0A0A0C0B81071B061F030404140F0E05020004000CFFF500F700CA001E0035004700500054B0232B01400E05090609311F321F3A433B4306052A00401215041604373938393B3D3C3D423D433D08012AB12C102BB52E212F21020F2A4019302F3101161716182B2A2C2D2C2E302F3136473741404206172A2A363736171733351716071533371716272207070637372314070623223534371714333332373736171514171607062323223535171607160723353335233533371716072315333717263736371716070607270102020249120B104F0818040C09040E07030AA8070506060683042B0A01060201040707030F360C11080C5506D9614D8C0D1006064F490F13E205440915050E0F489E1505040A200304041508110701040E0508181409070604062404071602021605020306030C350305029C02063A060D0C05023A0F0E4A04153F0705023A100000040006FFE500F900CE0008002000320039003AB0232B01400A180919092A272B2704052A00400E091B191B1A1B201B3833393306012A40
1317161829282A2C2B2D03161F1E2037363802172A2A3627060706373637171715140706070635342727263733323535233533371716072627060717160715063535060722373637173733371716072361111D25070328190C6907060606051205051A0953770C1006068B0F0B0D06080C0D1318050329220F0F570B0E060670BA021F16030620240B4A720C06050101060502040202096D060C0B05021003100F020502730C0B71140E04203A0C250B0A0502000009001CFFE400ED00C9000E00120016001A001E002D003100350050007AB0232B014032080509050D0A0E0A1105120515051605182419241C241D24272428242C172D172E412F413241334136413A303B30504118052A00402609140A140F00120013101610191F1A1F1D171E17281B291B2F103010330034003614371412012A40140706080C0B0D2625272B2A2C39383A4F4E5006162A3733371716071506353523150635351715333507153335073335231533352337333717160715063535231506353537352315373523151723150635351733371716071514070607063534272726373332352B34060E060A0D390D0D39393902373737370232060E060A0D370D833D3D3D3D3D0D0F38060E060A07060806051105051B09C0080A0502410A09078C0C0BDA0F18181E1A1A5C183A1C24080A05024B0C0B0F150C0B651B1A1A20181826070C0B5509080A0502B60C060501010605020402020900070004FFE200FC00CC0033003A00410048004F005600720071B0232B014012031D041D141D151D576F6D5E6E5E726F08052A00402E04130513151716171C171D1729132A1339343A34403B413B473E483E4E494F49552B562B575958596E596F5916012A40220201036C6B6D71707203160605071B1A1C3837393F3E404645474D4C4E54535507172A2A363736373523140706232235343736353617161533352335333717160723153337171623220707063737231516170607262706073733371716072337333717160723273337171607230733371716072337333717160723072335333717160715140706232235342727263733323535231506350406422C4E07050506060B0202024E48820B0E0606465306130B0D09050E04010B562B470A053F272F464D2F0A0E03054534230A0E0305395E220A0E0305380D2F0A0E0305456F300A0E0305462D2D71060E060A07050504060D040414073A0D20051F302B160705070604071A0606060416060B0A050216080C09050E0305182E2B0A040A122E311B250A0B0401490A0B0401050A0B0401130A0B0401070A0B04014406080A0502210907050506010202020720390C0B0000000001000000054CCDFA0C6ECA5F0F3CF5000B010000000000C0CDB8EC00000000D8CCD608FF06FFDD00FF00DC000000190002000000000000
0001000000DCFFDC00000100FF06FFE700FF000100000000000000000000000000000009010000220100000E0100000701000003010000130100000C010000060100001C0100000400000022008C0110016C01EE028C030203B0048C000100000009007300090000000000010000000A00240000040001B100000000004BB8004051584BB800115158B801FF85B0008D1BB801FF85B0018D591BB00085594BB801005358B001B0018E59B23534002BB23231002BB22F2E002BB22C2B002BB22928002BB22625002BB22322002BB2201F002BB21D1C002BBA001E001D001C4523456044BA00210020001F4523456044BA0024002300224523456044BA0027002600254523456044BA002A002900284523456044BA002D002C002B4523456044BA0030002F002E4523456044BA0033003200314523456044BA0036003500344523456044B2504F002BB24D4C002BB24A49002BB24746002BB24443002BB24140002BB23E3D002BB23B3A002BB23837002BBA0039003800374523456044BA003C003B003A4523456044BA003F003E003D4523456044BA0042004100404523456044BA0045004400434523456044BA0048004700464523456044BA004B004A00494523456044BA004E004D004C4523456044BA00510050004F4523456044B26B6A002BB26867002BB26564002BB26261002BB25F5E002BB25C5B002BB25958002BB25655002BB25352002BBA0054005300524523456044BA0057005600554523456044BA005A005900584523456044BA005D005C005B4523456044BA0060005F005E4523456044BA0063006200614523456044BA0066006500644523456044BA0069006800674523456044BA006C006B006A4523456044B28685002BB28382002BB2807F002BB27D7C002BB27A79002BB27776002BB27473002BB27170002BB26E6D002BBA006F006E006D4523456044BA0072007100704523456044BA0075007400734523456044BA0078007700764523456044BA007B007A00794523456044BA007E007D007C4523456044BA00810080007F4523456044BA0084008300824523456044BA0087008600854523456044B2A1A0002BB29E9D002BB29B9A002BB29897002BB29594002BB29291002BB28F8E002BB28C8B002BB28988002BBA008A008900884523456044BA008D008C008B4523456044BA0090008F008E4523456044BA0093009200914523456044BA0096009500944523456044BA0099009800974523456044BA009C009B009A4523456044BA009F009E009D4523456044BA00A200A100A04523456044B2BCBB002BB2B9B8002BB2B6B5002BB2B3B2002BB2B0AF002BB2ADAC002BB2AAA9002BB2A7A6002BB2A4A3002BBA00A500A400A34523456044BA00A800A700A64523456044BA00AB00AA00A94523456044BA00AE00AD00AC45
23456044BA00B100B000AF4523456044BA00B400B300B24523456044BA00B700B600B54523456044BA00BA00B900B84523456044BA00BD00BC00BB4523456044
00>] def
/CharStrings 9 dict dup begin
/.notdef 0 def
/gid1 1 def
/gid2 2 def
/gid3 3 def
/gid4 4 def
/gid5 5 def
/gid6 6 def
/gid7 7 def
/gid8 8 def
end readonly def
currentdict dup/FontName get exch definefont pop end
%APLsfntEnd
42/FontType resourcestatus{pop pop true}{false}ifelse
{currentfile 0(%APLT1End\n)/SubFileDecode filter flushfile}if
/FontType 1 def
/FontMatrix [ 0.00390625 0 0 0.00390625 0 0 ] readonly def
/FontBBox {-250 -35 255 220} readonly def
/UniqueID 4290506 def
currentdict end
currentfile eexec
54544758EC884CF30C3CD503CEDBFF3839C47C3C3333173232E3FDBFF439491DB843E1924E63AA7726BBB0485AB56D93D8C0906F647A47162891E73FFC2A9873C4B1EAC5EEBDFFC4D06084FBD84139DF4583C6E259D10699944D1068C9C45667DCCCFB9B7EA01B606435EDCBD273ABAC093D14085CCBAC149BD7382E842CFE0D7FE4FD2EF589A2471F6074A80A8B675C2F7A50D63AC1EF90D787BADD11633CB01CF6EE3B37AAF9078A69AC4740E9B6525D78BBD839551A1CB80DB8682FA5E87591BBD6EE8B946063A2A58D9CA3685AB305495DC5FB5747EB8A9A059C4976C0FE4EEAB1D56FF47F1E9664ED9F4A7DAB763AF92B2F6CF2FA7DEC24710E0B9096E30F772BA7FEA9BDBE496C42ED2CEB58F54E80BDF57CE7B4DB6CCFE7182F43BF93CCA0767AF95D62C5D2C3DC6AE1E6D139F51A2C63432117F1714C5566572EE9967A715420ABDCD1D7BD74F8450B89965FCC81C6ACA565C5F3CCF91D430D1F953E4F1A645300A98DD8C47CD64555F08F422340A85404EAE0D3229C4F9336B9470CACBD6BBF3395104750A915CC6EAAC197668267B8C62D2764C8CD69FD937CA3C924D997A0EDE7964BEB9EA2F92EF70C5E5DA0AA55675454E59AEC12A68086DDD95476477C46AE143377694529C58844212FC811560E27EEE2CF00BCB28A34314447AEE989C9D5F058EB91AA64CFFCFD907A0DD23543824D9DCD8F7AF8EC2EDF014FC25C059C5E25715DDBB6FD81B1DF3FC029AE4CF50A471CB62A858B52A9F9F787610BC2E009D8AA3298F2E79EBA3DD96057488E489C271CE42F805DF58B831DAF9C9D4B935F32033B31C25109C698C6864FF2C996180855039D708060C4100F4FC4347EEFE6886280CF847DD4038D529B0B8C6AD69F227EBC4F63A97B9D65E7B0194EDC331D609A1F4803ED53F854F47CAB873A21019C094B1D6825328AB9B00366629EA437AF2A0CB960707CB77EA8DDC5B9F7B4E3005679535EE2A88133D39C610F06595D178F52AEE100506539C7B9EBF43C274C0533D67531F150119D147152D5255488CA114B0B12E1C7A564C25CCD9BF131323B0F27EAB16EF9399CD0654753B5A985FAFDEF2800D1C851F20628684130800310E62BF9763B81BDFAD3FF7F0D63255B831DDA6D8CAAD20A94C446369F68437125941425D72FF444E7D701D73EB21F563863EC69CB596C72E648304B0EB27082E1E06D2180EFAE7626AF0BAAEE8EEE56803D19232BBB5624E5D70E539543D0EBFFD127B460D43349250334F33191B5BB0A8EDA98771FCB51A3BC65B68238CE4CD36F654F78D5E6CDB3C98305ED12C2218A6945BEBEC99FC1C3D02B7B23EF758202AE9E4CA588A8C4DE6EA6C140C0291F42C8455B746A77EAB18CDD6037BAEC51055DA40043CB1685D791C70CB4F7F93F4F6335D56DE58970184DFD7A45E355917AB439BB6054D10407B0
753B34D279FE036FD311EB02451E195EB71A6477DAE4701B74C909BF78FE73C6B981637CD86616FFB4320E0E5A4214E46491F22FC05FD7D82F9EB47450A44608530B2E212391711DF2DBD3AF44B4038352281F2B0AD693EB46910E6BF2F6B5853428457FA784448DAA3463A857CF6C9CD1174BAAF0EE7242B22A3204DD961FAC11E0B7736AEDCEADC567FF6E2B751C69BCE6688BEC8821E6F13ACF7278809BFFB8A59AE9930B3391E7191AE7F648157CF88B3CD05D37740FC92EBC4CA5FE27E19833A8A3B784CFE473ABAC755EE513DF3C3F217CC3864C1689926DDC8C31E77457A5795BE787964EE1A6BBA1CE58342784A2BD7D5F06ECB85D88A13348CDCF9CF82B972AFAAE0A7692BF4C92E8082881BAC38DF68A189C92C07B28D87748B4A87FD4B1452E35D5BCEBB5A6283D435D74000B760330125D84B988E129F5892D859177E843463BF910F8D9E299829D7F80DE0BCF2515E30EE3898F6681557A0F5D4AB2BC583D7D7DE76C732A086D82EE66364014EB2C3EE8987ABB44A478A1CF6748C4DA42584D01F86EB72AA620815C5903233CD23360DEC4696B5F702211BB1E7D03CD30C46088FEB9246ABF0B75BDA6A55BA667BBB29EF3823A955FDF2A378836044F48F73D06A484C1E08F8DB68FCF69A6FC47307092ECBB55B377A6740D4E1B6CD598FAAD8C461E508AD95A3B38715CB71E887BFAFB0FF76A76FB014613D38049ED71FE331C09AE7AC16A37115D3824A3942D95FA8CF0D24D4A69B879179801D0FAA3BF69564DA6138D494023A78B9A3D0CDC2DBF729FC9137B3F16FE6EB746931C9B4FE7C2E750B944D9168A6277BDFE6FDCEE826EECA77333BD0A3B39E1860E3D3265BC238B67757E12684EB0CC80284B731B398A9BF25FD44468768231767B48731C695413E282A133F0A0031057C15A7855D258765B13A546506DCF63AAEC8E04F85B9776B19004B34622BD1FCF0E2BAC09D98D7A1947065A642E293362A9ABC03930E7545BB03FC14F39581B604E0C63CBB2F4CE72298B2D1DBA5B9171B7661AC25594E6448918D530F6496FE6054C2C6D992740FE8C54A71BC50FB6E4FC65A9DD5244ADD6B2C651EAD935DFA79DADF953B437A94B5989EC04337C8CE7072E22B8255FC5CCDAC2761A53C382777FFD46A28053E2C34DB5087CE30377803031631E0A4E02283AA325184F8C0FF0D3FCB90BFF7986AFE2A8283F9CE54B5EF4805268A72E6AF305C061BFC5FA8CA1900341C82E798D85F33E07A03EEEDED16CFA675D58F62CE853A1AFA1F0EB8D26E13F234C247A0DECB0D34B4D9944C4B5A249149AA7123A7B5D7F394402C67D798AB78D4F22161E2732EF2CA68DF007B073D3D5A54436FB0B60E1A9C0BBEF6A0EBAD2128AB9D5F3CD89A9E9C47860738857FCB2D5C468017F1B0A0DD03BB35A747BD6C4F9D1C16AFCEB8FDAFD6887F7
6990FE1FC38CA9BB6B2866B4F0374F362AB56FB0D505F1C48E7ED1B0E348EC2E64D403B53381ED2ECE1B0EDD0D51EFD6BE8FDC70585B952C1023F0AF69FD0A404365AAA46AB840BF9576C0B0D7EBDCD67355FC66057304A8B6CA67DED2B572829FD3190A19FB4FD25010073E97FE06FC61F4FCB11BAC6720E4456545A2EB7128176C3D06899CB30F4F6A6B53482AEAE5D69B5DE8CAC6448E1BFD02C22D7C6F57331F5A8F7FF6E5CDC850A1787BFC30CFEDB82DC8662E3820473F39DABACFF9C75EF2733758BBA7EB7FE7664EBEFAC0B15FBC961CC581E00FE97145D3AD4C2A841FE7CFF414E40563C1CEB2E745F9A7504AB1FE222D5904E08D69C96EBBABF4E4CEB95B753275AA7978A845F1C2B1FB1739E548293624F8C77EC1EDF7F2F8DF4FF9FC3B06D1CA59966372DAE40E122A91C75BC2D4F72F598B9017E9959E98B0B1E9F673C2B2D68FED4E08108C2CB509291BF24A48133C1B3D0E1AFD5E937871BB9D68496161D181A45A70B5C3D4F261E170CDE7963725AD58A3B37376A623CAC64F09C0D6338B8DD81499DD3610BAABA3A6F105DEAB69C505E67DC7458052376D142A3A5D61916C2D3FA11C2112BDBD37AEC9FFC253B18D5E610EDFB3651A587CB7B1C775CF7F80DF14297566F667DBEB1F80CF65987FCEA3532E2B3FD80680827F6A6291DBB32BE52AFBE0F3C9E03B599E6189C866BC9A0CFBF0BAB5D8CBF8AE005EF97DCCEAD58C9AF9E7145DA39AA4806062F92764608ED16EA7D92FE18CD430CBF155745CCDA7C8EE9FEE
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%APLT1End
%RBIEndFontSubset
/VAEMDM+MS-Mincho cguidfix
/F3.1/VAEMDM+MS-Mincho renmfont
%RBIBeginFontSubset: QYUNMM+MS-Mincho
%!FontType1-1.0: QYUNMM+MS-Mincho 1.0000.5.3000
14 dict begin
/FontName /QYUNMM+MS-Mincho def
/PaintType 0 def
/Encoding 256 array 0 1 255 {1 index exch/.notdef put} for
dup 33 /gid1 put
dup 34 /gid4 put
dup 35 /gid2 put
dup 36 /gid3 put
readonly def
42/FontType resourcestatus{pop pop false}{true}ifelse
%APLsfntBegin
{currentfile 0(%APLsfntEnd\n)/SubFileDecode filter flushfile}if
/FontType 42 def
/FontMatrix matrix def
/FontBBox[256 -250 1 index div -35 2 index div 255 3 index div 220 5 -1 roll div]cvx def
/sfnts [<
74727565000900000000000063767420000000000000009C0000017C6670676D000000000000021800000497676C796600000000000006B0000003406865616400000000000009F000000036686865610000000000000A2800000024686D74780000000000000A4C000000146C6F63610000000000000A600000000C6D6178700000000000000A6C00000020707265700000000000000A8C000003C400010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000700000010001100000009000A0000000E000F00000010001100000009000A0000001300140000000600070000FFFF000000000006000700000013001400000009000A00000017001800000010001100000010001100000015001600000009000A0000001B001C00000006000700000013001400000009000A0000001700180000000E000F00000010001100000010001100000009000A0000FFFF00000000000600070000001000110000000E000F0000000D000E00000010001100000009000A0000000A000B0000001300140000001B001C00000009000A00000009000A0000001300140000001400150000FFFF00000000000B000C0000FFFF00000000FFFF00000000FFFF00000000000600070000000D000E0000000400050000000B000C0000000C000D00000009000A0000000A000B0000000F00100000000800090000B0002C212045B020606620B000545821B03F1BB001615965442DB0012CB8000245234660482DB0022CB8000345382DB0032CB8000845234660482DB0042CB8000945382DB0052CB8000545234660482DB0062CB8000645382DB0072CB8000B45234660482DB0082CB8000C45382DB0092CB8001745234660482DB00A2CB8001845382DB00B2CB8001445234660482DB00C2CB8001545382DB00D2CB8001A45234660482DB00E2CB8001B45382DB00F2CB8000E45234660482DB0102CB8000F45382DB0112CB8001145234660482DB0122CB8001245382DB0132CB0011611352DB0142C0110C02DB0152C0010C02DB0162C0120112320124623465558391B21592DB0172C0020112320124623465558391B21592DB0182C2046B0206066B02061482DB0192C2046B0206067B02061482DB01A2C20B0182BB020382DB01B2C20B0192BB8FFE0382DB01C2C20003901392DB01D2C212DB01E2CB1011C4544B1021D4544B1031E4544B1041F4544B105204544B106214544B107224544B108234544B109244544B10A254544B10B264544B10C274544B10D284544B10E294544B10F2A4544B1102B4544B1112C4544B1122D4544B1132E4544B1142F4544B115304544B116314544B117324544B118334544B119344544B11A354544B11B3645442DB01F2CB101374544
B102384544B103394544B1043A4544B1053B4544B1063C4544B1073D4544B1083E4544B1093F4544B10A404544B10B414544B10C424544B10D434544B10E444544B10F454544B110464544B111474544B112484544B113494544B1144A4544B1154B4544B1164C4544B1174D4544B1184E4544B1194F4544B11A504544B11B5145442DB0202CB101524544B102534544B103544544B104554544B105564544B106574544B107584544B108594544B1095A4544B10A5B4544B10B5C4544B10C5D4544B10D5E4544B10E5F4544B10F604544B110614544B111624544B112634544B113644544B114654544B115664544B116674544B117684544B118694544B1196A4544B11A6B4544B11B6C45442DB0212CB1016D4544B1026E4544B1036F4544B104704544B105714544B106724544B107734544B108744544B109754544B10A764544B10B774544B10C784544B10D794544B10E7A4544B10F7B4544B1107C4544B1117D4544B1127E4544B1137F4544B114804544B115814544B116824544B117834544B118844544B119854544B11A864544B11B8745442DB0222CB101884544B102894544B1038A4544B1048B4544B1058C4544B1068D4544B1078E4544B1088F4544B109904544B10A914544B10B924544B10C934544B10D944544B10E954544B10F964544B110974544B111984544B112994544B1139A4544B1149B4544B1159C4544B1169D4544B1179E4544B1189F4544B119A04544B11AA14544B11BA245442DB0232CB101A34544B102A44544B103A54544B104A64544B105A74544B106A84544B107A94544B108AA4544B109AB4544B10AAC4544B10BAD4544B10CAE4544B10DAF4544B10EB04544B10FB14544B110B24544B111B34544B112B44544B113B54544B114B64544B115B74544B116B84544B117B94544B118BA4544B119BB4544B11ABC4544B11BBD45442D0000020022FFFE00DE00BA00030007001FB01F2B01400A020403040500060004092A00400A000603060401050104032A37153335172335332BAA09BCBCB1AAAAB3BC0000000002000CFFE900F800CC004500530005B01F2B0100361536373637361716171627262322071415161514070637363736370623222726353437363332173435060706070627262734171633323736373435342726373617161716070607061514171633323736353423902D0F060E05050B010208141F131A033705030C091601080D0B09070A080C0907351A0A0406050B0504050E0E1D171F140404110A050404052A050508030707040911B21F03020103010409030602050216150A123F1C0104090A19230C09070E0E0A08041011080803020304080F0504090504030D0E170202020207030605024C08070A1007030409101600000000010019FFFB00E900B7002F0005B01F2B010036
3736171617160726070615141716173217161514232227263534373623060706070627262726273617163732373637C50606070B0105073E1B1A14151B0A0304081C1A1F2705051F1C0C0C090305050B010202051008133434AD05050508010502021B1A1A1E14150104050405151929261F04060602060401010408090706090104090A0002001C000600E700AB002300310005B01F2B010036171607060706070627262726353437363332171615140706072637363736353427260706373627060706151417163332377F08070A191806070B040D060819212F321C14131B3604042D18100E1C38121103081A141A0B050504069F08070247220905080A040B0E132819211C141E1B151E0902020B1C131A1B102005523F0C0604141A231E0B0506000003000F002C00F500B500250031003D0005B01F2B01003627262726232207060706070627262736171637363736373633321716171617161716151427260706272627261716171617362726171617161716070627E71226350C090906050D0F040409130201020C08060E0C0B080D090C2C320D06050202082006060307130203110D060206130203110D060202060603310A152308060510120808050A0A03020C05040E0C0B08071A17060101070702060352020207100C0301030A05071D0C0301030A050708020207000001000000054CCDFA0C6ECA5F0F3CF5000B010000000000C0CDB8EC00000000D8CCD608FF06FFDD00FF00DC0000001900020000000000000001000000DCFFDC00000100FF06FFE700FF000100000000000000000000000000000005010000220100000C010000190100001C0100000F00000022009E00EA013A01A0000100000005005400030000000000010000000A00240000040001B100000000004BB8004051584BB800115158B801FF85B0008D1BB801FF85B0018D591BB00085594BB801005358B001B0018E59B23534002BB23231002BB22F2E002BB22C2B002BB22928002BB22625002BB22322002BB2201F002BB21D1C002BBA001E001D001C4523456044BA00210020001F4523456044BA0024002300224523456044BA0027002600254523456044BA002A002900284523456044BA002D002C002B4523456044BA0030002F002E4523456044BA0033003200314523456044BA0036003500344523456044B2504F002BB24D4C002BB24A49002BB24746002BB24443002BB24140002BB23E3D002BB23B3A002BB23837002BBA0039003800374523456044BA003C003B003A4523456044BA003F003E003D4523456044BA0042004100404523456044BA0045004400434523456044BA0048004700464523456044BA004B004A00494523456044BA004E004D004C4523456044BA00510050004F4523456044B26B6A002BB26867002BB26564002BB26261002B
B25F5E002BB25C5B002BB25958002BB25655002BB25352002BBA0054005300524523456044BA0057005600554523456044BA005A005900584523456044BA005D005C005B4523456044BA0060005F005E4523456044BA0063006200614523456044BA0066006500644523456044BA0069006800674523456044BA006C006B006A4523456044B28685002BB28382002BB2807F002BB27D7C002BB27A79002BB27776002BB27473002BB27170002BB26E6D002BBA006F006E006D4523456044BA0072007100704523456044BA0075007400734523456044BA0078007700764523456044BA007B007A00794523456044BA007E007D007C4523456044BA00810080007F4523456044BA0084008300824523456044BA0087008600854523456044B2A1A0002BB29E9D002BB29B9A002BB29897002BB29594002BB29291002BB28F8E002BB28C8B002BB28988002BBA008A008900884523456044BA008D008C008B4523456044BA0090008F008E4523456044BA0093009200914523456044BA0096009500944523456044BA0099009800974523456044BA009C009B009A4523456044BA009F009E009D4523456044BA00A200A100A04523456044B2BCBB002BB2B9B8002BB2B6B5002BB2B3B2002BB2B0AF002BB2ADAC002BB2AAA9002BB2A7A6002BB2A4A3002BBA00A500A400A34523456044BA00A800A700A64523456044BA00AB00AA00A94523456044BA00AE00AD00AC4523456044BA00B100B000AF4523456044BA00B400B300B24523456044BA00B700B600B54523456044BA00BA00B900B84523456044BA00BD00BC00BB4523456044
00>] def
/CharStrings 5 dict dup begin
/.notdef 0 def
/gid1 1 def
/gid2 2 def
/gid3 3 def
/gid4 4 def
end readonly def
currentdict dup/FontName get exch definefont pop end
%APLsfntEnd
42/FontType resourcestatus{pop pop true}{false}ifelse
{currentfile 0(%APLT1End\n)/SubFileDecode filter flushfile}if
/FontType 1 def
/FontMatrix [ 0.00390625 0 0 0.00390625 0 0 ] readonly def
/FontBBox {-250 -35 255 220} readonly def
/UniqueID 4290506 def
currentdict end
currentfile eexec
54544758EC884CF30C3CD503CEDBFF3839C47C3C3333173232E3FDBFF439491DB843E1924E63AA7726BBB0485AB56D93D8C0906F647A47162891E73FFC2A9873C4B1EAC5EEBDFFC4D06084FBD84139DF4583C6E259D10699944D1068C9C45667DCCCFB9B7EA01B606435EDCBD273ABAC093D14085CCBAC149BD7382E842CFE0D7FE4FD2EF589A2471F6074A80A8B675C2F7A50D63AC1EF90D787BADD11633CB01CF6EE3B37AAF9078A69AC4740E9B6525D78BBD839551A1CB80DB8682FA5E87591BBD6EE8B946063A2A58D9CA3685AB305495DC5FB5747EB8A9A059C4976C0FE4EEAB1D56FF47F1E9664ED9F4A7DAB763AF92B2F6CF2FA7DEC24710E0B9096E30F772BA7FEA9BDBE496C42ED2CEB58F54E80BDF57CE7B4DB6CCFE7182F43BF93CCA0767AF95D62C5D2C3DC6AE1E6D139F51A2C63432117F1714C5566572EE9967A715420ABDCD1D7BD74F8450B89965FCC81C6ACA565C5F3CCF91D430D1F953E4F1A645300A98DD8C47CD64555F08F422340A85404EAE0D3229C4F9336B9470CACBD6BBF3395104750A915CC6EAAC197668267B8C62D2764C8CD69FD937CA3C924D997A0EDE7964BEB9EA2F92EF70C5E5DA0AA55675454E59AEC12A68086DDD95476477C46AE143377694529C58844212FC811560E27EEE2CF00BCB286FAF7263B5B68DE54D4A7E5E5AE8FB225BCAC76913AC93E95998AADA9318C09A07A6643C5176DF70A727EF4187433F5E8B96902F050508F3059D7C30233269360E7F182219A23BA23C4977CA3512F31B1DA31ADCFD2D30C8A7B51422886CFF1DFD97A519360D2F4EA811349FD829CAD5643F2CEA25E09D41B893290A77EE26C42FBE8C54E4D4C4BC28DCFC5B56D7DD5F1268D066E4C863C2DF587E3188E38B1638945DB4BEC3E83B5414A6A5C5D943B1C20FBF14FE1013155E647DBDCBBD4C8E5EB297E3E316B7B57BD66A2892CCF48E033E35AC75D844C723BB2EBE48A9808876971408FDEBDB78CACE628760BEBB99E4846C36025E52472A84816AF4DDAB6903331B0EA942EBA67078F9DC0596761D2480E8551FD5C4A8ABFA8CAC92A96CD447187BDE3ADCB17805DEBDE2ED8B40EE9C56A8C06E8001B9E3EE84CB439F33CF877E98DC3CB9D10BA9FDA4B5DE4FFEE471EB0AAF58DC7BFFED15CBE3C6043E62DA9761D13EA02167F30433BC7945AAA9C6B248E7623B77B5D231A32C44950FFFE0E88226B3C3EF50DAA36832BB23C30DD81A40EDF8AEDCB95D5B26E5DD8998CA00DE0BD7E25C0F1D97ADCFCC0A001CCC2E7B91C724868E062999BD33E7ACD36006C889EAA6F9C2A67510E9A185DCEE4B78883388F063895FF2C0B8CAD86D75421D186D60695F916FBEC69D8E73408CC1646AC47B5C235079987BAA117E39F93BD771FC45801FD4B656ED9D2170B580F859625547CD796C22C23A66BDFCBB6385554D717
EF67FBEB41FD4C034ED486A372BF49F0E4D39AA5C5EB094498FF8BCA55F2AFE2E5D356B09C0B4BAFAF2D97674A8246DFEA0591BD1AF6FEC0506EF7B306059404E58D5C73D14B930C61882DE4DDF42EE76C7BE3CE09C38C38B86E0CE80A71561BEEBDD0A548DB2B17568E9DD42D879DC1FDEDCB7FE9D1D1A5AEEEBBD521A3CF88C1680D63C00450DAD7920D040EF7FD137B655585F5E5034A9999D8E8937CE93B52522794E311462B8B7D43E1560A78F8B330542AE780397EE58B55E4B692441A56C11E19A63D8A53C6BF1B6BF859B4CE21D8BE08FFCA010200AAD92B9D98F274604FA7DD24CD376C3C7C950E5F3FE0BB273F629125706C2210CF3BBAE976DB2E71E3CB8180C12EEB7F015E1396CF788113AF2EE204FC31F1A9A6C46D123D2300318D0570D5724D4117C4537DEA79B93C5A0DF2647C4F57E8AA9A2A20631EE805FC17B2CC5B5FD400B9C0951CCB38D10B62D6EAD1F606E436EB045DBA4C3A11DA18A858CEAABFF0626638E73E02B6940E6A49391E3CCA57B168F610DE7358DBD82DFE19BA159DA50E7F19FB44BDA9D52C03648130A138D3D4D8C25E53AE03FF2CBD14D8082F68061674476F4C70CC232349B98332E26D7157D608663D604684F1346BD4458AD3784412730F5538102F6B97227E81F12FF503E536796820956886A11418A8C5817B479E2A1B1C16A7A8D24C578367E60ECF84F9BE7A85AC210EFD60768552EE6F66E2DBB48C71D1EB15F2332FB03C68D91E384DB1E405F0AAEE01D4B0E4691F888D7AA3DEF390B65ACE85F6D8D1371476A7BB290AAADB2DF40227EA126AD8DE09ABB01EA67F2579B1F7E6E98D
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%APLT1End
%RBIEndFontSubset
/QYUNMM+MS-Mincho cguidfix
/F4.1/QYUNMM+MS-Mincho renmfont
%RBIBeginFontSubset: HPRUYT+Meiryo
%!FontType1-1.0: HPRUYT+Meiryo 1.0000.6.3000
14 dict begin
/FontName /HPRUYT+Meiryo def
/PaintType 0 def
/Encoding 256 array 0 1 255 {1 index exch/.notdef put} for
dup 33 /gid1 put
dup 34 /gid2 put
dup 35 /gid3 put
readonly def
42/FontType resourcestatus{pop pop false}{true}ifelse
%APLsfntBegin
{currentfile 0(%APLsfntEnd\n)/SubFileDecode filter flushfile}if
/FontType 42 def
/FontMatrix matrix def
/FontBBox[2048 -2016 1 index div -901 2 index div 3732 3 index div 2171 5 -1 roll div]cvx def
/sfnts [<
74727565000900000000000063767420000000000000009C0000030A6670676D00000000000003A800000BD8676C79660000000000000F80000001AE6865616400000000000011300000003668686561000000000000116800000024686D7478000000000000118C000000106C6F6361000000000000119C0000000A6D61787000000000000011A8000000207072657000000000000011C80000046C0626000B000005E3001F009A05E3001F000004E3001F0000000000000000046A001F00960000FFE100000000FFE100000000FFE10000FE5FFFF5000000000000FE730000000000000000000005EE00140234FFEC03BA00140000FFEC00000000000000000000000000000000000000000000000000000000FEB0087B0000000000000800000008000000040000000070009F0095007F0000008C007A00660000000000000077008B00000000000000000000000000000000000000000000000000000071000000B7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C200BA00AD00000000000000B600B000A6009E0000000000BF00B400AA006A000000000000000000A5009F0090000000A6009D0096008F00A10097008A007A0080008500000000000000000000009A000000000000000000000000000000000000000000E3011101A0028300D300CC00000000000000000000000000000000009A0094000000C700B7008C008A008500650074006E00A000AF0000000000A4009D00000000000000000000000000000000010900000000000000810077007A0000000000000000009900000086007A00000084008000760000018E02350075007B00C200000099009000860078042002F600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000410046004B00500055005A005F00640069006E00730078007D00820087008C00910096009B00A000A50000000000000000008C00910096009B00A000A50085009300A000AE00B80073004E0000000005EC00160000059A00180000059A001800000000000000000000000000000400001800000000FFE800000000FFE8FF890000FFE80000FE29FFF5000000970000FEBA0000008A00D600E100970094008A00770080005800C300860071FCAEFFEB000D000040565F5E5D5C5B5A5954524D4C4B4A4948474644434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A191817161514131211100F0E0D0C0B0A09080706050403020100
2C0118B0184358456AB0194360B00C2344231020B00C4EF04D2FB000121B21231120332F592D2C0118B0184358B0052BB000134BB0145058B100403859B0062B1B21231120332F592D2C0118B01843584EB0032510F221B000124D1B2045B00425B00425234A6164B0285258212310D61BB0032510F221B0001259592D2CB01A435821211BB00225B0022549B00325B003254A612064B01050582121211BB00325B0032549B0005058B0005058B8FFE238211BB0003821591BB0005258B01E38211BB0003821595959592D2C0118B0184358B0052BB000134BB0145058B90000FFC03859B0062B1B21231120332F592D2C4E018A10B10C194344B00014B1000CE2B00015B90000FFF03800B0003CB0282BB0022510B0003C2D2C0118B0002FB00114F2B00113B001154DB000122D2C0118B0184358B0052BB00013B90000FFE038B0062B1B21231120332F592D2C0118B018435845646A23456469B01943646060B00C2344231020B00CF02FB000121B2121208A208A525811331B212159592D2C014BB0C85158B10B0A432343650A592D2C004BB0C8515800B10A0B4323430B592D2C00B00C2370B1010C3E01B00C2370B1020C453AB10200080D2D2CB0122BB0022545B00225456AB0408B60B0022523442121212D2CB0132BB0022545B00225456AB8FFC08C60B0022523442121212D2CB000B0122B2121212D2CB000B0132B2121212D2C014BB0C85158B00643B00743650A592D2C2069B04061B0008B20B12CC08A8CB8100062602B0C642364615C58B00361592D2CB1000325456854B01C4B505A58B0032545B0032545606820B004252344B0042523441BB00325204568208A2344B00325456860B003252344592D2CB00325204568208A2344B003254564686560B00425B0016023442D2CB00943588721C01BB01243588745B0112BB00D2344B00D7AE41B038A45186920B00D23448A8A8720B0A05158B0112BB00D2344B00D7AE41B21B00D7AE4595959182D2C208A4523456860442D2C456A422D2C01182F2D2C0118B0184358B00425B00425496423456469B0408B6120B080626AB00225B00225618CB0194360B00C2344218A10B00CF6211B21212121592D2C01B0184358B0022545B002254564606AB00325456A6120B00425456A208A8B65B0042523448CB00325234421211B20456A4420456A44592D2C012045B00055B018435A584568234569B0408B6120B080626A208A236120B003258B65B0042523448CB00325234421211B2121B0192B592D2C018A8A45642345646164422D2CB00425B00425B0192BB0184358B00425B00425B00325B01B2B01B0022543B04054B0022543B000545A58B003252045B040614459B0022543B00054B0022543B040545A58B004252045B04060445959212121212D2CB0032520B0072587052E2320
8AB00425B00725B0142B1021C4212D2CC02D2C4B525845441B2121592D2CB00243583DED181BED592D2C4B505845441B2121592D2C01184B52588A2FED1B212121592D2C4B53234B515A58B003254568B003254568B003256054582121211BB00225456860B0032523442121591B212121592D2CB00243583DCD181BCD592D2C462346608A8A462320468A608A61B8FF8062232010238AB10C0C8A70456020B0005058B00161B8FFBA8B1BB0468C59B0106068013A2D2C2045B0032546524BB013515B58B0022546206861B00325B003253F2321381B2111592D2C2045B00325465058B0022546206861B00325B003253F2321381B2111592D2C004BB0C8515800B00743B006430B592D2C8A10EC2D2CB00C4358211B2046B0005258B8FFF0381BB0103859592D2C20B0005558B8100063B003254564B00325456461B0005358B0021BB04061B00359254569535845441B2121591B21B0022545B00225456164B028515845441B212159592D2C21210C6423648BB84000622D2C21B08051580C6423648BB82000621BB200402F2B59B002602D2C21B0C051580C6423648BB81555621BB200802F2B59B002602D2C0C6423648BB84000626023212D2C184B5358B00425B00425496423456469B0408B6120B080626AB00225B00225618CB00C2344218A10B00CF6211B218A11231220392F592D2CB00225B002254964B0C05458B8FFF838B008381B2121592D2CB0134358031B02592D2CB0134358021B03592D2CB00A2B2310203CB0172B2D2CB00225B8FFF038B0282B8A102320D023B0102BB0054358C01B3C59201011B00012012D2CB0482B2D2C01B0022510D023C901B00113B0001410B0013CB001162D2C01B00013B001B0032549B0031738B001132D2C4B53234B515A5820458A60441B2121592D2C184B5358B00425B004254964B00325B00325496468B0408B6120B080626AB00225B00225618CB00C234421B004251023B00CF61BB00425B0042511122320392F59CC21212D2C0118B0184358B0052546234564611B21B00425B004254A59B00E23442310B00EEC2310B00EEC2D2CB01B435820B0016045B000515820B0016020452068B0005558B0206044211B212121591B20B0016020452068B0005558B8FFE06044B01C4B50582045B02060441B21591B21212159591B21592D2CB0022546206861B00325B003253F2321382D2C462346608A8A462320468A608A61B8FF8062232010238AB10C0C8A70456020B0005058B00161B8FF808B1BB0818C59683A2D2CB0402A212D2C2035B001602D2CB0024354584B53234B515A58381B2121591B21212121592D2C49B00E23442D2CB0024354584B53234B515A5820458A60441B2121591B21212121592D2CB0024350584B53234B515A58381B2121591B21212121592D2C4B53234B515A5820
458A60441B2121592D2C4B545820458A60441B2121592D2C4B53234B515A58381B2121592D2C4B5458381B2121592D2CB002435458B0462B1B21212121592D2CB002435458B0472B1B212121592D2CB002435458B0482B1B21212121592D2CB002435458B0492B1B212121592D2C4B52587D1B7A592D2CB1020042B123018851B1400188535A58B910000020885458B202010243604259B12401885158B920000040885458B2020202436042B12401885458B2022002436042004B014B5258B2020802436042591BB940000080885458B202040243604259B94000008063B80100885458B202080243604259B94000010063B80200885458B202100243604259B94000020063B80400885458B202400243604259595959592D2C20B82000628A6023622D2CB0072558001B0159B0042510B00325B0022520B8FFFF545821CD1BED5921B006255CB006255A58B0092B5920B005254AB0042547B004254760B0062547B0806361B00225B0005558B00325B00725496359B0082558001B0159B00425B0062549B009255CB009255A58B0092B59B0072546B0806361B0032520B0005558631B2159612320B0005558B080631B21B08059B0592BB006255C586959B00425202010B00048233AB0062658001B0159B0052658B003252F598A12233221212D2CB00625B00A2587B00625B009254AB0005358B00625B00A251BB00925B0072559B00225B00225070CB005256323B00625636020B94000040063535821B00426B00426B00A1BB94000040063655158B0042665B0042665B00A1BB00426B00426B000B00325B003250B0D0AB0092EB00725B007250B0D0AB00B2EB00525B0052507595920B0005558B00525B0052587B00725B007250BB0092510B00B25B0092620B8FFFF545821CD1BED59B00525B0052507B00825B00B254923B00625B0062587B00A2510B00B25C15920B00051B800522378B00161B00225B00725B0072507B00A25B00D254961B08062B00525B005250BB00A252338B00625B0062587B00825B008250BB00A2510B00B25C4B00625B0062507B00925B00C2549B0032554B8FFA723792121212121212121212121212D2C23B0005458B9400000001BB900004000598AB0005458B9400000001BB90000400059B05B2B2D2C08B0005458B9400000001BB900004000590DB05B2B2D2C8A8A080D8AB0005458B9400000001BB90000400059B05B2B2D2CB00426B00426080DB00426B00426080DB05B2B2D0002010000000700060000030007001FB6054A03044A0007BC01390001000401390000002FED2FED012FED2FED3130211121112521112101000600FA800500FB000600FA0080050000020059FFE104340626000900180030401916001501039613100A0B0008950D161884150B00001A0683102FED12392F3333ED003FED3232
2F3FED32323F31300111262322061510213217350623220211100033321711331103849481A6BA0131AB99C1B5C8ED011ED293A8B0010C029D44E9D3FE56877D9C013A0110010D01525901F5F9DA000200A000000167060300030007001C400E01638F020102060F0500048401052FC6FDC6002F3FD45DED313001233533032311330167C7C70BB0B0054CB7F9FD046A000100AA0000070B048A0020003B4020050712171B0510951D1910150F0B00141B070A840B0B142084000022171384142FED3212392FED12392FED3232002F33333F3F33ED17323130211134262623220716151123113426262322071123113315363332173633201111065B33695089BA06B033674F8FB0B0B0C9B3E751DAC4015F0279B77B39973451FD380279BC773892FCAE046A88A8B9B9FE56FD2000000001000000064CCD11E392495F0F3CF5200B080000000000AF029B5300000000D8CCD871F820FC7B0E94087B00000009000200000000000000010000087BFC7B00000F1AF820FA7B0E940001000000000000000000000000000000040800010004DE0059020800A007AD00AA000000240067008800D70000000100000004002100020000000000020010002F00600000042707FC00000000411901820184000F016301640165000C015D015E015F000C015A015B015C000C015701580159000C015401550156000C015A0157B2181F0F41200157003F015700DF01570003009F015400DF01540002000F016B001F016B002F016B0003016F0155001D000D016C015B001A000D016901640017000D01660158B2140D2F4110016F0001017901760019001F017A01760029001F017B017600FF001FFFE00181B31C1E3914BB017C0001FFE001764054252839DFE016171CD4D516171C7B7C161B7B7C19D1D216171C767716171C6D7016171C6C6F16171C6B6E161B6B6E7F721A747514151C676A14151C666914151C6568141B656885711A1973167A43192179431921413A014A01480028001F014901480028001F01480145001C001F01470145001C001F01460145001C001F01450138001C001F0140013E0028001F013F013E0028001F013E013B001A001F013D013B001A001F013C013B001A001F013B0138001A001F013A01380026001F01390138002B001F01370138B22B1F00410B01380001000001380010013800200138000301360135B61C1F40F5090939B8FFE0B3C71C1D39B8FFE040504D1A1D39E6E7032BE8E7022B9C9A032B9B9A032B999A042B9A97032BF292042BF192052BF092092B6192022B9D92022B9192032B9392032B9296032B4796022B9E96022B9896032B9596042B9697032BB9FFC00150B21B1B39410E014F014E0004002B014B014C0003002B014E014D0004002BFFC0014DB23A3B39B9014D014C40EF032BCDCC052B898A052B8A
84032BEE7E092B817F012B7D7E052B7E84032B8884012B8784012B8684022B8584022B8384042B20842728391B37151836151535151234150F33150C3215093115063015032F15002E1526270E28270F2A2B0E2C2B0F22230E24230F1E1F0E201F0F0F10110C090A0B0C0607080C0304050C0001020C2603321F0603FF1F0B2A01AB0FFB0F023B09BB09020B034403024403CB03020B005B00AB00033B007B008B00BB00CB00FB00061B011D0D18071A0D1510170D1204140D003C01351B012C3C2A3C283C263C243C223C203C1E3C1B3C183C153C123C0F3C093C063C033C003C50335401B0124B004B5442B013014B004B5342B0332B4BB8032052B0322B4BB009505B58B101018E59B0332BB00288B8010054B00488B8020054B012435A5B58B80119B101018E851BB900010100B04B60858D592B2B1DB0644B5358B0801D59B0324B5358B0901D59004BB03251B01B23422B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B73732B2B2B2B737473747373732B2B2B2B2B2B2B2B2B2B2B2B2BB1282645B02A4561B02C4560442B2B2B2B2B2B2B2B2B2B2B2B012B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B002B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B74752B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2BB018B03F4B53422B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2BB109322B4BB05052424BB008524BB008505BB01A23424BB0C8524BB036505BB00C2342002B742B2B2B2B732B2B2B2B7373732B2B2B2B2B2BB8015745B801824560B8018223442B
00>] def
/CharStrings 4 dict dup begin
/.notdef 0 def
/gid1 1 def
/gid2 2 def
/gid3 3 def
end readonly def
currentdict dup/FontName get exch definefont pop end
%APLsfntEnd
42/FontType resourcestatus{pop pop true}{false}ifelse
{currentfile 0(%APLT1End\n)/SubFileDecode filter flushfile}if
/FontType 1 def
/FontMatrix [ 0.00048828125 0 0 0.00048828125 0 0 ] readonly def
/FontBBox {-2016 -901 3732 2171} readonly def
/UniqueID 4234057 def
currentdict end
currentfile eexec
54544758EC884CF30C3CD503CEDBFF3839C47C3C3333173232E3FDBFF439491DB843E1924E63AA7726BBB0485AB56D93D8C0906F647A47162891E73FFC2A9873C4B1EAC5EEBDFFC4D06084FBD84139DF4583C6E259D10699944D1068C9C45667DCCCFB9B7EA01B606435EDCBD273ABAC093D14085CCBAC149BD7382E842CFE0D7FE4FD2EF589A2471F6074A80A8B675C2F7A50D63AC1EF90D787BADD11633CB01CF6EE3B37AAF9078A69AC4740E9B6525D78BBD839551A1CB80DB8682FA5E87591BBD6EE8B946063A2A58D9CA3685AB305495DC5FB5747EB8A9A059C4976C0FE4EEAB1D56FF47F1E9664ED9F4A7DAB763AF92B2F6CF2FA7DEC24710E0B9096E30F772BA7FEA9BDBE496C42ED2CEB58F54E80BDF57CE7B4DB6CCFE7182F43BF93CCA0767AF95D62C5D2C3DC6AE1E6D139F51A2C63432117F1714C5566572EE9967A715420ABDCD1D7BD74F8450B89965FCC81C6ACA565C5F3CCF91D430D1F953E4F1A645300A98DD8C47CD64555F08F422340A85404EAE0D3229C4F9336B9470CACBD6BBF3395104750A915CC6EAAC197668267B8C62D2764C8CD69FD937CA3C924D997A0EDE7964BEB9EA2F92EF70C5E5DA0AA55675454E59AEC12A68086DDD95476477C46AE143377694529C58844212FC811560E27EEE2CF00BCB2878974AB253FC8F6E50D35D384423D89D255799B15B5BC324012A675801F3237413FB4D83183590116F0940ECB074158B0841C6BA6C6D1DED015D7687B83EC7C9C28BABD0358DE8D3D8E02D16FA5E1FC2528D2EB517D998C4E75323F1045F5F64A4F3B84537C11400F0F34EBADA7FC36A7C2F91945A38BD992691740249128CC4933C3145813EAC9243288AE5FB82336AEEC23F1B160E53A3A817F76C0F29C14093D0432D57FF1B89955F7044A412BD0B877F57924F842B552622627131E39B03F036AEB64FBA800CE19E27904FF830C6CD668A71471BA414491912470E5AE73B46F4FB609F42BFFCD7D558983A2FECCF006F24506188C91812AD5E3C1A86971491AB5D76B745AFA296399025C120DF0642BC558C32FD7AE3CBFA46C70C36D72665B2C0364EA99026F20502E8ADF0A74343C09FFE3D40F8A4B5108891153D2A8F4641D35FDF7DAB3324B3819885474443F691D2DCDFBBDE1997835BE03D0EDBE59B19C832D555D59698E77CECF75F8C29642EB59FCA735E9EA02C41AA3DA5D7EC331EDC8A6FD51252408822E3D22B077A1778AF816555AD801CD2DD1C46A0743747294E59589EA39566451F9FDBBE519231F90EF7786EC129767F53A09D995E05A46CF5616C647C3421823BA63492F9EFC7344D6CC3A7306B479729DDCF0050DF365EDB40BC61F84FBC5643F53A3159ECA8566501E713E15E5C3B97D4407F8B766FC250ADE8B9515CBFEB57E167227D35C1F9CC88D09BB410F8739FDC9CB9473A5E8A359
AB5431765852DF5A5AF388DB90F8BD5E7FB0933B91AE6457B2967DEFFF05ADD628014F9E880E
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
%APLT1End
%RBIEndFontSubset
/HPRUYT+Meiryo cguidfix
/F5.1/HPRUYT+Meiryo renmfont
[ /CIEBasedABC 4 dict dup begin
/WhitePoint [ 0.9505 1.0000 1.0891 ] def
/DecodeABC [
{ 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse
1 index 1 index ge { exch pop } { pop } ifelse <
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001010101010101010101010101
0101010101010101010101010101010101010101010101020202020202020202
0202020202020202020202020202020202030303030303030303030303030303
0303030303030304040404040404040404040404040404040404050505050505
0505050505050505050506060606060606060606060606060607070707070707
0707070707070708080808080808080808080808090909090909090909090909
0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c
0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010
1010101010111111111111111112121212121212121313131313131313141414
1414141414151515151515151616161616161616171717171717171818181818
18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d
1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223
2323232323242424242425252525252526262626262727272727282828282829
292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f
2f2f303030303131313131323232323333333333343434343535353535363636
36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e
3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646
4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f
4f50505051515151525252535353535454545555555656565657575758585859
59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263
63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e
6e6e6f6f6f707070717171727273737374747475757576767677777878787979
797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585
86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292
9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f
a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae
aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd
bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc
cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd
dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee
eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff
> dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling
cvi 3 index exch get 4 -1 roll 3 -1 roll get
dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind
{ 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse
1 index 1 index ge { exch pop } { pop } ifelse <
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001010101010101010101010101
0101010101010101010101010101010101010101010101020202020202020202
0202020202020202020202020202020202030303030303030303030303030303
0303030303030304040404040404040404040404040404040404050505050505
0505050505050505050506060606060606060606060606060607070707070707
0707070707070708080808080808080808080808090909090909090909090909
0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c
0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010
1010101010111111111111111112121212121212121313131313131313141414
1414141414151515151515151616161616161616171717171717171818181818
18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d
1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223
2323232323242424242425252525252526262626262727272727282828282829
292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f
2f2f303030303131313131323232323333333333343434343535353535363636
36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e
3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646
4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f
4f50505051515151525252535353535454545555555656565657575758585859
59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263
63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e
6e6e6f6f6f707070717171727273737374747475757576767677777878787979
797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585
86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292
9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f
a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae
aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd
bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc
cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd
dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee
eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff
> dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling
cvi 3 index exch get 4 -1 roll 3 -1 roll get
dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind
{ 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse
1 index 1 index ge { exch pop } { pop } ifelse <
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000001010101010101010101010101
0101010101010101010101010101010101010101010101020202020202020202
0202020202020202020202020202020202030303030303030303030303030303
0303030303030304040404040404040404040404040404040404050505050505
0505050505050505050506060606060606060606060606060607070707070707
0707070707070708080808080808080808080808090909090909090909090909
0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c
0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010
1010101010111111111111111112121212121212121313131313131313141414
1414141414151515151515151616161616161616171717171717171818181818
18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d
1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223
2323232323242424242425252525252526262626262727272727282828282829
292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f
2f2f303030303131313131323232323333333333343434343535353535363636
36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e
3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646
4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f
4f50505051515151525252535353535454545555555656565657575758585859
59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263
63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e
6e6e6f6f6f707070717171727273737374747475757576767677777878787979
797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585
86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292
9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f
a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae
aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd
bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc
cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd
dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee
eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff
> dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling
cvi 3 index exch get 4 -1 roll 3 -1 roll get
dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind
] def
/MatrixABC [ 0.4124 0.2126 0.0193 0.3576 0.7151 0.1192 0.1805 0.0722 0.9508 ] def
/RangeLMN [ 0.0 0.9505 0.0 1.0000 0.0 1.0891 ] def
end ] /Cs1 exch/ColorSpace dr pop
%%EndPageSetup
/Cs1 SC
1 1 1 sc
q
13 68 815.76001 459 rc
13 527 m
828.76001 527 l
828.76001 68 l
13 68 l
h
f
Q
q
13 68 816 459 rc
13 527 m
829 527 l
829 68.000008 l
13 68.000008 l
h
f
12700 w
8 M
0 0 0 sc
0.00005683 -0.00003536 -0.00003536 -0.00005683 291.94339 437.32001 cm
0 0 m
1706320 0 l
1706320 2494205 l
0 2494205 l
h
S
0.00005683 -0.00003536 -0.00003536 -0.00005683 301.08011 235.2496 cm
0 0 m
986842 0 l
986842 853685 l
0 853685 l
h
S
0.00005683 -0.00003536 -0.00003536 -0.00005683 513.2453 417.28021 cm
0 0 m
2192102 0 l
2192102 1839304 l
0 1839304 l
h
S
0.00005683 -0.00003536 -0.00003536 -0.00005683 573.14349 235.24969 cm
0 0 m
879311 0 l
879311 1124782 l
0 1124782 l
h
S
0.23999999 0 0 0.23999999 254.4584 -346.60001 cm
/F1.1[ 58.33334 0 0 58.33334 0 0]sf
0 2370 m
(!)s
0.23999999 0 0 0.23999999 264.76471 -341.56 cm
/F2.1[ 41.666672 0 0 41.666672 0 0]sf
0 2370 m
(!)s
0.23999999 0 0 0.23999999 487.9104 -126.76 cm
/F1.1[ 58.33334 0 0 58.33334 0 0]sf
0 2370 m
(!)s
0.23999999 0 0 0.23999999 498.21661 -121.72 cm
/F2.1[ 41.666672 0 0 41.666672 0 0]sf
0 2370 m
(")s
0.23999999 0 0 0.23999999 523.21753 -200.92 cm
/F3.1[ 37.5 0 0 37.5 0 0]sf
0 2370 m
(!"#)[ 38.073750 38.073750 0.000000 ] xS
0.23999999 0 0 0.23999999 499.10309 -215.8 cm
/F4.1[ 58.33334 0 0 58.33334 0 0]sf
0 2370 m
(!"#$)[ 57.551673 57.551673 57.551673 0.000000 ] xS
0.23999999 0 0 0.23999999 558.2843 -215.8 cm
/F1.1[ 58.33334 0 0 58.33334 0 0]sf
0 2370 m
("#)[ 36.300837 0.000000 ] xS
0.23999999 0 0 0.23999999 281.39209 -199.24001 cm
/F3.1[ 37.5 0 0 37.5 0 0]sf
0 2370 m
($"#)[ 38.073750 38.073750 0.000000 ] xS
0.23999999 0 0 0.23999999 257.20541 -214.36 cm
/F4.1[ 58.33334 0 0 58.33334 0 0]sf
0 2370 m
(!"#$)[ 57.551673 57.551673 57.551673 0.000000 ] xS
0.23999999 0 0 0.23999999 316.3866 -214.36 cm
/F1.1[ 58.33334 0 0 58.33334 0 0]sf
0 2370 m
($)s
0.23999999 0 0 0.23999999 324.14291 -214.36 cm
0 2370 m
(")s
0.23999999 0 0 0.23999999 300.68521 -370.60001 cm
/F3.1[ 37.5 0 0 37.5 0 0]sf
0 2370 m
(%"#)[ 38.073750 38.073750 0.000000 ] xS
0.23999999 0 0 0.23999999 293.35818 -385.72 cm
/F1.1[ 58.33334 0 0 58.33334 0 0]sf
0 2370 m
("#)[ 36.300837 0.000000 ] xS
0.23999999 0 0 0.23999999 313.64349 -385.72 cm
0 2370 m
(%)s
0.23999999 0 0 0.23999999 327.77469 -385.72 cm
0 2370 m
(&)s
0.00005683 -0.00003536 -0.00003536 -0.00005683 306.98679 245.0192 cm
0 0 m
183725 0 l
183725 167104 l
0 167104 l
h
S
0.00005683 -0.00003536 -0.00003536 -0.00005683 578.93927 245.0191 cm
0 0 m
183725 0 l
183725 167104 l
0 167104 l
h
S
0.23999999 0 0 0.23999999 562.89331 -376.60001 cm
/F3.1[ 37.5 0 0 37.5 0 0]sf
0 2370 m
(&%"#)[ 38.073750 38.073750 38.073750 0.000000 ] xS
0.23999999 0 0 0.23999999 560.06281 -391.48001 cm
/F1.1[ 58.33334 0 0 58.33334 0 0]sf
0 2370 m
($)s
0.23999999 0 0 0.23999999 567.81909 -391.48001 cm
0 2370 m
(")s
0.23999999 0 0 0.23999999 580.49261 -391.48001 cm
0 2370 m
(%)s
0.23999999 0 0 0.23999999 594.62378 -391.48001 cm
0 2370 m
(&)s
0.23999999 0 0 0.23999999 219.155 -189.39999 cm
0 2370 m
(%)s
0.23999999 0 0 0.23999999 233.28619 -189.39999 cm
0 2370 m
(')s
0.23999999 0 0 0.23999999 466.6217 -188.44 cm
0 2370 m
(%)s
0.23999999 0 0 0.23999999 480.75299 -188.44 cm
0 2370 m
(')s
0.23999999 0 0 0.23999999 240.17529 -409.48001 cm
0 2370 m
(%)s
0.23999999 0 0 0.23999999 254.3065 -409.48001 cm
0 2370 m
(\()s
0.23999999 0 0 0.23999999 265.4628 -409.48001 cm
0 2370 m
(\))s
0.23999999 0 0 0.23999999 278.82901 -409.48001 cm
0 2370 m
(')s
0.23999999 0 0 0.23999999 480.76569 -410.20001 cm
0 2370 m
(%)s
0.23999999 0 0 0.23999999 494.897 -410.20001 cm
0 2370 m
(*)s
0.23999999 0 0 0.23999999 509.772 -410.20001 cm
0 2370 m
(\))s
0.23999999 0 0 0.23999999 523.13818 -410.20001 cm
0 2370 m
(')s
0.23999999 0 0 0.23999999 191.0195 -189.64 cm
/F5.1[ 58.33334 0 0 58.33334 0 0]sf
0 2370 m
(!"#)[ 34.976671 14.618335 0.000000 ] xS
0.23999999 0 0 0.23999999 210.72009 -409 cm
0 2370 m
(!"#)[ 34.976671 14.618335 0.000000 ] xS
0.23999999 0 0 0.23999999 452.30081 -410.67999 cm
0 2370 m
(!"#)[ 34.976671 14.618335 0.000000 ] xS
0.23999999 0 0 0.23999999 437.694 -189.64 cm
0 2370 m
(!"#)[ 34.976671 14.618335 0.000000 ] xS
0.23999999 0 0 0.23999999 191.9464 -167.32001 cm
/F1.1[ 58.33334 0 0 58.33334 0 0]sf
0 2370 m
(+)s
CM
222.4518 413.9201 m
223.8737 413.54639 224.9697 412.578 225.7399 411.01489 c
226.5101 409.45169 226.8952 407.6015 226.8952 405.46411 c
226.8952 403.32669 226.5101 401.4765 225.7399 399.9133 c
224.9697 398.35019 223.8737 397.38171 222.4518 397.008 c
222.2809 397.5686 l
223.3838 397.98331 224.2189 398.88681 224.7863 400.27899 c
225.3537 401.6713 225.63741 403.3974 225.63741 405.45731 c
225.63741 407.5217 225.3537 409.25119 224.7863 410.64569 c
224.2189 412.04031 223.3838 412.94489 222.2809 413.35959 c
h
205.69521 413.9201 m
205.8661 413.35959 l
204.7632 412.94489 203.9281 412.04031 203.3607 410.64569 c
202.7933 409.25119 202.5096 407.5217 202.5096 405.45731 c
202.5096 403.3974 202.7933 401.6713 203.3607 400.27899 c
203.9281 398.88681 204.7632 397.98331 205.8661 397.5686 c
205.69521 397.008 l
204.2733 397.38171 203.17731 398.35019 202.4071 399.9133 c
201.6369 401.4765 201.2518 403.32669 201.2518 405.46411 c
201.2518 407.6015 201.6369 409.45169 202.4071 411.01489 c
203.17731 412.578 204.2733 413.54639 205.69521 413.9201 c
h
f*
0.23999999 0 0 0.23999999 206.20509 -167.32001 cm
0 2370 m
(")s
0.23999999 0 0 0.23999999 214.7859 -162.28 cm
/F2.1[ 41.666672 0 0 41.666672 0 0]sf
0 2370 m
(#)s
0.23999999 0 0 0.23999999 436.7355 -166.36 cm
/F1.1[ 58.33334 0 0 58.33334 0 0]sf
0 2370 m
(+)s
0.23999999 0 0 0.23999999 444.81049 -166.36 cm
0 2370 m
(,)s
0.23999999 0 0 0.23999999 450.548 -166.36 cm
0 2370 m
(")s
0.23999999 0 0 0.23999999 459.39651 -166.36 cm
0 2370 m
(-)s
0.23999999 0 0 0.23999999 213.6714 -388.12 cm
0 2370 m
(.)s
0.23999999 0 0 0.23999999 223.2339 -388.12 cm
0 2370 m
(,)s
0.23999999 0 0 0.23999999 228.97141 -388.12 cm
0 2370 m
(")s
0.23999999 0 0 0.23999999 237.8199 -388.12 cm
0 2370 m
(-)s
0.23999999 0 0 0.23999999 452.77509 -387.39999 cm
0 2370 m
(.)s
0.23999999 0 0 0.23999999 462.33759 -387.39999 cm
0 2370 m
(,)s
0.23999999 0 0 0.23999999 468.0751 -387.39999 cm
0 2370 m
(")s
0.23999999 0 0 0.23999999 476.65579 -382.35999 cm
/F2.1[ 41.666672 0 0 41.666672 0 0]sf
0 2370 m
(#)s
0.23999999 0 0 0.23999999 483.7066 -387.39999 cm
/F1.1[ 58.33334 0 0 58.33334 0 0]sf
0 2370 m
(-)s
0.23999999 0 0 0.23999999 400.01459 -113.8 cm
0 2370 m
(")s
0.23999999 0 0 0.23999999 412.68811 -113.8 cm
0 2370 m
(/)s
0.23999999 0 0 0.23999999 425.11938 -113.8 cm
0 2370 m
(!)s
0.23999999 0 0 0.23999999 435.4256 -108.76 cm
/F2.1[ 41.666672 0 0 41.666672 0 0]sf
0 2370 m
(")s
0.23999999 0 0 0.23999999 444.94559 -108.76 cm
0 2370 m
($)s
0.23999999 0 0 0.23999999 452.17059 -108.76 cm
0 2370 m
(!)s
0.23999999 0 0 0.23999999 328.483 -126.76 cm
/F1.1[ 58.33334 0 0 58.33334 0 0]sf
0 2370 m
(!)s
0.23999999 0 0 0.23999999 338.78931 -121.72 cm
/F2.1[ 41.666672 0 0 41.666672 0 0]sf
0 2370 m
(!)s
CM
357.15948 445.5311 m
473.10361 445.53101 l
473.10361 445.10599 l
357.15948 445.10611 l
h
468.1109 448.47711 m
473.52551 445.31851 l
468.1109 442.16 l
468.00949 442.10089 467.87939 442.1351 467.82031 442.23651 c
467.76111 442.33789 467.79541 442.46799 467.8967 442.5271 c
472.9967 445.50211 l
472.9967 445.13501 l
467.8967 448.10999 l
467.79541 448.1691 467.76111 448.29929 467.82031 448.4006 c
467.87939 448.50201 468.00949 448.53619 468.1109 448.47711 c
h
f
0.23999999 0 0 0.23999999 502.16571 -341.32001 cm
/F1.1[ 58.33334 0 0 58.33334 0 0]sf
0 2370 m
(!)s
0.23999999 0 0 0.23999999 512.47192 -336.28 cm
/F2.1[ 41.666672 0 0 41.666672 0 0]sf
0 2370 m
(")s
6350 w
0.00006693 0 0 -0.00006693 520.36719 335.9985 cm
139408 926360 m
62415.078 926360 0 921158.88 0 914743 c
0 11616.98 l
0 5201.1011 62415.078 0 139408 0 c
S
-0.00006693 0 0 -0.00006693 573.03082 335.99829 cm
139408 926360 m
62415.078 926360 0 921158.88 0 914743 c
0 11616.98 l
0 5201.1011 62415.078 0 139408 0 c
S
0.00006693 0 0 -0.00006693 250.3479 335.9985 cm
156941 960867 m
70264.883 960867 0 955012 0 947789.62 c
0 13077.42 l
0 5854.959 70264.883 0 156941 0 c
S
-0.00006693 0 0 -0.00006693 309.6351 335.99829 cm
156941 960867 m
70264.883 960867 0 955012 0 947789.62 c
0 13077.42 l
0 5854.959 70264.883 0 156941 0 c
S
Q
q
0 0 842 595 rc
49 0 0 2 255 275 cm
BI
/Width 147
/Height 6
/BitsPerComponent 8
/Decode[
0 1
0 1
0 1
]
/Interpolate true
/DataSource cg_aiproc
ID
J*LI$k>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjIT
k>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh
:4I`U:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh
:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$
Icl2UIcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$
IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjIT
k>$Ick>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4E#fhgap"
N9<rbk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjIT
k>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$MU
k>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh
:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DAU
:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$
IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjIT
39O%ck>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$L%e),Z?@>sAE
IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjIT
k>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjIUIcjIT
k>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh
:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$KhInkIU
:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$
IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IQ6Lc
IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITq:"5Nn;aX=J"l@\
U@*N*mXLu!J"l@\U@*N*mXLu!J"l@\U@*N*mXLu!J"l@\U@*N*mXLu!J"l@\U@*N*mXLu!J"l@\U@*N*
mXLu!J"l@\U@*N*mXLu!J"l@\U@*N*mXLu!J"l@\U@*N*mXLu!J"l@\U@*N*mXLu!J"l@\J"l@\U@*N*
mXLu!J"l@\U@*N*mXLu!J"l@\U@*N*mXLu!J"l@\U@*N*mXLu!J"l@\U@*N*mXLu!J"l@\U@*N*mXLu!
J"l@\U@*N*mXLu!J"l@\U@*N*mXLu!J"l@\U@*N*mXLu!J"l@\U@*N*mXLu!J"l@\U@*N*mXK_\mXLu!
J"l@\U@*N*mXLu!J"l@\U@*N*mXLu!J"l@\U@*N*mXLu!J"l@\U@*N*mXLu!J"l@\U@*N*mXLu!J"l@\
U@*N*mXLu!J"l@\U@*N*mXLu!J"l@\U@*N*mXLu!J"l@\U@*N*mXLu!J"l@\U@*N*mXLu!J"epjJ"l@\
U@*N*mXLu!J"l@\U@*N*mXLu!J"l@\U@*N*mXLu!J"l@\U@*N*mXLu!J"l@\UANj3JcC<$JcEgkJcC<$
JcEgkJ,
~> %APLeod
EI
49 0 0 13 255 277 cm
BI
/Width 147
/Height 39
/BitsPerComponent 8
/Decode[
0 1
0 1
0 1
]
/Interpolate true
/DataSource cg_aiproc
ID
JcC<$JcEgkJ*L^0kZ*9!<J0L8KBQ<fkZ*9!<J0L8KBQ<fkZ*9!<J0L8KBQ<fkZ*9!<J0L8KBQ<fkZ*9!
<J0L8KBQ<fkZ*9!<J0L8KBQ<fkZ*9!<J0L8KBQ<fkZ*9!<J0L8KBQ<fkZ*9!<J0L8KBQ<fkZ*9!<J0L8
KBQ<fkZ*9!<I]Yb<J0L8KBQ<fkZ*9!<J0L8KBQ<fkZ*9!<J0L8KBQ<fkZ*9!<J0L8KBQ<fkZ*9!<J0L8
KBQ<fkZ*9!<J0L8KBQ<fkZ*9!<J0L8KBQ<fkZ*9!<J0L8KBQ<fkZ*9!<J0L8KBQ<fkZ*9!<J0L8KBQ<f
kZ*9!<J0L8KBRebKBQ<fkZ*9!<J0L8KBQ<fkZ*9!<J0L8KBQ<fkZ*9!<J0L8KBQ<fkZ*9!<J0L8KBQ<f
kZ*9!<J0L8KBQ<fkZ*9!<J0L8KBQ<fkZ*9!<J0L8KBQ<fkZ*9!<J0L8KBQ<fkZ*9!<J0L8KBQ<fkZ*9!
<J0L8KBQ<fkZ*6pkZ*9!<J0L8KBQ<fkZ*9!<J0L8KBQ<fkZ*9!<J0L8KBQ<fkZ*9!<J0L8KBQ<fkZ*9!
<J1+ti.($#N9<rbk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh
:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$
IcjITk>$MUk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$
IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjIT
k>$Kh:4DAU:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjIT
k>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh
:4DA$IcjIT39O%ck>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$L%
e),Z?@>sAEIcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh
:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$
IcjIUIcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$
IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjIT
k>$KhInkIU:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjIT
k>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh
:4DA$IQ6LcIcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITq:"5N
l=#Y7:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh
:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$Kh:4DA$
It$QUIcjITk>$Kh:4DA$IcjITk>$Kh:4DA$IcjITk>$K
gitextract_in6dllll/ ├── Graphic-Notes-on-LA4E-v1.1-j.pptx ├── Graphic-Notes-on-LA4E-v1.1.pptx ├── Illustrations-j.pptx ├── Illustrations.pptx ├── LICENSE ├── MapofEigenvalues.pptx ├── MatrixWorld.pptx ├── README-zh-CN.md ├── README.md ├── The-Art-of-Linear-Algebra-j.tex ├── The-Art-of-Linear-Algebra-zh-CN.tex ├── The-Art-of-Linear-Algebra.tex ├── The-Art-of-Linear-Algebra.updated.tex ├── figs/ │ ├── 4-Subspaces-j.eps │ ├── 4-Subspaces.eps │ ├── 5-Factorizations-j.eps │ ├── 5-Factorizations.eps │ ├── A_CR-j.eps │ ├── A_CR.eps │ ├── A_LU-j.eps │ ├── A_LU.eps │ ├── A_QLQT-j.eps │ ├── A_QLQT.eps │ ├── A_QR-j.eps │ ├── A_QR.eps │ ├── A_USVT-j.eps │ ├── A_USVT.eps │ ├── CR1-j.eps │ ├── CR1.eps │ ├── CR2-j.eps │ ├── CR2.eps │ ├── EVD-j.eps │ ├── EVD.eps │ ├── LU1-j.eps │ ├── LU1.eps │ ├── LU2-j.eps │ ├── LU2.eps │ ├── MapofEigenvalues-j.eps │ ├── MapofEigenvalues.eps │ ├── MatrixTimesMatrix-j.eps │ ├── MatrixTimesMatrix.eps │ ├── MatrixTimesVector-j.eps │ ├── MatrixTimesVector.eps │ ├── MatrixWorld-j.eps │ ├── MatrixWorld.eps │ ├── Pattern11-22-j.eps │ ├── Pattern11-22.eps │ ├── Pattern12-j.eps │ ├── Pattern12.eps │ ├── Pattern3-j.eps │ ├── Pattern3.eps │ ├── Pattern4-j.eps │ ├── Pattern4.eps │ ├── QR-j.eps │ ├── QR.eps │ ├── SVD-j.eps │ ├── SVD.eps │ ├── VectorTimesMatrix-j.eps │ ├── VectorTimesMatrix.eps │ ├── VectorTimesVector-j.eps │ ├── VectorTimesVector.eps │ ├── ViewingMatrix-4Ways-j.eps │ ├── ViewingMatrix-4Ways.eps │ └── epsinclude.tex ├── figs-catalog.tex ├── makefile ├── name-list-book.mak └── name-list.mak
Copy disabled (too large)
Download .json
Condensed preview — 68 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (15,833K chars).
[
{
"path": "LICENSE",
"chars": 7047,
"preview": "Creative Commons Legal Code\n\nCC0 1.0 Universal\n\n CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE\n"
},
{
"path": "README-zh-CN.md",
"chars": 1777,
"preview": "[English](README.md) | 中文(简体)\n\n# The-Art-of-Linear-Algebra\n\nGraphic notes on Gilbert Strang's \"Linear Algebra for Everyo"
},
{
"path": "README.md",
"chars": 1350,
"preview": "English | [中文(简体)](README-zh-CN.md)\n\n# The-Art-of-Linear-Algebra\n\nGraphic notes on Gilbert Strang's \"Linear Algebra for "
},
{
"path": "The-Art-of-Linear-Algebra-j.tex",
"chars": 17924,
"preview": "\\documentclass[letterpaper]{article}\n\\usepackage{typearea}\n\\typearea{12}\n\\usepackage{here}\n\\usepackage{bm}\n\\usepackage{a"
},
{
"path": "The-Art-of-Linear-Algebra-zh-CN.tex",
"chars": 15887,
"preview": "\\documentclass[letterpaper]{article}\n\\usepackage{typearea}\n\\typearea{12}\n\\usepackage{here}\n\\usepackage{bm}\n\\usepackage{a"
},
{
"path": "The-Art-of-Linear-Algebra.tex",
"chars": 20931,
"preview": "\\documentclass[letterpaper]{article}\n\\usepackage{typearea}\n\\typearea{12}\n\\usepackage{here}\n\\usepackage{bm}\n\\usepackage{a"
},
{
"path": "The-Art-of-Linear-Algebra.updated.tex",
"chars": 20902,
"preview": "\\documentclass[letterpaper]{article}\n\\usepackage{typearea}\n\\typearea{12}\n\\usepackage{here}\n\\usepackage{bm}\n\\usepackage{a"
},
{
"path": "figs/4-Subspaces-j.eps",
"chars": 252656,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 450 381\n%%HiResBoundingBox: 0 0 448 379\n%APL_DSC_Encoding: UTF8\n%APLProducer:"
},
{
"path": "figs/4-Subspaces.eps",
"chars": 262843,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 462 381\n%%HiResBoundingBox: 0 0 460.5 379\n%APL_DSC_Encoding: UTF8\n%APLProduce"
},
{
"path": "figs/5-Factorizations-j.eps",
"chars": 465504,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 539 291\n%%HiResBoundingBox: 0 0 537.5 289.5\n%APL_DSC_Encoding: UTF8\n%APLProdu"
},
{
"path": "figs/5-Factorizations.eps",
"chars": 419454,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 567 291\n%%HiResBoundingBox: 0 0 566 289\n%APL_DSC_Encoding: UTF8\n%APLProducer:"
},
{
"path": "figs/A_CR-j.eps",
"chars": 76313,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 72 48\n%%HiResBoundingBox: 0 0 70.5 47\n%APL_DSC_Encoding: UTF8\n%APLProducer: ("
},
{
"path": "figs/A_CR.eps",
"chars": 76339,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 72 48\n%%HiResBoundingBox: 0 0 70.5 47\n%APL_DSC_Encoding: UTF8\n%APLProducer: ("
},
{
"path": "figs/A_LU-j.eps",
"chars": 86762,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 101 48\n%%HiResBoundingBox: 0 0 99 46.5\n%APL_DSC_Encoding: UTF8\n%APLProducer: "
},
{
"path": "figs/A_LU.eps",
"chars": 94122,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 109 51\n%%HiResBoundingBox: 0 0 108 49.5\n%APL_DSC_Encoding: UTF8\n%APLProducer:"
},
{
"path": "figs/A_QLQT-j.eps",
"chars": 112699,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 150 48\n%%HiResBoundingBox: 0 0 148 47\n%APL_DSC_Encoding: UTF8\n%APLProducer: ("
},
{
"path": "figs/A_QLQT.eps",
"chars": 113503,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 150 48\n%%HiResBoundingBox: 0 0 148 46.5\n%APL_DSC_Encoding: UTF8\n%APLProducer:"
},
{
"path": "figs/A_QR-j.eps",
"chars": 72365,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 101 48\n%%HiResBoundingBox: 0 0 99 46.5\n%APL_DSC_Encoding: UTF8\n%APLProducer: "
},
{
"path": "figs/A_QR.eps",
"chars": 72391,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 101 48\n%%HiResBoundingBox: 0 0 99 46.5\n%APL_DSC_Encoding: UTF8\n%APLProducer: "
},
{
"path": "figs/A_USVT-j.eps",
"chars": 89586,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 122 48\n%%HiResBoundingBox: 0 0 120.5 47\n%APL_DSC_Encoding: UTF8\n%APLProducer:"
},
{
"path": "figs/A_USVT.eps",
"chars": 89616,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 122 48\n%%HiResBoundingBox: 0 0 120.5 47\n%APL_DSC_Encoding: UTF8\n%APLProducer:"
},
{
"path": "figs/CR1-j.eps",
"chars": 242114,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 458 61\n%%HiResBoundingBox: 0 0 457 59.5\n%APL_DSC_Encoding: UTF8\n%APLProducer:"
},
{
"path": "figs/CR1.eps",
"chars": 242088,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 458 61\n%%HiResBoundingBox: 0 0 457 59.5\n%APL_DSC_Encoding: UTF8\n%APLProducer:"
},
{
"path": "figs/CR2-j.eps",
"chars": 268088,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 435 58\n%%HiResBoundingBox: 0 0 433.5 57\n%APL_DSC_Encoding: UTF8\n%APLProducer:"
},
{
"path": "figs/CR2.eps",
"chars": 268094,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 435 58\n%%HiResBoundingBox: 0 0 433.5 57\n%APL_DSC_Encoding: UTF8\n%APLProducer:"
},
{
"path": "figs/EVD-j.eps",
"chars": 295737,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 487 67\n%%HiResBoundingBox: 0 0 485 65.5\n%APL_DSC_Encoding: UTF8\n%APLProducer:"
},
{
"path": "figs/EVD.eps",
"chars": 295847,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 487 67\n%%HiResBoundingBox: 0 0 485 65.5\n%APL_DSC_Encoding: UTF8\n%APLProducer:"
},
{
"path": "figs/LU1-j.eps",
"chars": 211808,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 468 73\n%%HiResBoundingBox: 0 0 466.5 71.5\n%APL_DSC_Encoding: UTF8\n%APLProduce"
},
{
"path": "figs/LU1.eps",
"chars": 211822,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 468 73\n%%HiResBoundingBox: 0 0 466.5 71.5\n%APL_DSC_Encoding: UTF8\n%APLProduce"
},
{
"path": "figs/LU2-j.eps",
"chars": 291818,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 448 72\n%%HiResBoundingBox: 0 0 446 70.5\n%APL_DSC_Encoding: UTF8\n%APLProducer:"
},
{
"path": "figs/LU2.eps",
"chars": 291816,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 448 72\n%%HiResBoundingBox: 0 0 446 70.5\n%APL_DSC_Encoding: UTF8\n%APLProducer:"
},
{
"path": "figs/MapofEigenvalues-j.eps",
"chars": 924743,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 649 231\n%%HiResBoundingBox: 0 0 647.5 230\n%APL_DSC_Encoding: UTF8\n%APLProduce"
},
{
"path": "figs/MapofEigenvalues.eps",
"chars": 924737,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 649 231\n%%HiResBoundingBox: 0 0 647.5 230\n%APL_DSC_Encoding: UTF8\n%APLProduce"
},
{
"path": "figs/MatrixTimesMatrix-j.eps",
"chars": 481856,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 569 300\n%%HiResBoundingBox: 0 0 567 298.5\n%APL_DSC_Encoding: UTF8\n%APLProduce"
},
{
"path": "figs/MatrixTimesMatrix.eps",
"chars": 604183,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 667 377\n%%HiResBoundingBox: 0 0 665.5 375.5\n%APL_DSC_Encoding: UTF8\n%APLProdu"
},
{
"path": "figs/MatrixTimesVector-j.eps",
"chars": 227340,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 454 158\n%%HiResBoundingBox: 0 0 453 156.5\n%APL_DSC_Encoding: UTF8\n%APLProduce"
},
{
"path": "figs/MatrixTimesVector.eps",
"chars": 279627,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 563 188\n%%HiResBoundingBox: 0 0 561 186.5\n%APL_DSC_Encoding: UTF8\n%APLProduce"
},
{
"path": "figs/MatrixWorld-j.eps",
"chars": 405540,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 597 421\n%%HiResBoundingBox: 0 0 595 419\n%APL_DSC_Encoding: UTF8\n%APLProducer:"
},
{
"path": "figs/MatrixWorld.eps",
"chars": 465581,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 626 425\n%%HiResBoundingBox: 0 0 624 424\n%APL_DSC_Encoding: UTF8\n%APLProducer:"
},
{
"path": "figs/Pattern11-22-j.eps",
"chars": 278639,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 529 125\n%%HiResBoundingBox: 0 0 528 124\n%APL_DSC_Encoding: UTF8\n%APLProducer:"
},
{
"path": "figs/Pattern11-22.eps",
"chars": 356188,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 612 183\n%%HiResBoundingBox: 0 0 610.5 181.5\n%APL_DSC_Encoding: UTF8\n%APLProdu"
},
{
"path": "figs/Pattern12-j.eps",
"chars": 662074,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 550 306\n%%HiResBoundingBox: 0 0 548.5 304\n%APL_DSC_Encoding: UTF8\n%APLProduce"
},
{
"path": "figs/Pattern12.eps",
"chars": 849866,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 659 360\n%%HiResBoundingBox: 0 0 657 358.5\n%APL_DSC_Encoding: UTF8\n%APLProduce"
},
{
"path": "figs/Pattern3-j.eps",
"chars": 241882,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 454 125\n%%HiResBoundingBox: 0 0 453 124\n%APL_DSC_Encoding: UTF8\n%APLProducer:"
},
{
"path": "figs/Pattern3.eps",
"chars": 220512,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 422 165\n%%HiResBoundingBox: 0 0 420.5 163.5\n%APL_DSC_Encoding: UTF8\n%APLProdu"
},
{
"path": "figs/Pattern4-j.eps",
"chars": 336723,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 406 140\n%%HiResBoundingBox: 0 0 404.5 139\n%APL_DSC_Encoding: UTF8\n%APLProduce"
},
{
"path": "figs/Pattern4.eps",
"chars": 418241,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 494 164\n%%HiResBoundingBox: 0 0 492.5 163\n%APL_DSC_Encoding: UTF8\n%APLProduce"
},
{
"path": "figs/QR-j.eps",
"chars": 344661,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 483 73\n%%HiResBoundingBox: 0 0 482 72\n%APL_DSC_Encoding: UTF8\n%APLProducer: ("
},
{
"path": "figs/QR.eps",
"chars": 344633,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 483 73\n%%HiResBoundingBox: 0 0 482 72\n%APL_DSC_Encoding: UTF8\n%APLProducer: ("
},
{
"path": "figs/SVD-j.eps",
"chars": 273351,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 426 80\n%%HiResBoundingBox: 0 0 424 78.5\n%APL_DSC_Encoding: UTF8\n%APLProducer:"
},
{
"path": "figs/SVD.eps",
"chars": 273369,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 426 80\n%%HiResBoundingBox: 0 0 424 78.5\n%APL_DSC_Encoding: UTF8\n%APLProducer:"
},
{
"path": "figs/VectorTimesMatrix-j.eps",
"chars": 253989,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 478 260\n%%HiResBoundingBox: 0 0 476.5 259\n%APL_DSC_Encoding: UTF8\n%APLProduce"
},
{
"path": "figs/VectorTimesMatrix.eps",
"chars": 280649,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 629 314\n%%HiResBoundingBox: 0 0 627 312\n%APL_DSC_Encoding: UTF8\n%APLProducer:"
},
{
"path": "figs/VectorTimesVector-j.eps",
"chars": 241193,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 558 173\n%%HiResBoundingBox: 0 0 556 171.5\n%APL_DSC_Encoding: UTF8\n%APLProduce"
},
{
"path": "figs/VectorTimesVector.eps",
"chars": 298700,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 651 206\n%%HiResBoundingBox: 0 0 649.5 205\n%APL_DSC_Encoding: UTF8\n%APLProduce"
},
{
"path": "figs/ViewingMatrix-4Ways-j.eps",
"chars": 207737,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 260 161\n%%HiResBoundingBox: 0 0 258.5 160\n%APL_DSC_Encoding: UTF8\n%APLProduce"
},
{
"path": "figs/ViewingMatrix-4Ways.eps",
"chars": 296363,
"preview": "%!PS-Adobe-2.0 EPSF-2.0\n%%BoundingBox: 0 0 258 184\n%%HiResBoundingBox: 0 0 257 182.5\n%APL_DSC_Encoding: UTF8\n%APLProduce"
},
{
"path": "figs/epsinclude.tex",
"chars": 2526,
"preview": "\\includegraphics{illust-p1.eps}\\\\illust-p1.eps\\\\\n\n\n\\includegraphics{illust-p10.eps}\\\\illust-p10.eps\\\\\n\n\n\\includegraphics"
},
{
"path": "figs-catalog.tex",
"chars": 824,
"preview": "\\documentclass[letterpaper]{article}\n\\usepackage{typearea}\n\\typearea{12}\n\\usepackage{here}\n\\usepackage{bm}\n\\usepackage{a"
},
{
"path": "makefile",
"chars": 4828,
"preview": "# This Makefile Works on Mac\n\n# important target files to be published.\nART=The-Art-of-Linear-Algebra\nILLUST=Illustratio"
},
{
"path": "name-list-book.mak",
"chars": 317,
"preview": "# illstration.pptx page, japp_ filename for the book\n2 ViewingMatrix-4Ways\n4 v1\n5 v2\n7 Mv1\n8 Mv2\n10 vM1\n11 vM2\n14 MM1\n15"
},
{
"path": "name-list.mak",
"chars": 377,
"preview": "2 ViewingMatrix-4Ways\n3 VectorTimesVector\n6 MatrixTimesVector\n9 VectorTimesMatrix\n12 4-Subspaces\n13 MatrixTimesMatrix\n18"
}
]
// ... and 6 more files (download for full content)
About this extraction
This page contains the full source code of the kenjihiranabe/The-Art-of-Linear-Algebra GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 68 files (14.8 MB), approximately 3.9M tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.