2012-01-01から1年間の記事一覧

(x-a)(x-b)の平方完成の公式

レポート書いていたら見つけたのでメモ。 (x-a)(x-b)の平方完成だが、これは という風にできる。和と差で書けるということで割りと覚えやすいと思う。aとbが複雑な文字式で展開してそれを平方完成する必要に迫られた時とかに有効。普通の平方完成をする必要…

暗黙の型変換を禁止するテンプレートクラス

暗黙の型変換はときおり悩まされる。しかも、コンパイラは警告すら出さない。 先日複数の引数がある関数をつくり、それでint型とbool型を受け取っていた。この場合型が異なるし独自の型を導入しなくてもいいだろうとか思っていたのが間違いだった。int型の変…

二成分系の相図[連続固溶体が平衡結晶する場合]

授業でやったのでまとめとして書いておきます。まずは例として連続固溶体から。連続的固溶体というのは連続的にある成分が置き換わっていく固溶体のことです。例として曹長石(albite)と灰長石(anorthite)の固溶体、つまり斜長石(plagioclases)について考えま…

地球惑星科学シリーズ読書会を行いました

ESSの人たち(学科の展示をするグループ?)で読書会を企画してしてきました。 課題図書は地球惑星科学シリーズの地殻の進化です。 まずはわたしの発表。内容としては主に海底地形です。詳しくは活動的縁辺域、受動的縁辺域、マリアナ型の海溝、チリ型の海溝に…

ガウスの発散定理の直感的証明

地球物理学の授業で証明をしたのだが、式に頼っている感じでどうも納得がいかなかった。数学的に厳密というわけではないし、直感的というわけでもない。そこでもうちょっと直感的に導くやり方を書いておく。 ガウスの発散定理というのは というやつだ。これ…

参考文献情報をLead2Amazonで手軽に入手

参考文献情報を入れるときはどうしているだろうか?論文ならCiNiiやScopus等論文を検索できるところはBibTeXを出力してくれるが、論文を引用するまでもないちょっとしたレポートのこともあるだろう。そんなときBibTeXを手打ちでもいいのだがだるい。 そこで使…

ローラン展開を計算するときに...

f(x)//(z-a)^kのような関数(ただしf(x)は正則)をaのまわりでローラン展開するとき1/(z-a)^kという項はくくりだしてf(x)だけをテイラー展開するということをしばしば行うがなんでそんなことができるのか今まで謎だった。がさっきわかったので書いておく。結論…

オブジェクトからテンプレートパラメータを取り出す

テンプレートクラスのインスタンスからテンプレートパラメータを取り出したいということが思う。そんなとき以下のようにすると取り出せる。 template<typename T,template<typename>class Target> T getType(Target<T>); template<typename T> class Hoge{}; int main(){ Hoge<int> hoge; decltype(getType(hoge</int></typename></t></typename>…

VS2010でテンプレートクラスの初期化子リストでメンバにラムダ式をわたす時の問題

結論から言うとコンパイルできなかった。問題のソースは以下。 class Hoge{ public: template<class T> Hoge(T func){func();} }; template<typename T> class Foo{ public: Foo(): hoge([](){return true;}) {} private: Hoge hoge; }; int main(){ return 0; } なぜだろうと思っ</typename></class>…

HSPのwaitとawaitの違い

waitとawaitなにが違うのという話をTLで見かけたので書いてみる。 ようするにwaitは常に指定秒数待つ、awaitは前のwaitから指定秒数待つということなのだが。 そうはいってもわかりにくいと思うのでまずはとりあえず検証プログラム。awaitとwaitを取り替えた…

std::unordered_mapやstd::mapの比較用のファンクタとしてラムダ式を渡す

やろうとして意外に面倒だった。が、だれも書いていないみたいなので書いておく。より面倒なのはstd::unordered_mapのほうなのでこちらについて主に書く。面倒なのは基本的にテンプレート引数としてファンクタを渡す仕様になっているということ。ラムダ式は…

「第2回 闇鍋プログラミング勉強会」に参加して発表してきました

ということで闇鍋プログラミング勉強会に参加させていただきました。 そして「関数型言語初心者がHaskellに挑戦してみた」という題でLTもさせていだたきました。いやー緊張しました。まずは全体の感想から。 闇鍋は名前のとおり色々な分野・興味の人が集まっ…

Pythonのデコレータとは何者か?

最近やっとPythonのデコレータがわかってきたのでなぜわからなかったのか、そして結局どういうものなのか書いておく。Pythonのデコレータのわかりにくい理由はまず挙げられているサンプルがよくないのだと思う。 def hoge(func): print "hoge" @hoge def bar…

バームクーヘン積分の導出

高校数学で回転体の積分のところで出てきますね。 おいしそうな名前の積分計算のテクニックです。今回はその導出をしてみようかと。 イメージとしてはバームクーヘンのように薄い円柱をくりぬいた層の あつまりとして図形を見るというような感じです。 まず…

HaskellでBrainf*ckを実装してみた

とりあえず、すごいH本がIO処理のところまでいったので 練習としてbrainf*ckの処理系作ってみました。 ソースコードはこちら→https://github.com/ikaro1192/brainfuck 括弧の処理とか一部の挙動が怪しいですが、なんとかうごきます。基本的にはイテレータが…

本格的にHaskellをはじめてみました

そういや積み本になっていた「すごいHaskell楽しく学ぼう!」、通称すごいH本。これは消化せねばとか思いつつなにもないとどうせやらないので「初心者がHaskellに挑戦してみた」的なのでLTやるって宣言してしまえばとか思い立ち、闇鍋勉強会(http://atnd.org/…

茨城へ旅行に行ってきました

1泊2日で茨城へつららソフトのメンバと旅行しに行ってきました。・一日目 地元の駅で集合。ところが二名来ない。寝坊か?しかたなくおいていくことに...最初は那珂湊層群を見に行きます。 地元の駅から勝田までいって、そこからひたちなか海浜鉄道湊線に乗り…

クラス内にあるtypedefが存在するか調べる

あるクラスにあるtypedefが存在するか否かを調べる方法はないかな? とか悩んでいてTwitterでつぶやいたらフォロワーさんがそれSFINAEでできるよと教えてくれた。SFINAEとは「Substitution Failure Is Not An Error」のことで「置き換えの失敗はエラーになら…

Fortranをはじめてみました

大学でそのうち使う(一応本業は地球物理やってる)よなーとか思いつつFortranを勉強してみることに。コンパイラはgcc系のやつです。本当は最新のFortran使いたかったのですが、学校ではFortran77らしく(過去の遺産の問題でしょうか?...)そっちを勉強すること…

当たり判定の数学(1)~動く矩形~

プログラミングをしているとこの手の当たり判定はよく出会います。 これは単純な矩形どうしの当たり判定でしてもいいのですが、 速度によっては、単純な矩形の当たり判定ではすり抜けるという現象が発生します。それを防ごうという試み。そこであたっている…

対角化可能な行列の0乗

実数(複素数でも良いですけど)の0乗は1になります。では対角化可能な行列ではどうなのか?単位行列になるのでしょうか?ふと思いつき証明してみることにしました。 ある行列Aを対角化することを考えます。Aは条件より対角化可能なので適当な行列Pを用いて とB…

Haskellでエラトステネスの篩

先日Pythonで実装してみました。Haskellでもできたので書いておきます。 getPrimeList [] = [] getPrimeList (x:xs) = x : getPrimeList [y|y<-xs,mod y x /= 0] getPrimeListN n = getPrimeList [2..n] すごく短いですね。さすがHaskellです。まずgetPrimeL…

三角関数との積の積分のテクニック

最近数学の話題が多いですね。プログラミングを期待している人(いるのか?)ごめんなさい。 微分方程式の解き方で演算子法のとこで出てきました。この三角関数との積の形の積分を簡略化する方法自体はそこだけではなくいろいろなところで使えるなとか思ったの…

畳み込み積分のフーリエ変換(メモ)

くだらないところでつまずいていた。が、もしかしたら他にもつまずく人がいるかもしれないと思いメモしておく。 畳み込み積分とは で定義される積分だ。このとき となる。これの証明をしめす。 ここまではいいと思う。ここで の部分を考えよう。数学的なこと…

地磁気双極子の地軸からのずれをもとめてみる

地磁気双極子(地球の中心に棒磁石があると仮定した場合の棒磁石にあたるもの)は地軸(地球の回転軸)から若干ずれています。今回はそれからどれだけずれているのかを求めてみようという記事。といっても完全に理論値から求められるわけではなくIGRF(国際標準地…

Pythonで関数型言語っぽくエラトステネスの篩

最近関数型言語始めようと「すごいH本」買ってHaskellはじめました。が、いかんせん文法なれない...そこで概念を理解しているというか多少は慣れてるPythonでいろいろ実装してみてます。その第一弾。エラトステネスの篩。なぜこれか?実はサークルのC++講座…

gvimで:sh で開くシェルを変える

普段僕はWindows上でgvimを使っているわけですが、シェルはcygwin起動してほしい...とか考えて調べてみたら案の定ありました。 set shell=c:\cygwin/bin/mintty.exeみたいに.vimrcでshellで指定してあげれば良いみたいですね。これで開発がはかどる。

サークルでポインタを教えてきた

僕の所属しているサークルの新入生向けのC++講座(C++を教えるのが最適かという質問はなしの方向で)で先日ポインタを教えてきた。その時にどうやって教えたのかやどういう反応が返ってきたかをメモとして残しておく。 よくある「この教え方がいい」みたいなの…

HSPでユーザ定義関数の引数にほぼ何でも渡す

HSPは他は型があってないようなものなのになぜか関数や命令の定義のときだけ型を要求されて非常にやりにくいです。そこでなんでも渡せるようにしてみました。とはいってもまだ参照というか変数を渡す実装はできていないのですが... アイディアとしては単純で…

単純なモデルでは地球の重力は地球の中心の一点に集中していることの証明(メモ)

高校物理で計算しているとき地球の重力は地球の中心の一点に集中していると考える。今回はこれを証明してみようと思う。(実は地球物理の授業ででてきて式を写しているだけでは頭に入らなかったのでまとめるという意味もかねている。 次のような問題設定をす…