20080511~
13と7と11の倍数の論理積は13と7と11の積の倍数である。
和ァ・・・
といきなり方程式の形で出されると、この高次方程式の解の法則性はよく見えないように思えますが、 この方程式が こういう規則性のうえになり立った行列の固有値を求める特性方程式であるとわかると 得られる知識は一気に広がります。 まず、この行列のトレースは1なので、高次方程式の解の和は1になることがわかりますし 中身が全部正の実数であることから、ペロンフロベニウスの定理が活きて、ガウス平面における解の分布が右寄り横長であることもわかります。 det(デターミナントつまり行列式)も±1ということから、解を全部掛け算したものも±1であることがわかります。 行列式は、行列の大きさが偶数次だとマイナス1、奇数次だとプラス1だということもわかります。 行列式は、たとえば5次行列のペンタボナッチ数列なら、このような再帰的アルゴリズムで求めることができます。 また、ペロンフロベニウスの定理から、絶対値の一番大きな固有値は正の実数であることがわかるため、 この式のλに1や2を入れると、 解の1つが1以上2未満であることがわかるかと思います。 λ=1を代入した時 λ=2を代入した時 λが1と2のときで符号が変わっていますね。 このことから、固有値λをてさぐる範囲は、最大でも実部および虚部が-2から+2の間までであることがわかります。 それでは実際にこの多項式の零点を探してみましょう。 固有値の和も積も1あるいは±1ということは おおよそ、ガウス平面で上下左右対称気味の配置になりそうな気がしますね。 実際、以上のように、2付近の正の実数の固有値が1つあり 1付近にはなく あとは大方、複素平面上で半径1の円より少し小さい半径のところを等しく分割したような感じの配置になります。 半径1より少し小さいのは、2に漸近していく実数の固有値との兼ね合いだと思います。 多項式の次数が大きくなるにつれて、真円に近付いていくでしょうし、配置もほぼ円周上びっしりに漸近していくはずです。 が、ちょっと直感からズレるかもしれませんが、どれだけ次数が高くなっても、この固有値の和は1なんです。 どういうことかというと、正の実数1のところには解がなく、その代わりに正の実数2のところにあるからなのです。 単位円の円周すべての点を足し合わせたら打ち消しあってゼロになるはずです。 そこから、正の実数1を取り除くと、マイナス1になります。 どれだけ円周上に固有値を敷き詰めた円でも、正の実数1を取り除くとポッカリと空いてすべての和が-1になるのです。 そこに、正の実数1の代わりに正の実数2を付け足すと、-1+2で1になるのです。これがトレース=1の由来になります。 DL用Excelファイル を載せておきます。 モノボナッチ フィボナッチ トリボナッチ テトラボナッチ ペンタボナッチ ヘキサボナッチ ヘプタボナッチ オクタボナッチ ノナボナッチ デカボナッチ モノボッチ ジボナッチ テトラナッチ ノナッチ ノナボッチ ノナッチ ![]() にほんブログ村 PR
あーよかった。scilabちゃんはちゃんと複素行列の逆行列は普通に出してくれた。
ようやく、Excelより手間が省ける実感がわいてきたというか 縦ベクトルを横に並べる入れ子もうまくいった。 気を付けなきゃいけないのは、行列AのA'ってやると自動的にエルミート共役になってしまうことだね。ただの転置にしたければA.'とするらしい。(ダッシュとの間にピリオドをいれた) で、なんとかナッチ数列の行列モデルは 有向グラフのごく狭い部分集合なんだな。 いや、こじつけ以上の意味があるかどうかはわかんないけど。 非負バイナリ行列というか非負ブーリアン行列というか 有向グラフの他のバージョンには、それぞれなにかしらの数列が1対1対応してるんだろうか あ、でもあれだな、等比数列だったらもはやバイナリとかブーリアンじゃなくなるな。 等差数列だったらなんか非線形っぽいっつーかアフィン変換みたいなことになりそう
トリボナッチ以上のテトラナッチとかの数列の一般式を求めるための行列って
非負だけど対称じゃないんですよね。 そうすると、エルミート行列の性質「固有値がすべて実数」が当てはまらなくて でもペロンフロベニウスの定理は生きるんで、大きなLボナッチ数列の概算はほぼ実数の指数関数に近似するんですけど 途中計算に複素の無理数を含みながら、数列としての結果は整数っていう奇妙な状態になりましてね フィボナッチの無理数に飽き足らず複素数まで拡張するんですよwww それで、ちょっと計算させてみようと思ってscilabを立ち上げたら さすが無償!どうもエルミート行列以外の行列に対する固有値の求め方が、数値解析でもscilabちゃんはできないみたいでして^^; 結局ウルフラムアルファとExcelで対処しましたwwwwwあほかwwwww せめてガウス平面を固有値てさぐったりしてなんとかならないんですかねえ・・・まあてさぐる範囲があらかじめわかんなかったら即手詰まりな感じはありますけどね・・・? 今回はほぼ確認のためだったので、サラスの公式が使える3次の行列にとどめまして 対角化のための行列Pの逆行列も、有効数字3桁でウルフラムアルファに求めてもらいました>< だって複素数なんだもんwwwww あ、でもそうですね、Excelをscilabちゃんに取りこむ方法が見つかれば 逆行列ぐらいは出してくれますよね!そのくらいできてもらわないと困る!だって信号処理のために複素行列扱うプログラミング言語ですもんね! ウルフラムアルファの弱点は、無償バージョンではデータがコピペで移動できない点です。まーた狡猾なお手前で。^^ あれ?でも結局サラス使わなかったじゃん。今さっきウルフラムアルファに頼ったって言ったよね・・・? じゃあテトラナッチでもいけたやん。手間めっちゃかかるけど。 あ、それでな ユニタリ化できたら楽なのになーって思ってサラス使ったんでした。 でもユニタリ化失敗wwwwwウルフラム先生がユニタリ化して出してくれなかったら不可能なんだよたぶん俺たちの中ではなwwwwww よく見たら固有ベクトルがなんか、線形従属っぽいんですよ。だめだこりゃー あーアホみたいなことしたwたのしかったー でもこの場合、固有ベクトルには規則性があって たとえば3次方程式だったらa1~a3までの複素根があるとすると n番目の固有ベクトルが、以下みたいにかけるってわかったのはすごいね。 して、それを即座に見抜くウルフラムさんも化けもんですわ。 せめて今日何か残しといてよかった。 4次の特殊ユニタリSU(4)生成子の最大4つの固有値は、生成子がエルミート行列だから全部実数なんです 固有値をλとして λ^4-λ^2+p4×λ+q4=0 の、p4とq4は適した値を取りますが、常に実数解が4つ得られるんです。 そういう、最初(定義)と最後(性質)がわかってるのに、途中がよくわからない状況なんです! フェラーリの方法に出てくる √(u)が常に実数ってのはわかるんですよ。 中身はu=A+Bcosδって感じで、A>Bだから、u>0の実数なんですね。 ただ、λ=±√(u)±√(D) みたいな恰好をしていて このDがよくわからんのですよね。D>0なのは確かなんですけどねえ うまく可視化したイメージができない。 このDの中に、±√(u)が入ってるからこそ、λは非対称になりえるってのに わっかんねえんだよなぁ ってか手間かかりすぎて翌日になると意欲もごっそり忘れてるから困る そんなわけで片・両平方根方眼紙の中に円を入れてみたわけです。 悩みの種はほかにもあって 平方根方眼紙は楽なんですよ。縦横のx乗のxを0.5~1.0でなかば連続的に動かせばちゃんと機能するから。 ほかにぜひやりたいのは対数・リニア変換のニューンって動くバージョン! できるのか!? テイラー展開使おうって目論見までは定まってるんだけど 収束半径的なあたりが主な理由で、なんかこう漠然と不安がよぎる。 動いたらプランクの法則とかカルノーサイクル3Dとかをぬるぬる動かしてみたいよね。 もちろん回転もさせたいし、トリプル対数・リニア変換をぬるぬる動かすってのはぜひしたい プランクの法則はなあ 4乗法則と反比例法則があるからなー、両対数方眼紙はもってこいなのよー 3Dにしがいもあるし。 っていうか前にプロトを一度作ったこともあるんだけど、いまいち伝えられてない感があったからリベンジしたい もちろん対数・リニアのぬるぬるもそうなんだけど てっぺん同士を比較したり、積分したものをプロットしたりするところ あれをもうちょっと視覚に訴える何かがほしい もしこれからやるんなら、Excelグラフはもっぱら2Dを自作3D化だね。ワイヤーフレームになるのは仕方ない。 今後プログラミングの腕があがったら、ポリゴンとかでも表現したいな。 そこはやっぱ、プログラミング言語なんだから、かゆいところに手が届いてなんぼだよね
4次方程式「もしかしたらこの先、お前を正数域に平行移動した上で、片平方根目盛に閉じ込めることになるかもしれん」
4次方程式「ご覧のようにな!」 フェラコイル4次方程式「正数域に移動したことを感謝してもらうことはあっても恨まれる筋合いはないよ 君がもし負数域から少しでも足を洗うことができなかったら、実数ではすまなかったところだ」
a=[rand(),rand(),rand(),rand(),rand(),rand(),rand(),rand()]
a=a/norm(a) 確認のため改めてnorm(a)を計算し、1になることを確かめる。 b=a(1)+%i*a(2) c=a(4)+%i*a(5) d=a(6)+%i*a(7) x=a(3)+a(8)/sqrt(3) y=-a(3)+a(8)/sqrt(3) z=-2*a(8)/sqrt(3) A=[x,b',c';b,y,d';c,d,z] B=expm(%i*A) expにm(atrix)をつけようね~ そうです、BがSU(3)の特殊ユニタリです。 行列式det(B)≒1とでるはず。abs(det(B))やらなくても、非負実数の1だよ~。 固有値spec(B)も計算してみると 3つでてくるはずで Bがユニタリなので、3つとも複素平面の単位円周上にきますし spec(A)も出しておいて、a1,a2,a3(Aがエルミートなので全部実数)とすると spec(B)の偏角もa1,a2,a3になり a1+a2+a3=0になるはずです。(Aのトレースはゼロ) このAの特性方程式が、手計算で出したやつと一致するかを確認したいな。 まだscilabはじめたてだから変数の概念とかプロットとかもう少し勉強しないとな。 せっかく乱数出してんだし、一発屋じゃなくてサンプル数増やして傾向も見たいよね当然。 ずっとため込んでたけど、SU(3)の固有ベクトルも計算したいし SU(4)にも手を出したいし。まずは固有値の特性方程式の係数からだね λ^n-λ^(n-2)+Σ(a_(n-m)*λ^(n-m))=0 になるはずなんだ。高次SU(n)でのこのn-m番目のaが知りたいんだってば。 5次以上の行列の固有値はガロアやアーベルの理論がまだ理解できてないから無理だけど せめて4次な。これを理解したい。 Excelのあのアドインのサポートが切れてから、手間がかかるようになってしまって。 ようやく「楽な複素行列」が我々のもとに戻ってきたって感じ。 それにしても、以前友達に見せてもらったユニティだったかでも思ったけど プログラミング言語の概念が壊れるなぁ これもプログラミング環境の1つなのか・・・この中にforとかも入るんだよね? なんかこうしっくりこない ってか、早いとここの演算結果をcsvとかにぶち込む方法を理解しないとな。 特に勉強中の間はなんでもscilabでできるわけじゃないんだから Excelに分担してもらうところも多数出てくると思うんだよ グラフもどのくらい自由度があるのか未知数だし。 3Dグラフなんか特にね。結構ニッチな需要の3D用意しなきゃならないときもあるし もしあれならC#と合わせて、Excelを上回ってくれることを祈るばかりだ。まあ僕の勉強次第だろうなあ 少なくともワイヤーフレームじゃなくてポリゴンっぽいのを2面以上はほしいよね そうだ。 パウリ行列指数関数が無課金のウルフラムアルファで出ないなら せめて固有値・固有ベクトルはなんとかならないか、あとでお願いしてみよう。 ん?なんかデジャヴを感じる。 ユニタリの特性方程式を、単位円周上の実質1次元じゃなくて、実部・虚部ともに-2~+2くらいの複素平面全体でてさぐってみるのもやりたいね~
こないだね、
この展開が4乗でループするのが「3ペアの6つ」って間違えて書いちゃったんです。 正しくは以下の「4ペアの8つ」でした。 残りの6ペア12個は4乗でループしないんですね。 普段用いる右肩下がりのいわゆる「対角」とは別の、「右肩上がり」の対角 赤線で示したやつなんですけど、左と右はこの「右肩上がりの対角線」を軸に対称になっているのがわかるかと思います。 また、この8つに共通するのは、この「右肩上がりの対角」上に1つの変数しか入っていないこと 反対角行列っていう概念がすでにあるみたいなんですけど それが排他的になってるんです。これを今回「反対角XOR」と呼ぶことにしました。 それともう1つ、反対角要素以外にも たとえば一番下の1ペアを見てもらうとわかる通り、s1があるとs6はこれず s2があるとs5がこれない。ここにも排他的な感じが現れています。 これを個人的に「反転置XOR」と呼んでいます。 この「反対角XOR」と「反転置XOR」の両方の条件を満たしているものだけが、4乗でループするようです。
3次元アフィン変換Aを対角化するための行列PはP自身もアフィン変換であり
このようになる。 invP・A・Pはちゃんと対角化されるが、 これを規格化してユニタリにしようとすると、単にノルムが1になるように このようにBの規格化定数シリーズを決定したようでは、明らかにユニタリにはならないことがわかった。 そこで、グラム・シュミットの正規直交化法というのを試してみた。 すでに得ている、規格化前の固有ベクトルをv1~vnとして u1~unを求めることでユニタリになるように仕向ける方法だ。 なんだか全微分を思い出す。 u1~unは以下のように求める。 ここで、u・vは(n次元での)内積を意味しており、|u|^2=u・u(自分自身との内積)を意味している。 そうやってできた固有ベクトルu1~unの、ノルムを1にするようにして満を持してここで素直に規格化(vシリーズではなくuシリーズで)すると、ようやくユニタリ行列ができあがる。 正直、イメージ図のgifを見ても何をやっているのかさっぱりわからないが、とにかくユニタリ化できたことはわかった。逆行列が転置行列そのものになっている。もちろん行列式は1。 しかも、中身が全部実数でできたユニタリ行列だ。 しかしながら、これを改めてPとしてinvP・A・Pを求めても、対角化できない。なぜだ!? と思ったが、グラムシュミットの方法のページには、「対角化できる」とは書いていないのだ。 代わりに「三角行列ができる」とだけ書いてある。 確かに演算結果は三角行列にはなっている。 そもそもグラムシュミットについて知ったのは知恵袋的なところからであり、 「ユニタリにしたいなら規格化だけではだめで、グラムシュミットが必要だよ」という口コミがソースだった。こちらも、「ユニタリにできる」とは書いているが、「対角化」には触れていなかった。 このユニタリは一体なんのために生まれて何をして喜ぶのだろうか・・・? この生成されたユニタリPは、何らかの行列を対角化できる相手の行列本妻Aが存在するのだろうか? ======== ところで、 ふとこれを複素行列に拡張したくなった。当然の発想ではある。 すると、「複素内積」という概念が出てきて、これについて複素数は交換法則が効かないらしい。 言われてみれば、u=a+ibとおくと、|u|^2=(a+ib)(a-ib) といった風に、自身とその複素共役を掛け算することでノルムを得ている。 自分自身との複素共役だったから、たまたま、掛け算が逆になっても結果は変わらなかった。 ところが これを、u自身とではなく、ほかの複素数v=c+idとの複素内積を行うのだとしたら u・v=(a+ib)(c-id) となって v・u=(c+id)(a-ib) とは結果が異なってしまう。 どうして僕は今の今までこのような内容を全然知らされていなかったのか。 おそらく、僕の住んでいた分野ではグラムシュミットの必要性がなかったのだろう。 量子力学にしても、ジョルダン標準形があんまり必要なさそうな分野だ。グラムシュミットが必然的に不要気味でもおかしくはない。 それに、複素行列になってようやく、複素数そのものの交換法則が揺らぎ始めたのも おそらくそれまでは複素数uが孤独だったからだと考えられるのではないか。 行列の中に入って初めて、ほかの隣人複素数との内積をとるようになって、交換法則に乱れが生じるようになったのかもしれない。 あくまで複素数の問題であって行列の問題だけではないことに注意が必要だと思う。 思えば、複素数が、四則演算で交換法則を保っていたことのほうが不思議にさえ思えてくる。 また、ここでも分野と人類による対称性の自発的破れが起きており u・vを u・v=uv*=(a+ib)(c-id) と定義する分野があったり、 u・v=u*v=(a-ib)(c+id) と定義する分野があったりするらしい。 (複素数uの複素共役をu*と表現している。掛け算の記号ではない) こいつに対してはたまたまAP=PJが有効だったが こいつに対してはあまり有効じゃないので、固有ベクトルを求める際は 適宜、AP=PJとPA=JPを使い分けるのもアリかもしれない。 人間が選んだ対称性の自発的破れ的な部分は、上述の部分や量子力学における「iをかけるか-iをかけるか」などと同様に ジョルダン標準形の上三角 例 と下三角というのもあるだろう。 どちらもJのべき乗で同じように機能したのでおそらく両方使えるが人類がどちらかを選んだのだろう。 もし下三角ジョルダン細胞を使うとして、どのような用途に使われるのかまだいまいちわからないが もしかしたら、「AP=PJが上三角で、PA=JPが下三角」なのかもしれないし 上下三角と「AP=PJ、PA=JP」は独立で、「上三角AP=PJ」「上三角PA=JP」「下三角AP=PJ」「下三角PA=JP」の4パターンが存在するのかもしれない ======== ところで、最近少しずつプログラミングの世界に、「あくまで趣味として」戻ろうとリハビリ中なんだけど 行列はポインタを習得しかかってるのであと一歩でパッケージにできるかもしれないとして その前に複素数構造体はだいたいわかった。 もし、やろうと思えば今の段階でも「クォータニオン構造体と愉快なライブラリたち」は作れるかもしれない ただ、単位クォータニオンをどのように定義するかにもよる。 3つの虚数単位i,j,kを中身ナシの素粒子のように定義するのであれば ii=jj=kk=-1と、ij=-ji=k、jk=-kj=i、ki=-ik=jのルールを埋め込めばその手間だけですむが i,j,kをパウリ行列で-iσx、-iσy、-iσzと置くのであればまだまだ不可能だ。 しかし余計なルールは定義しなくて済む。 ただ、クォータニオンの使い道次第では、 たとえば回転にしか用いないとかであれば、ライブラリはものすごく少ないもので済むかもしれず、掛け算や絶対値、複素共役などがあって、もしかしたら加減算すらいらないかもしれない あと、クォータニオンには直接関係なさそうなんだが たとえば同類項をまとめる解析計算用のプログラム(文字列操作)なんてのもあると便利だろうな i,j,kを虚数単位以外に勝手に使わない約束の上で、ijが出てきたら自動的にkに置き換えたり、jiだったら逆に-kに置き換えたり、数字は前に出したうえで全部計算できるものはするとか、その次にルートみたいな文字と数字の間のものを配置するとか そういうのが作れれば、たとえば4次のユニタリ生成子とかの解析で役に立ちそうな気がしないでもない。 まあ個人的に文字列操作よりも数値の方を積極的に扱いたいんだけども。 行列でやっかいなのは余因子展開だよな~ たとえば3次行列の逆行列を求めるとしたら、2次行列を3×3=9個つくらんきゃいかんのでそこを3次元配列にするか4次元配列にするか悩ましいし 3次行列限定だとしても仮の変数とかもたくさん作りそうだし、行列式計算するのに再帰使うかもしれないし、サラスで済ますかもしれないし、3次まで落ち着いたらLU分解からサラスに切り替えるかどうかも悩ましいところだし 素人には任意次の行列なんてもってのほかだし mallocなんてメモリリークが怖くてまだまだできないし 考え物だよなぁ あとはあれか。 行列指数関数はほしいよな。概念に反して意外と作りやすいと思う 今bccの環境でやってんだけど、たぶん趣味の世界だからgccに進出はしなくていいような気がする CUIのコマンドプロンプト使ったってbccのままでグラフィックとか関数プロットとかできるみたいなこと書いてたし聞いてたから、それでいいんじゃないかな (あと僕C語以上に英語がだめなんよ。アセンブラでもA語でもないわ) こないだ、懐かしの「大文字小文字変換プログラム」を作ってみたんだけど めっちゃ簡素化しようとした矢先 なんかこいつ signbitもcopysignも存在しないとかいいやがるんだよな math.hの上書きだけで足りるのか足りないのかわかんないから何も対策してないけど。 ifで分岐するのが邪魔に見えて、あと一歩でめっちゃ短いコードになると思ったのにな。 (めっちゃ見づらいコードだろうけどな) 普通に'a'-'A'って引き算が成立しててワロタwガチであいつら数値だったのかwww で、何を血迷ったか、ポインタの学習だと思って「大文字小文字変換」を組み始める俺な それポインタ関係ねーよ
複素行列に関しての注意点はほとんどないと思います。
実数行列の実数の部分が複素数になるだけで、そんなに注意はいりません、たぶん。 ただ、多少の注意点を挙げるとするなら 対角化する際のブラとケットを規格化して、エルミート行列にするときの場合でしょうか。 たとえばパウリ行列の1つにこのような行列があります。 この行列をAとおいて、Aの固有値λを求めるとλ=±1となり λ=1を代入して得られた、規格化されてない固有ベクトルは、大多数の人はこのように算出すると思います。 さて、これを規格化する場合はどのような演算を行えばよいでしょうか。 上の1と下のiをそのまま2乗して足して、ルートを取ったものを分母にすればいいのでしょうか しかし、それでは分母がゼロになってしまいます。 そのような理由からではないのですが、この演算方法は間違いで ただの2乗ではなく、複素数の絶対値の2乗を行わなくてはなりません。 上の1は実数なのでそのまま2乗していいのですが 下のiは絶対値の2乗なので、|i|^2=1となります。iの複素共役-iと掛け算してi×(-i)=1と考えてもいいです。 つまり、規格化係数は1/√(1^2+1^2)=1/√2となるわけです。 固有値λ=-1の場合の固有ベクトルの規格化も各自やってみてください。 そうして出来上がったユニタリ行列Pは、実数行列のときと変わらず、縦ベクトルを横に並べて 以下のようになっているはずで これのエルミート共役(転置して複素共役)を取った これが、ちゃんとPの逆行列として機能していることを確認しておいてください。 場合によっては、符号やらなんやらを逆転しないとちゃんと逆行列として機能しなかったり そもそも行列式の絶対値が1になるという、ユニタリ行列としての機能をみたさないまま中途半端に規格化されていることもありえますのでね。 また、ブラかケットの中の数が純虚数や実数ではない任意の複素数の場合もあり得ると思いますので 絶対値は正しく取りましょう。 実部と虚部の2乗和のルートです。 あ、そうだ。 目的の行列自体は実数行列なのに、固有値が複素数のせいで、 固有ベクトルが複素行列になっちまったどーしてくれてんだ!って場合もあるかと思います |
カレンダー
カテゴリー
最新CM
[12/30 buy steroids credit card]
[09/26 Rositawok]
[03/24 hydraTep]
[03/18 Thomaniveigo]
[03/17 Robertaverm]
最新記事
(01/01)
(03/19)
(03/18)
(03/18)
(02/23)
(02/14)
(02/12)
(01/03)
(09/23)
(09/23)
(02/11)
(05/30)
(05/28)
(05/28)
(05/27)
最新TB
プロフィール
HN:
量子きのこ
年齢:
44
HP:
性別:
男性
誕生日:
1981/04/04
職業:
WinDOS.N臣T
趣味:
妄想・計算・測定・アニメ
自己紹介:
日記タイトルの頭についてるアルファベットは日記の番号です
26進数を右から読みます 例:H→7番目、XP→15(P)×26+23(X)=413番目。 A=0とする仕様につき一番右の桁はAにできませんのでご了承くださいズコー
ブログ内検索
アーカイブ
最古記事
(05/11)
(05/11)
(05/13)
(05/13)
(05/13)
(05/13)
(05/13)
(05/13)
(05/14)
(05/14)
(05/14)
(05/14)
(05/16)
(05/16)
(05/16)
アクセス解析
|