合宿初日!☆
【日記】3/10 木曜日
どうも。
今日はおそらくだいぶ暗い話になりますが、ご了承ください(笑)
ずいぶん前に僕は厚切りジェイソンさんの本(下の本)を読み、その結果、今までの自分とは比べ物にならないくらいのポジティブさを得ました。
しかし、最近はそのポジティブさを欠いているのです(⌒-⌒; )
僕はバイトをしていて、今日も些細なことで済みましたがミスをしてしまいました。今日「も」と言いましたが、ここ最近でミスをすることが増えてしまっています。
上司に注意を受けるのですが、その指導が的確すぎるが故に「ありがたい」と思う反面、自分で自分を責めてしまっています。
そんな中、ふと思いました。
「ありがたい」と思えること、これはポジティブなことで「未来」の自分や事柄に気持ちが向かっている。逆に自分で自分を責めていること、これはネガティブなことで「今」の自分や事柄に気持ちが向かっている。そしたら、「今」迎えている事柄に対し執着していることはネガティブなことなんじゃないか…と。
昨日の記事でも書きましたが、周りの友達の「現在」の環境や行動を気にしすぎている傾向が最近になって顕著に出てきているので、考えすぎなんだと思います。
ましてや、勉強も結構継続してやっていたり、長い間悩んだりしていたことがここにきて害として表に出てきたので、何か変えなくては…
少しでもいいから何も考えなくていい時間が欲しいなと思う今日この頃です。。。
今日は眠くなってきたのでこの辺で。
【日記】3/9 水曜日
どうも。
今日はPythonのことではなく、極々平凡な日記を書きたいと思います( ̄▽ ̄)
最近は周りの友人が研究室のゼミに参加していたり、課題をもらってたり、合宿に参加してたり…と、こんな感じでみんなは着々と研究室生活をスタートしていたりするのに対し、自分は3月下旬にある勉強会までは特に何もなく、周りと差がついてしまうという焦りが生じています。
何もしないのが嫌だから、自分の行きたい研究室を決めるまではほぼ興味がなかった無線通信に関する学問の基礎だったり最近の無線通信(主に移動通信ですかね)のことについても調べたりして勉強したり、「研究室に向けて」って感じでゴリゴリ勉強するのも精神的にあまり良くないので、せっかく勉強するなら変わった方法で取り組み、別の事も同時に勉強できれば面白いのでは?と思い、Pythonを用いてシミュレーションのプログラムを書いてみるという1つの目標が生まれました。
こんなに不安になっていても仕方ないのですが、なかなかそうもいかない…
そんな時はこの画像を見て落ち着いています(笑)
ものすごく前向きになれそうな言葉です。
何かすごく真面目?というかネガティブ?な感じになってしまいましたね(笑)
最後に大学の友達と飲み会をやった際に食べたおにぎりとビール🍺の写真を載せます(笑)
Pythonで数値解析〜確率や乱数に関するものに触ってみた〜
どうも。
今日は昨日話した通り、確率や乱数に関するものに触れてみようと思い、いろいろやってました。
それでは早速紹介したいと思います( ^ω^ )
Q. そもそも関数や乱数を扱うときはどのライブラリを使うの?
ここでは今までこのブログでも紹介した(主に数値解析のための環境導入の部分だけど…)scipyとnumpyを用います。scipyをインポートするだけではダメで、今回はscipy.statsモジュールを用います。このモジュールではある分布に従った確率密度関数を用いることが可能になります。また、ある分布に従った乱数を生成する際はnumpy.randomを用います。それでは正規分布に従うものを例にやってみましょう。
$python #今回はsympyを用いなかったため2系を用いました >>>from pylab import * #scipy, numpyを用いるのを楽にするための操作、プロットも可能に。 >>>from scipy import stats #確率密度関数を扱うための操作。 >>>a = np.random.normal(size=10000) #1万個の正規分布に従う乱数を生成 >>>bins = linspace(-5, 5, 100) #-5から5までの範囲を100分割して値を順に要素とした配列としてbinsを定義 >>>histogram, bins = histogram(a, bins=bins, normed=True) #生成した乱数に関するヒストグラムを生成 >>>bins = 0.5 * (bins[1:] + bins[:-1]) #100分割したそれぞれの中点を順に要素とした配列にbinsの中身を変更 >>>b = stats.norm.pdf(bins) #正規分布に従った確率密度関数の値を要素とした配列としてbを定義 >>>plot(bins, histogram) #ヒストグラムを図示 >>>plot(bins, b) #確率密度関数を図示 >>>show() #グラフを表示
実際に得られたグラフが次の画像の1枚目になります。
2枚目の画像については次の参考ページのサンプルプログラムを実際に動かしてみて得られたグラフになります。
【参考ページ】 → 1.5. Scipy: 高水準の科学技術計算 — Scipy lecture notes
参考ページのサンプルプログラムでは区間を30分割しているのに対し、今回の例では100分割することにしました。どういった違いが生じるか興味本位でやってみたのですが、あんまり区間を分けすぎると精度が逆に落ちてしまうんですね(⌒-⌒; )
もっと生成する乱数の個数を増やせば改善されそうですが処理時間などを考慮して検証はしないことにします…笑
ここで注意して欲しいのですが、仕様なのか詳しく見てないのでわかりませんが、binsは別の名前にせずbinsで進めていかないとどうやらダメみたいです。気持ち悪くてbinsとしていた部分を別の名前に変えたところエラーが出てしまったので(^◇^;)
他にもいろんな分布に従ったものを扱えます。以下の参考ページを見てみてください( ´ ▽ ` )
【乱数生成】 → Random sampling (numpy.random) — NumPy v1.10 Manual
【確率密度関数】 → Statistical functions (scipy.stats) — SciPy v0.17.0 Reference Guide
今回、乱数や確率密度関数もPythonですぐに扱えることがわかったので、今までブログで紹介した内容を集約させれば無線通信に関するシミュレーションを行うためのプログラムをPythonで書ける希望が出てきました!
今後はPythonに関する内容でのブログ更新のペースは落ちると思いますが、もしPythonでシミュレーションを行うプログラムを書けた時にはブログで紹介したいと思います( ̄▽ ̄)
それでは、今日はこの辺で。
Pythonで数値解析〜行列に関するものを触ってみた(続)〜
どうも。
今日は昨日に引き続き行列計算に関することをsympyを用いていろいろ試してみたことを書きたいと思います!
昨日は要素が実数のみで構成される行列を例にsympyを利用していたが、今回は要素を複素数(実数も含む)で構成される行列を例に扱えるかどうか検討してみました。
それでは早速…
Q. そもそも複素数を要素とする行列は定義できる?
Pythonではそもそも複素数を扱える(僕は勉強仕立てで普通に知らなかったのですが…笑)ので、当然使えるはず!
ってことで、次のようにして要素に複素数を含む行列の生成を試みました。
#python3 >>>from sympy import * >>>M = Matrix([[2, 1+1j],[1-1j, 2]]) >>>M [ 2, 1.0 + 1.0*I], [1.0 - 1.0*I, 2]])
ここでのjは元々Pythonで複素数を扱うときに用いる虚数を表すもので、sympyでは虚数としてIを用いられるので表示したときにIに変わっているのはそのためだと思われます。
もちろん、Iを用いてでも同様に要素に複素数を含む行列を生成できます。
>>>M = Matrix([[2, 1+I],[1-I, 2]]) >>>M Matrix([ [ 2, 1 + I], [1 - I, 2]])
これで簡単に解決しました( ´ ▽ ` )
Q. エルミート転置は使えるの?
これは昨日紹介した参考ページではエルミート転置ができるかどうかわからなかったので今回試してみようと思いました。しかし、どうすればできるのか?そもそも転置のやり方は?普通に転置の操作ができればできるだろう…と思ったので、まず転置のやり方を調べました。すると、転置は次のようにすると行えました。
>>>N= Matrix([[1, 2],[3, 1]]) >>>N.T [1, 3], [2, 1]])
転置は英語でTransposeでその頭文字Tを取ってるのでは…?そしたら、エルミート転置はHermitian Transposeと英語で表されるのでHとすれば使えるのでは…?思い立ったらすぐ実行!今までの例で使用した行列Mとは別の行列Lに対して行ってみました。
>>>L = Matrix([[1, 1+I],[2-I, 2]]) >>>L Matrix([ [ 1, 1 + I], [2 - I, 2]]) >>>L.H Matrix([ [ 1, 2 + I], [1 - I, 2]]) >>>L.T Matrix([ [ 1, 2 - I], [1 + I, 2]])
以上から、エルミート転置させたい行列に.Hを付ける事でエルミート転置できる事がわかる。比較のために.Tで転置させたものも載せました。いやー、すごいですね〜。Pythonのライブラリの中身が充実している事が実感できます( ^ω^ )
これで複素数を含んだ行列も容易に扱える事がわかったので、無線通信(主にMIMOかな?)のシミュレーションに使える可能性がグッと高まりました!今後の目標としては確率など乱数生成などもPythonのライブラリを用いることで容易に行うことができるのか検証してみたいと思います。
もし、何かわかればブログに書きたいと思います。容易にシミュレーションのためのプログラムを作成することも現実味が出てきたので頑張ります( ^ω^ )
春休み中にできれば…(´・_・`)
それでは、また。
Pythonで数値解析〜行列に関するものに触ってみた〜
どうも。
昨日は部活の疲れからか、ほとんど勉強できずに寝落ちしてしまったのでブログを書くことができませんでした(⌒-⌒; )
なので、今日はsympyで可能となる(というより便利になる?)行列演算に関する関数を少しいじってみました!
参考にしたwebページはこちらになるので是非参考にしてみてください!
こちら → Matrices — SymPy 0.7.6.1 documentation
※このページは英語なので英語が苦手な人は用心してください(笑)
さて、いろいろ参考ページなどを読んでいくと結構便利なものが多そうでした。例えば、行列の中の行ベクトルや列ベクトルを消してみたり、逆に追加してみたりできる関数もありますし、単純に行列の積を求めたり行列の累乗を求めたりするのも可能です(しかも、-1乗とすると(元の行列が正則ならば)逆行列を求めてくれます)。そんな様々な関数の中で僕が気に入った(すごいなと思った)関数をいくつか例を挙げながら紹介したいと思います( ̄▽ ̄)
今回は次の行列を例に取り扱います。
・行列式を求める関数det()
この関数は与えた行列の行列式を返してくれる関数です。
早速、例の行列を使って試してみました。
$python3 >>>from sympy import * >>>M = Matrix([[0,-1,-2],[2,3,2],[1,1,3]]) >>>M.det() 6
これは計算してみるときちんと答えが6になります。
・行列を行基本変形する関数rref()
この関数は与えた行列を行基本変形して階段行列を求めてくれる関数です。それでは、先ほどの続きをしているとして例を書いていきます。
>>>M.rref() (Matrix([ [1, 0, 0], [0, 1, 0], [0, 0, 1]]), [0, 1, 2])
この行基本変形した後の行列の側に書いてある[0, 1, 2]に関しては元の行列(N×N行列としときます)の列を0〜N-1(行列の1列目〜N列目に対応)と、左側から順に割り当てたうち、0番目、1番目、2番目(つまり、1〜3列目)が階段行列の階段の段差の位置となることを指している。
・行列の固有値を求めてくれる関数eigenvals()
この関数は与えた行列の固有値を重複度と共に求めてくれる関数です。
>>>M.eigenvals() {1: 1, 2: 1, 3: 1}
出力の中で{x:y, … }とあれば、xが固有値を、yが固有値の重複度を表している。
・行列の固有ベクトルを求めてくれる関数eigenvects()
この関数は与えた行列の固有ベクトルを固有値と共に求めてくれる関数です。
>>>M.eigenvects() [(1, 1, [Matrix([ [-1], [ 1], [ 0]])]), (2, 1, [Matrix([ [-1], [ 0], [ 1]])]), (3, 1, [Matrix([ [-1], [ 1], [ 1]])])]
出力は[(x,y,[Matrix{[…と表されるが、xは固有値を、yはそのx(つまり固有値)に対応する固有ベクトルの個数を、以下のMatrixの部分が固有ベクトルを表している。
・行列を対角化する際に用いる行列を求めてくれる関数diagonalize()
この関数は与えた行列Mが正則であればを満たすような正則行列Pと対角行列Dを求めてくれる関数です。
>>>P, D = M.diagonalize() >>>P #正則行列 Matrix([ [-1, -1, -1], [ 1, 0, 1], [ 0, 1, 1]]) >>>D #対角行列 Matrix([ [1, 0, 0], [0, 2, 0], [0, 0, 3]])
必ず、正則行列→対角行列の順番で表示or代入されるので、そこは忘れない方がいいと思います。
以上、少しではありますが関数を扱って実際に行列に対する操作をしてみました。手計算じゃ絶対に嫌な部分をいろいろとサポートしていて、かつ、分かりやすい、使いやすい、簡単!
これはかなり便利でしょう!線形代数の演習の解答を確認するためにPythonを用いるのは結構アリじゃないかな?と思ってます(笑)
たくさんいじってませんが、きっと固有値に関しては固有値が複素数になった場合も対応してるんじゃないかと思ってます。しかし、行列の要素は実数だけでなく複素数にも対応しているのか少し疑問に思っています。
今日は長々と書いてしまい、やる気が起きないので明日など時間があるときに試してみたいと思います( ̄ー ̄)
それでは、また。
【日記】富士急ハイランドへ行ってきた!
どうも。
今日は勉強から少し離れて気分転換をしてきました( ^ω^ )
場所は…富士急ハイランド!(タイトルでバラしてますけどね笑)
絶叫大好きな人と2人で行ってきました。
あんまりここで感想をめちゃくちゃ言うと色々問題があるので簡単に回った場所とちょっとした感想を書きたいと思います(笑)
今回は学生は通常よりも安くフリーパスが買えるということでそれを利用しました。
詳しくはこちらを参考にしてください
平日だから多少は回れるだろうと思っていたが、とんでもない。最終的には3ヶ所しか回れな位という結果に(笑)
卒業シーズンの平日を舐めきっていました(⌒-⌒; )
それはさて置き、いよいよ感想を。
・FUJIYAMA [詳細] → FUJIYAMA | アトラクション | 富士急ハイランド
実は僕は今日、初めて絶叫系に挑み、初めての絶叫系のものがこのFUJIYAMAでした(笑)
しかも、(たぶん)軽度の高所恐怖症でもあったので不安なまま挑みましたが、前からあるアトラクションだからなのか微妙に不安が拭えず、個人的にはスリリングなものだと感じました。何せ初めてのものなので想像以上のスピードとコースから吹き飛んでしまうんじゃないかっていう感覚が新鮮で驚きました!
是非とも僕の意見とか関係なしに乗って体験して頂ければと思います。
・絶凶・戦慄迷宮 [詳細] → 絶凶・戦慄迷宮 | アトラクション | 富士急ハイランド
僕は今回、初めてお化け屋敷も体感しました(笑)やはり、いきなりこれに行くのはどうなんだろう?と不安でした。しかし、いろんなレビューを見た感じとは少し違っていて割とスラスラ行けた気がします(ただ、これはものすごく個人差があるとも思います)。あんまり言うとネタバレになるのでこれ以上は言えませんが、ホラー好きやお化け屋敷好きにはたまらないものだと思うので足を運んでみては?
・高飛車 [詳細] → 高飛車 | アトラクション | 富士急ハイランド
そして、今日のラストを飾ったのがこの高飛車。詳細を見て頂ければわかりますが、かなりえげつない構造になってました(笑)
FUJIYAMAに乗ったせいなのか絶叫系に対する恐怖心が芽生えてて乗るまでは不安しかありませんでした(笑)しかし、いざ乗ると最初は怖かったですが、途中からあまりに感覚が凄すぎて楽しく感じました。「こんな感じで絶叫好きは絶叫好きになったんだな」と思うようなアトラクションでした( ´ ▽ ` )
ここからは番外編!
・電車(富士急行) から見えた富士山 → 綺麗という一言しか浮かばないほど綺麗だった。。。
・昼ご飯(モスバーガーのフジヤマバーガー) → かなり大きかったが、味はもちろん文句なしに美味しい!是非とも皆さんも訪れた際に食べてみては?
・夕方以降に撮った富士急ハイランドのいろいろなもの
1. 入口(富士急ハイランド駅側ではない)
2. ライトアップされたアトラクション
3. 夜の観覧車
いずれも凄く綺麗でした。。。😩😩😩文字
夕飯も大月駅周辺にある店で、ほうとうや信玄餅風のアイスを食べました。写真は顔が写ってたりするのでここでは載せませんがすごく美味しかったです。この行ったお店はぶどう酒を90分飲み放題で980円というお手頃メニューがあり、かつ、すごく美味しそうなお酒だったので普通に飲みに行きたいと思います(笑)
それでは今日はこの辺で。