トップページ

「トップページ」の編集履歴(バックアップ)一覧に戻る

トップページ - (2009/06/11 (木) 23:37:18) のソース

*wikiへようこそ

Menu

[[有田研輪講>月曜輪講(有田研)]]

五月祭磁性体班

[[五月祭hex班>hex班]]

wikiの使い方は左にある@wikiご利用ガイドを見てください。

以下は五月祭で磁性体班がやったものです。一部hex班のものもあります。

情報交換用にwikiを借りたので自由に編集して下さって結構です。管理しているのは物工4年栗田です。

基本的に誰でも編集できる設定なので便利ですがセキュリティ的にはもろいです。設定を変えればパスワード制にもできるので、そこらへんは様子を見て判断します。右上にこの「wikiに参加」というものがありますが、登録をしなくてもページの編集は自由にできるのでご心配なく。ログインも特に必要ないです。

&color(red){プログラムをそのまま載せるページを作るときは、@wikiモードではなくそのままテキストモードを選んだほうがいいです。@wikiモードだとwikiとプログラムの文が反応して変なことが起こるケースがあります。新規ページ作成時にこの選択ができます。}

wikiの使い方は左にある@wikiご利用ガイドを見てください。


*近況報告

5/28島崎
レイアウトはまだですが、とりあえずalphaとvについてパラメータをいじれるようにしました。vの範囲を適当に設定してしまったのでTest12.cppのv_spinner->set_float_limits(v_min, v_max)の引数を適切な範囲に変えてください。
&ref(添付用6.rar)

5/25伊藤
写真をjpegにしました。


5/23伊藤
修正版です。メモリー解放のところを直しました。
&ref(修正版.zip)
写真は下
 http://www.filebank.co.jp/guest/tobusikabaka/fp/apmayfes



5/7伊藤
ようやく、一応Nが大きくても表示できるものができました。
FFTで、違うライブラリを使いました。512は重すぎるためか動きにくいです。
N=256でα=3.5、v=0.1とすると、島状の模様を作ることができました。
&ref(添付用5.zip)

5/4島崎
遅くなってしまってすみません。添付用1のイジングモデルのg_Temparture(int 1~4)と添付用3の準イジングモデルのalpha(float 1.0~4.0)をGLUIを使って変えられるようにしました。
GLUIのインクルードファイルについてはREADME.txtを見てください。
alphaの刻み幅が調整できないので、直接入力した方がいいと思います。
&ref(添付用4.rar)

4/8伊藤
ありがとうございます。僕のでもN=128では動きませんでした。64でも何となく磁区ができる様子がわかると思います。
Nが大きいとさらに論文に近づけると思うのですが…。
オイラー法ですがScilabでのものをアップしておきます。サイズはN=256です。
alpha=1.5で迷路状、alpha=3.5で島状になっていました。論文とは少し違うかもしれません。
&ref(test9.sce)

あと、今後の計画を書きます。
プログラムについては、インターフェイスを充実させようと思います。
実験については4月中に装置や試料について、見ておきます。
試料については用意してくれるものもあるのですが、作らせてもらえるとのことなので(1日程度でできる)、やってみましょう。
いろいろな磁石を貸してくれるそうなので、それを使った小物展示も用意したいと思います。

今までは、割り当てなどはしっかり決めていなかったのですが、今後はみなさんに仕事を割り振れると思います。


4/8栗田
一応目標のものが形になりました。
&ref(添付用3.zip)
大きな問題点は僕のパソコンだとNを128以上にすると動かなくなることです(エラーが出て終了するorz)。もう一つ細かいことですが、何故かコンパイルのときに警告文が出てきます。opengl関連です。理由わかったら教えてください。←自己解決しました。onestep()の引数をint型に設定し、onestepが呼び出されるところで0を引数にすれば治ります。この引数0は関数ないでは使われませんが。


4/3伊藤
昨日のやつをアップします。
模様は変ですがだいたいの挙動がわかると思います。
&ref(test5.sce)


4/2伊藤
精度を考えるとかなり問題なのですが、逆フーリエ変換で出てくるφを実部だけ
残すということをすると発散はしないようです。(虚部を強制的に0にする)
模様はできるのですが荒っぽいことをしているので、論文の形とは違うようです。
また後でアップロードするので参考にしてください。

また、今田先生に聞いたところ、微分方程式は線形項については厳密に解が出るので、
そこからのずれとして非線形項をルンゲクッタの近似等で加えるべきであるとのことでした。



3/29伊藤
「いい」アルゴリズムを考える必要があるようです。
予告していた通り、今田先生のところに4/1(アポは3時)に
質問をしに行こうと思います。
そこでうまい解決策が見つかるといいと思います。

3/27栗田
まあ差分方程式のアルゴリズムが悪いんだろうね。数値解析の授業でも、発散させない条件みたいなのあったし。

3/26伊藤
2πも入れないと変だね。
で、double型にして2πつけると、やっぱり発散するんだよね。
ところで、Scilabで同じようなのを作ってみました
(FFT()という2次元高速フーリエ変換の組み込み関数が入っているので、プログラム自体はシンプルに見えます)。
どうもこちらでも発散が起きるようです。
アップしておきます。

&ref(test2.sce)



3/25栗田
プログラム読んでくれてありがとう。確かにk1とk2は問題ありそうですね。ただ、多分だけど2πかけたほうがいい気がします。exp(kN)=1を考えると、k=整数×2π/Nだと思います。それとint型の割り算はdouble型にならずに切り捨てられるから、k1=i/(N*N)、k2=(i%N)/Nをやると両方とも0になると思います。それもふまえて
int i, k1, k2;
のところを
int i, k_1, k_2;
double k1, k2;
にして、
k_1 = i/N;
k_2 = i%N;
k1 = (2*M_PI*k_1)/N;
k2 = (2*M_PI*k_2)/N;としたのだが、あまり効果がなかったorz


3/25伊藤
栗田くんのプログラム(fft7.c)で発散していた原因はおそらく
void function
のところです。
波数のところを
k1=i/(N*N)
k2=(i%N)/N
とすれば大丈夫だと思います


3/22栗田
 お久しぶりです。フーリエ変換についてですが、2次元のフーリエ変換というのはわりと研究されているわけで、自作のプログラムを作るよりライブラリに頼るべきだと思います。高速フーリエ変換(FFT)なんて素人には組みにくいですし。かといって正直なフーリエ変換はコンピューターに負担をかけます。FFTは2の累乗じゃないとできないわけで、それであの論文は1辺512サイトでやってるんだと思います。僕は[[こちらのページ>http://www5.airnet.ne.jp/tomy/cpro/science.htm]]からFFTをぱくってきました。それを用いて作った微分方程式のシミュレーションの失敗作を挙げておきます。
&ref(添付用2.zip)
 一応上のページにいかなくてもこのzipの中身だけで動くはずです。このzipの中には上のページからぱくったものがいろいろ入っているので、説明はそちらを参照してください。自作の関数などについては一応コメントをいれました。
 何が失敗かって、fft7を実行してみればわかると思いますが、35ステップくらいで発散して変な感じになります。test2も同様です。とても使い物になりません。僕が作った差分方程式が悪いのですが、どこが悪いかちょっとわかりません。
 さて、前回の話し合いから少し日が空いたわけですが、もし今の段階であまりみんなの開発が進んでいないようなら、僕の失敗作を見て改善してほしいです。もうすぐ自分のものができるという状況なら、それを完成させて僕の失敗作はお蔵入りにしましょう。

3/18栗田
m(r)の時間発展が上のpdfファイルに出てくる偏微分方程式に従うことに関する解説は今田先生の教科書の81ページあたりにあります。
追記:今田先生の教科書の記述とはあまり関係のない考察をしてみました。雑な議論ですが直感的理解くらいにはなると思います。
&ref(時間発展.doc)
[[上のドキュメントの議論を少し補足しました>補足]](3/19栗田)

3/18伊藤
以前配った英語の論文についての解説です。
だいたい2節目のところの要約です。
&ref(準イジングモデル.pdf)
何か変なところ、わからないところあれば言ってください。
あと準イジングモデルという題名ですが勝手につけたものです。
英語ではIsing-like modelとなっています。

3/17伊藤
まずは、栗田くんありがとう。
一応、今田先生のところに行こうと思うんですが、まだアポが取れていない状況です。

あと、メトロポリス法についての解説をアップしておきます。
&ref(資料3.pdf)

3/17栗田
とりあえず磁場の無い等温イジングモデルはできたわけで、磁場や温度変化を考えるのも、これらのパラメータとメトロポリスステップ数をグローバル変数にして、パラメータをステップ数の関数にすればある程度のパラメータの時間変化が考慮できると思います。できればアルゴリズムの根本的な改善も視野に入れつつ先生に質問に行きたいなあ。

3/17栗田
[[動的イジングモデルのシミュレーションプログラム>http://www36.atwiki.jp/apmay?cmd=upload&act=open&pageid=1&file=%E6%B7%BB%E4%BB%98%E7%94%A8.zip]]を作りました。今田先生がプロジェクター使ってやってたことが再現されると思います。ソースコードやexeファイルをつめておきました。使ったアルゴリズムはメトロポリス法と呼ばれるものです。

※使い方(ウィンドウズの人向け)
glut-3.7.6-binの中にglut32.dllがあるのでこれをC:\WINDOWS\system32にもって行きます。その後isingのなかにあるexeファイルをクリックして下さい。50_の後ろの数字は温度です。右クリックで単位時間進みます。左クリックで単位時間×100進みます。左クリック連打は非推奨です。visualc++を持ってる人は、pdfファイルにあるように中身ファイルを配置するとコンパイルできるようになると思います。

&ref(ising.gif)こんな感じになります

3/15伊藤祐斗
いくつか資料をアップロードします。
二次元イジングモデルについての解説です。
&ref(資料.pdf)
二次元イジングモデルのシミュレーション(メトロポリス法についてはあとで)についての解説です。 
&ref(資料2.pdf)

3/10伊藤祐斗
下記のプログラムに、周期的境界条件についてのコメントをいれました。C言語で実装したいと思っています。
各ピクセルに色を割り当てて表示するプログラムというのがあって、今回作りたいプログラムでも使えそうなので、[[ここ>雲]]にプログラムをアップしておきます。実際は磁場の効果を取り入れるためにエネルギーの変化分DeltaEを修正したり、アニメーションのプログラムにしなくてはいけません。 


※3/15追加事項
プログラムは[[こちら>scilabイジング]]です。

3/4(水)伊藤祐斗
遅くなって申し訳ありません。Scilabで描いたイジングモデル(磁場なし)のプログラムをアップロードします。
表示部分のみです   (全磁化や全エネルギーやスピン反転の受け入れ回数等の計算部分は入れずに、純粋に絵だけを表示するという意味)←3/15挿入

メインプログラムはIsing.sceサブログラムはDelta.sce
という名まえで保存してください。Consoleでexec 'Ising.sce'と入力すれば動くはずです。このままで使えるはずです。




**公式の操作方法
-[[@wikiの基本操作>http://atwiki.jp/guide/category2.html]]
-[[用途別のオススメ機能紹介>http://atwiki.jp/guide/category22.html]]
-[[@wikiの設定/管理>http://atwiki.jp/guide/category6.html]]
-[[@wiki ご利用ガイド>http://atwiki.jp/guide/]]
-[[よくある質問>http://atwiki.jp/guide/category1.html]]
-[[無料で会員登録できるSNS内の@wiki助け合いコミュニティ>http://sns.atfb.jp/view_community2.php?no=112]]
-[[@wiki更新情報>http://www1.atwiki.jp/guide/pages/264.html]]
-[[@wikiへのお問合せフォーム>http://atwiki.jp/helpdesk]]
等をご活用ください