2026
2025
2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
全32件 (32件中 1-32件目)
1
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/4.4.3 座標変換としての解釈座標変換としての解釈。基底を変えて別視点から眺めることで違う景色が見えてきます。もともとの基底ではぐにゃっとゆがんでいた写像も上手い基底を用意することで単なる軸に沿った伸縮ととらえることができるようになります。計算としては簡単な基底で計算しておき元の基底へ戻す変換を行うことで解決します。ただ注意点があり正則なのかどうかをきちんと確認する必要があります。場合によっては独立な固有ベクトルを必要なだけとれない場合があります。
2007年01月31日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/4.4.2 上手い変換の求め方P^-1APが対角になる都合のいいPを作る話。Pはたいていの正方行列Aなら作れることになります。Pを縦ベクトルP=(p1,...,pn)に分解しn次元の縦ベクトルをn本並べたものと解釈します。つまりP^-1AP=Λ=diag(λ1,...,λn)のようになる上手いPを見つけたいわけです。両辺に左からPを掛けると AP=Pλ となります。式を整理すると Apn=λnpn なので上手いベクトルと数を求めれば解決となります。この数λとベクトルpを固有値、固有ベクトルと呼びます。また固有値、固有ベクトルを求めれば暴走するかどうかの判定ができます。
2007年01月30日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/4.4.1 変数変換◆一般化これまでの例を一般化していきましょう。ポイントとしては対角行列になるような行列をうまく見つけるところです。この行列をCとするとCは1対1対応(全単射)になっていないと行ったり来たりできないので困ります。ということでCは正則行列ということにします。そしてP=C^-1と置き換えます。これはPの方があとあと都合が良いからです。そして元の変数 x(t) に対し、何か正則行列 P を持ってきてx(t) = Py(t)で別の変数 y(t) に変換することを考えてみましょう。このとき x(t) = Ax(t-1) という差分方程式はどう変換されるでしょうか。x(t) = Py(t)は言い方を変えるとy(t)=P^-1x(t) なのでごちゃごちゃ変形するとy(t)=Λy(t-1),Λ=P^-1APという形になります。これを相似変換とよびます。これでΛが対角行列なら簡単にもとまりそうです。後は x(t) = Py(t) と y(0) =P^-1x(0) から x も求まります。ということでうまい正則行列 P を選んで P^-1AP を対角行列にすれば良いわけですね。これを対角化と呼びます。対角化は本質的に1通りになります。
2007年01月29日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/4.4.1 変数変換いろいろ書き直すという方向でやってみます。◆まずは具体例ばらすだけだと手が出ないケース。式を文字で置き換え計算すると4.3節で示した形の通りですので一目で暴走するかどうかわかります。◆行列に翻訳すると先の例を行列で考えます。これは式の見方が変わっただけですね。
2007年01月28日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/4.4.1 変数変換いろいろ書き直すという方向でやってみます。◆まずは具体例ばらすだけだと手が出ないケース。式を文字で置き換え計算すると4.3節で示した形の通りですので一目で暴走するかどうかわかります。◆行列に翻訳すると先の例を行列で考えます。これは式の見方が変わっただけですね。◆一般化これまでの例を一般化していきましょう。ポイントとしては対角行列になるような行列をうまく見つけるところです。この行列をCとするとCは1対1対応(全単射)になっていないと行ったり来たりできないので困ります。ということでCは正則行列ということにします。そしてP=C^-1と置き換えます。これはPの方があとあと都合が良いからです。そして元の変数 x(t) に対し、何か正則行列 P を持ってきてx(t) = Py(t)で別の変数 y(t) に変換することを考えてみましょう。このとき x(t) = Ax(t-1) という差分方程式はどう変換されるでしょうか。x(t) = Py(t)は言い方を変えるとy(t)=P^-1x(t) なのでごちゃごちゃ変形するとy(t)=Λy(t-1),Λ=P^-1APという形になります。これを相似変換とよびます。これでΛが対角行列なら簡単にもとまりそうです。後は x(t) = Py(t) と y(0) =P^-1x(0) から x も求まります。ということでうまい正則行列 P を選んで P^-1AP を対角行列にすれば良いわけですね。これを対角化と呼びます。対角化は本質的に1通りになります。
2007年01月27日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/4.3 対角行列の場合対角行列の場合。行列ですが分解すると1次元の束のようなもの。対角行列なので当然です。これも A(a1,...,an) のうち1つでも1より大きければ暴走しますし1より小さければ暴走しません。4.4 対角化できる場合一般のAをなんとかして対角化すると先のように簡単に解決できそうです。
2007年01月26日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/4.2 1次元の場合まずやさしい1次元の場合を考えます。x(t)=7x(t-1)ですが x(t-1)=7x(t-2)になるわけですからx(t)=7^tx(0)ということになります。この場合 t->∞ のとき 7^t->∞ となってしまうので暴走してしまいます。別の例でx(t) = 0.2x(t-1)の場合は t->∞ のとき 0.2^t->0 なのでよさそうですね。
2007年01月25日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/第4章 固有値・対角化・Jordan標準形-暴走の危険があるかを判断4.1 問題設定:安定性何か値 u を入力したら値 ξ が出てくる魔法の箱を考えます。時刻 t を明示したいときは u(t) や ξ(t) と書くことにします。これだけならただの関数なのですが過去の u によって今の出力 ξ(t) が変わってくることもあります。車のアクセルと速度のようなケースがありますね。このような箱もいろいろ考えられますが基礎的なタイプの箱として自己回帰(Auto Regressive)モデルと呼ばれるものがあります。そしてここでは基礎的な特性として入力 u(t) がずっと 0 のときの ξ(t) のふるまいが暴走するかどうかに着目します。数学的には固有値・固有ベクトル、対角化、Jordan標準系などを扱います。
2007年01月24日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/3.8.2 並べ替えても行き詰まってしまう状況pivoting だけではまだ詰まってしまうケースがあり、そんなときは列に入れ替えも行います。これであらゆる A を分解できます。このように行・列の両方を入れ替えることを完全 pivoting と呼びます。Aが正則なのに途中で詰んだらそれは正則でなかったことになります。なので・行列式 detA について詰む場合は detA=0・連立一次方程式 Ax=y については詰む場合はたちが悪い場合だと言えます。
2007年01月23日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/3.8 LU分割の手順(2)例外が生じる場合3.8.1 並べ替えが必要になる状況LU分解の途中で1/0ができてしまい計算できないケースを扱います。◆理屈今までも扱った pivoting という手法を使います。行を入れ替え何事もなかったかのようにLU分解の手順を続けていきます。◆実装実装の上では pivoting は間接参照で扱い読みかえるだけにします。後は0かどうかの判定をする際に気を使うかあるいは一番よさそうな行を毎回選ぶという手がよさそうです。本文ではここまでをうまくまとめたソースがあります。
2007年01月22日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/3.7 逆行列をLU分解で求めるn次正方行列Aの逆行列をXとおくとX=(x1,...,xn)と列ベクトルに分割すればAX=IはA(x1,...,xn)=(e1,...,xn)とも書けます。eiは第i成分だけが1で他成分は0なベクトルです。ばらせば Ax1=e1,...,AXn=en です。Aを掛けたらooになるベクトルは先ほど扱ったばかりで A をLU分解しておけば Ax=b となるxが効率良く求められるのでした。ただ逆行列が本当に必要でしょうかあるベクトルyに対するA^-1yが得られれば十分ですので連立方程式を解くべきでしょう。
2007年01月21日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/3.5 行列式をLU分解で求める正方行列 A = LU と LU 分解されていれば行列式 detA は以下のようにdetA = det(LU) = (detL)(detU) ということで今回は detL は1なのでdetAは U の対角成分の積ということになります。3.6 一次方程式をLU分解で解く◆方針たちがいい場合の連立一次方程式を考えます。正則なn次正方行列Aとn次元ベクトルyに対してAx=yとなるxを求めることを考えます。A=LUとLU分解されていたらLUx=yを考えることになり1.Lz=yとなるzを求める2.Ux=zとなるxを求めるという手順で求められるはずです。◆解き方ここではL,Uが特別な形をしているので Lz=y, Ux=z は簡単に求められるのです。変数消去方の後半の方法で順に解いていくだけです。◆演算量いまの例を一般化して演算回数を数える話。nが大きいほどお得。同じAでいろいろなyに対するAx=yを解く場合には一度LU分解しておけば楽になりそうです。◆サンプルコードRuby によるサンプル。LU分解はまとめて一つのマトリックスに格納していますね。
2007年01月20日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/3.3.4 LU分解の計算量は?正方行列 A(nxn) をLU分解するのに加減乗除が何回必要かを数えます。徐算 n乗算 n^3/3減算 n^3/3連立一次方程式を変数消去方で解くのと同程度の計算量になります。LU分解ができれば連立一次方程式を解くのも簡単なのでお得です。3.4 LU分解の手順(1) 普通の場合m x n 行列 A = ( aij ) に対して s = min(m,n) とき分解することを考えます。本文にあるように順番に分解しておつりがなくなるまで続けるだけですね。ただし途中で0で割るとまずいです。その場合の対処は 3.8 で行います。
2007年01月19日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/3.3.1 定義与えられた行列 A に対して A を下三角行列 L と上三角行列 L との積で表すこともLU分解と呼びます。3.3.2 分解して何が嬉しい?いったんLU分解してしまえば行列式を求めたり一次方程式を解いたりすることが簡単にできるようになります。3.3.3 そもそも分解できるの?一行目の左端から順番に計算すれば芋づる的に求まります。順序さえうまくやれば良いというわけです。
2007年01月18日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/第3章 コンピュータでの計算(1)-LU分解で行こう3.1 前置き3.1.1 数値計算をあなどるな紙と鉛筆を使う数学と比べてコンピュータによる数値計算では・数値の精度は有限桁・計算量・メモリ消費量を減らしたいといった事情が出てきます。3.1.2 本書のプログラムについて単純さわかりやすさ優先なので本番向けではない。LAPACKを使うのも良い。3.2 肩ならし:加減乗算ベクトルの加減など。3.3 LU分解コンピュータによる数値計算ではLU分解が基本部品の1つとして活躍。
2007年01月17日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/第3章 コンピュータでの計算(1)-LU分解で行こう3.1 前置き3.1.1 数値計算をあなどるな紙と鉛筆を使う数学と比べてコンピュータによる数値計算では・数値の精度は有限桁・計算量・メモリ消費量を減らしたいといった事情が出てきます。3.1.2 本書のプログラムについて単純さわかりやすさ優先なので本番向けではない。LAPACKを使うのも良い。3.2 肩ならし:加減乗算ベクトルの加減など。3.3 LU分解コンピュータによる数値計算ではLU分解が基本部品の1つとして活躍。
2007年01月17日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/2.6.2 対策例-チコノフの正則化逆問題で困るケースがあることはわかりました。対策としては以下のような手法が考えられます。・変換後の食い違いを測る・値のもっともらしさを測る・食い違いと不自然さの合計値が最小になるような値を考える先の話だと食い違いしか考慮していなかったのが問題だったわけです。正の定数αを設定して||Ax-y||^2+α||x||^2が最小となるxを求めればよいわけです。これがチコノフ(Tikhonov)の正則化です。
2007年01月16日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/2.6 現実にはたちが悪い場合(特異に近い行列)2.6.1 どう困るか数学的には正則行列か特異行列かで大きく性質が変わります。ただ工学の世界だと特異に近い正則行列はほとんど特異行列のようなものです。なぜならものすごく押し縮める行列なら、その逆行列はものすごく押し広げる行列になってしまいノイズが拡大されてしまうからです。ここではピンボケ画像からボケ変換マトリックスのインバースでボケを取り除く例が挙げられています。
2007年01月15日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/2.5.3 最小自乗法解がないかあるかはわかりました。しかし現実には単一の答えが欲しいという場合も多々あります。その場合・解がないならせめてできるだけ近い値を求める・解がたくさんあるならその中で一番もっともらしい値を選ぶなどの手法をとります。この場合に長さが小さいほど近いとする基準がありこの方針で答えを求めるのが最小自乗法とよばれる手法です。道具として特異値分解や一般化逆行列という道具が活躍します。
2007年01月14日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/2.5.2 求まるところまで求める(2)実践編◆手がかりが多すぎる典型例(解なし)式を変形しても解が求まらないケースの例。◆手がかりが足りない典型例(解がいっぱい)こちらは式を変形すると好き勝手に値が複数求まるケース。この好き勝手な数は斎次方程式の一般解の格好にした際の係数になります。◆途中で行き詰まった場合これまでの例は左基本変形によって橋まで行きつけるケースでしたが途中で詰まる場合もありますので、並び替えなどしてハマリを解消します。◆途中で本当に行き詰まった場合これまでの手が使えない場合は変形させずぐっと睨んで解を得ます。◆まとめ式を適切に変形し解があるのかないのか判定します。
2007年01月13日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/2.5 たちが悪い場合の対策2.5.1 求めるところまで求める(1)理論編たちが悪いケースの場合・解が存在しない・解が無数にあるのケースがありますのでその詳細を扱います。◆解が存在するか与えられた行列Aとベクトルyに対して方程式Ax=yが解xを持つ必要十分条件はyがImAに属することImAはAにより移り得る移り先すべてということでしたからyがImAに属するということはAx=yとなるxが存在すると同じというわけですね。◆解をすべて見つけよいろいろ難しいがまとめると1.どうにか頑張って解を1つ見つける。この解x0を特解と呼ぶ2.元の方程式の右辺をoにしたAz=o(斉次方程式)のすべての解(一般解)を求める3.特解+斉次方程式の一般解で得られる
2007年01月12日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/2.4.3 正則性のまとめまとめです。Aをn次の正方行列(A=(a1,...,an))とすると以下はすべて同じことになります。・どんなn次元ベクトルyにもy=Axとなるxがちょうど1つある・Aは正則行列(逆行列A^-1が存在)・Aの写像はぺちゃんこにつぶさない・Aの写像は単写・Ax=oとなるのはx=oだけ・KerAが原点oのみ・dimKerA=0・Aの列ベクトルa1,...,anが線形独立・Aの写像は行き先の空間全体をカバーする・Aの写像は全写・ImAがn次元空間全体・rankA=dimImA=n・detA!=0・Aが固有値0を持たない・以上のAをA^Tと置き換えたもの反対で以下もすべて同じことということになります。・下手なn次元ベクトルyだとy=Axとなるxがない。うまいyならそんなxがあるけど1つじゃなくてたくさんある・Aは特異行列(逆行列A^-1が存在しない)・Aの写像はぺちゃんこにつぶす・Aの写像は単射でない・Ax=oとなるx!=0が存在・KerAが原点oのみではない・dimKerA>0・Aの列ベクトルa1,...,anが線形従属・Aの写像は全射でない・ImAがn次元空間全体にならない・rankA=dimImA<n・detA=0・Aが固有値0を持つ・以上のAをA^Tと置き換えたもの
2007年01月11日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/2.4.2 正則性と同値な条件いろいろここまでの成果物を再確認。これまで同様にAをn次の正方行列(A=(a1,...,an))とします。逆行列が存在することはAは正則であるといえました。そして以下と同値です。・Aの写像はぺちゃんこにつぶれない・Aの写像は単射・KerAが原点oのみ・dimKerA=0・Aの写像は行き先の空間全体をカバーする・Aの写像は全射・ImAがn次元空間全体・rankA=dimImA=n・a1,...,anが線形独立・Ax=oとなるのはx=oだけ・detA!=0・Aが固有値0を持たない・A^T が正則
2007年01月10日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/2.4 たちの良し悪しの判定(逆行列が存在するための条件)Y = Ax がたちのいいものか悪いものかをどうやって判定するか、ここでは A が正方であるとします。 2.4.1 「ぺちゃんこにつぶれるか」がポイントKer A が 原点 o のみのぺちゃんこにつぶれないことが大切です。正方行列の場合はつぶれなければ全単射(行き先の空間すべてをカバーする)であることも保証されます。
2007年01月09日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/2.3.7 ランクの求め方(2) 筆算で一般の行列Aについてランクを求める話。基本的には正則な行列をどんどんかけて行列を簡単にしていってひとめでランクがわかる格好にしてしまえということになります。ある[行|列]をC倍して別の[行|列]に加えある[行|列]と別の[行|列]を入れ替えるの繰り返しとなります。対角成分が 0 になってしまうときは pivoting を行いみ処理範囲から 0 でないものを持ってきます。こうして出来上がったものの1の個数がランクということになります。
2007年01月08日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/2.3.6 ランクの求め方(1)ぐっと睨んで比較的簡単な行列について目でランクを求める話。A = (a1,...,an)を m x n 行列とすると Im A を span{a1,...,an} とも書きベクトル a1,...,an の張る線形部分空間と呼びます。 span{a1,...,an} の次元こそが rank A です。{a1,...,an} が線形独立なら W = span{a1,...,an} の次元は n。そして線形従属の場合は何を数えるべきか。もし n 本のベクトルがもっと少ない r(<n) 本のベクトルをタネとしてかける場合があります。そのタネをみつければよいわけです。後は基本的に行列をにらんでタネに分割するだけです。
2007年01月07日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/2.3.5 手掛かりの実質的な個数(ランク)◆ボトルネック型の分解幅が r しかない行列 B と高さが r しかない行列 C で A=BC とやせた行列の積に分解できます。rank A = 1 の場合は縦ベクトルと横ベクトルの積で書けてしまいます。A = BC ということは y = Ax という変換の途中でz = Cx: n 次元ベクトル x を r 次元ベクトル z につぶすy = Bz: r 次元ベクトル z を m 次元ベクトル y に拡張するということで一度ぺしゃんこになるわけですから Im A は r 次元以下になります。◆実質的な手掛かりの個数ここまでの分解から rank A が実質的な手掛かりの個数になることがわかります。見た目としては4つほど手掛かりがあるように思えても実質的な手掛かりとしてはそれ以下になることもあるということです。◆転置してもランクは同じこれはここまでで示された通り。複素数まで考えても同様となります。
2007年01月06日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/2.3.5 手掛かりの実質的な個数(ランク)◆ランクと核・像と単射・全射Ker A が原点oのみか?というのは Ker A が0次元か?というのと同じことでIm A が m 次元空間全体をカバーしているか?というのは Im A が m 次元おかというのと同じことです。またランクや次元定理を使って書き直すと・rank A = n (ランクが元の空間(定義域)の次元と同じ)←→Aは単射・rank A = m(ランクが行き先の空間(値域)の次元と同じ)←→Aは全射となります。◆ランクの基本性質まず A が m x n 行列なら・rank A =< m・rank B =< nは直感的に当たり前です。また正則行列P,Qを掛けてもランクは変わりません。・rank(PA) = rank A・rank(AQ) = rank Aとなります。正則行列はぺちゃんこにつぶさない変換なので当然です。一般の行列A,Bについては・rank(BA)=<rankA・rank(BA)=<rankBとなります。なぜならrank(BA)とは元の全空間UをAで移した移り先VをさらにBで移した移り先Wの次元。だったからです。
2007年01月05日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/2.3.5 手掛かりの実質的な個数(ランク)ここまではぺちゃんこにつぶれるかどうかの話でした。ここからは移り先の空間全体をカバーできるかの方を検討。◆ランクの定義A を m x n 行列とします。つまり n 次元ベクトル x を m 次元ベクトル y = Ax に移す写像を考えます。dim Im A を行列Aの階数(rank)と呼び rank A と書きます。これを利用すると次元定理は以下のようになります。dim Ker A + rank A = n
2007年01月04日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/2.3.4 「ぺちゃんこ」を式で表す(線形独立・線形従属)ぺちゃんことは異なる x, x' が同じ y に移るようなことです。このようなとき変形マトリックスの各成分は線形従属と呼びます。そうでないときは線形独立といいます。一次従属・一次独立とか従属・独立とも呼びます。
2007年01月03日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/2.3.3 次元定理m x n 行列 A についてdim Ker A + dim Im A = n(dim X:Xの次元)n - dim Ker A = dim Im Aと書くなら元の n 次元空間から Ker A の次元数がぺちゃんこにつぶれて残ったのが Im A の次元分ということですね。
2007年01月02日
コメント(0)
プログラミングのための線形代数という本を読んでいます。http://wiki.fdiary.net/lacs/2.3.2 たちの悪さと核・像ここまでの話のポイントは2つ。・同じ結果 y が出るような原因 x は唯一か・どんな結果 y にもそれが出るような原因 x が存在するか前者が成り立つとき写像は単射、後者の場合は全単射と呼びます。KerA, ImA という概念を使うと・KerAが原点oのみの場合は写像は単射・ImAが行き先の全空間に一致する場合は写像は全射と言えます。
2007年01月01日
コメント(0)
全32件 (32件中 1-32件目)
1
![]()

