物理学者(ポスドク)による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)
今後C++を使う機会が多そうなので、早めに習得をしていく
とりあえずC言語との違うところをまず抑えて、次によく使うライブラリーを使ってみようと思う。
C++で画面出力するときは次のようにする
int a = 5;
cout << "a = " << a << "\n"
これで次のように表示されるはずcout << "a = " << a << "\n"
a = 5
これがもし科学の計算ならいろいろと注文したいことがある1, 桁数をもっと多く表示してほしい(例えば15桁全部)
2, 12345e+5とか1.2345とか表示形式を指定したい
(3, 桁数を揃えたい)
とりあえず1と2について
double e = 1e-15;
cout << fixed << setprecision(16) << 1e-15 << "\n";
cout << scientific << setprecision(16) << 1e-15 << "\n";
これで、cout << fixed << setprecision(16) << 1e-15 << "\n";
cout << scientific << setprecision(16) << 1e-15 << "\n";
0.0000000000000010
1.0000000000000001e-15
こんな感じに表示されるはず1.0000000000000001e-15
ここでfixとかscientficは操作子と呼ばれるらしいです
他にもあるので、今後使う可能性があるものを簡単にまとめておきます
■基数
dec 整数の入出力を10進法で行う
hex 整数の入出力を16進法で行う
oct 整数の入出力を8進法で行う
setbase(n) 整数の入出力をn進法で行う
hex 整数の入出力を16進法で行う
oct 整数の入出力を8進法で行う
setbase(n) 整数の入出力をn進法で行う
■ 浮動小数点
fixed 浮動小数点の数を23.45という風に表示する
scientific 浮動小数点の数を23.45e+6という風に表示する
setprecision(n) n桁の精度で表示する
showpoint 小数点を付けて表示する
noshowpoint 小数点を付けずに表示する
ただし setw, setprecision, setw他を使う場合は #includescientific 浮動小数点の数を23.45e+6という風に表示する
setprecision(n) n桁の精度で表示する
showpoint 小数点を付けて表示する
noshowpoint 小数点を付けずに表示する
PR
現在新しい言語を模索中
Haskellを触ってみたが、いろいろと挫折
とりあえず昔買ったけどずっと放置していたc++の本を読んで、
ソースをそのまま書き写してみたりして勉強中
いろいろと便利すぎてやべぇw
今回は変数の上限値を表示させてみる
よくある例のヤツ
include すべきヘッダーはclimitsとcfloat
climitsにはint型、cfloatにはfloat型の変数の上限値が書かれている
■ 参考リンク
(limits.h) 、 (float.h)
ツイート
Haskellを触ってみたが、いろいろと挫折
とりあえず昔買ったけどずっと放置していたc++の本を読んで、
ソースをそのまま書き写してみたりして勉強中
いろいろと便利すぎてやべぇw
今回は変数の上限値を表示させてみる
よくある例のヤツ
include すべきヘッダーはclimitsとcfloat
climitsにはint型、cfloatにはfloat型の変数の上限値が書かれている
■ 参考リンク
最近、gnuplotでアニメを作って遊んでいる
探したら、ネットにいろいろなアニメを作るソースが落ちている
例えばものを投げたときの放物線のアニメとか
最初に解析式を求めるわけじゃなくて、微分方程式をその点について解いて点をどんどんうっていくような感じ
その中で「ソフトウェアタイマ」と呼ばれるものが使われていた
つまり
みたいなの
単純な演算を繰り返して、時間を無駄に使う。要するにここで足踏み
これは実行するマシンによって、時間が変わるしよろしくないらしい
そこでもしくはってのを使うらしい
usecはミリ秒、secは秒だけ足踏み可能。
ツイート
探したら、ネットにいろいろなアニメを作るソースが落ちている
例えばものを投げたときの放物線のアニメとか
最初に解析式を求めるわけじゃなくて、微分方程式をその点について解いて点をどんどんうっていくような感じ
その中で「ソフトウェアタイマ」と呼ばれるものが使われていた
つまり
みたいなの
単純な演算を繰り返して、時間を無駄に使う。要するにここで足踏み
これは実行するマシンによって、時間が変わるしよろしくないらしい
そこでもしくはってのを使うらしい
usecはミリ秒、secは秒だけ足踏み可能。
ソートは色々と種類があって、それぞれ並べ替える方式の違いから実行ステップ数が変わってくる
その結果、かかる時間がデータの種類によってマチマチ
本当はそこんところをしっかり考えないといけない・・・・が、
なんでもいいからソートしたいという時もあるものです
そういうときは、
をインクルードして、
とすればおーけー
hogeは配列の名前
1はhoge[i]のiをいくつずつずらしていくか
5は配列の大きさ
とりあえずこれでソートはしてくれるようです
ツイート
その結果、かかる時間がデータの種類によってマチマチ
本当はそこんところをしっかり考えないといけない・・・・が、
なんでもいいからソートしたいという時もあるものです
そういうときは、
をインクルードして、
とすればおーけー
hogeは配列の名前
1はhoge[i]のiをいくつずつずらしていくか
5は配列の大きさ
とりあえずこれでソートはしてくれるようです
とみながだいすけさんが日本語訳してくれているこちらのドキュメント によると、
17章に積分ルーチンが載っています。
(執筆時はversion 1.15が最新バー)
今までは、台形積分やらシンプソン則の積分しかC言語では書いて使ったことがなかったので
どうやって使うのかもさっぱり・・・・
とりあえずサンプルコードが一つあったので、そのまま書いて実行してみます。
が、エラー
コンパイルは通って、実行ファイルも出来てますが・・・・
原因は構造体wのメンバsizeを呼び出して出力するときの型の問題。
sizeはsize_t型ですが、
同期曰く、size_t型は一般にはintと同じ型だけど、ここではlong int型として扱ってしまっているらしく
printf("%d¥n", w->size);
↓
printf("%ld¥n", w->size);
と変更すればエラーは消えました。
しばらくはこれを使ってみようかと・・・
できれば中でどういうことをしているのかを知りたいですね。
ツイート
17章に積分ルーチンが載っています。
(執筆時はversion 1.15が最新バー)
今までは、台形積分やらシンプソン則の積分しかC言語では書いて使ったことがなかったので
どうやって使うのかもさっぱり・・・・
とりあえずサンプルコードが一つあったので、そのまま書いて実行してみます。
が、エラー
コンパイルは通って、実行ファイルも出来てますが・・・・
原因は構造体wのメンバsizeを呼び出して出力するときの型の問題。
sizeはsize_t型ですが、
同期曰く、size_t型は一般にはintと同じ型だけど、ここではlong int型として扱ってしまっているらしく
printf("%d¥n", w->size);
↓
printf("%ld¥n", w->size);
と変更すればエラーは消えました。
しばらくはこれを使ってみようかと・・・
できれば中でどういうことをしているのかを知りたいですね。
計算結果は
doubleがどっかに入ってたら、結果もdoubleになるらしい
けど、怖いので、
yy = 10.0/(double)11;
とかにしたいですね
FFTWの公式サイトから落としてきたファイルを解凍して、中に入る
これでbenchが使えるようになる。
あとはファイルのサイズを変えてbenchに食わせるようなシェルスクリプトをちょいちょいと書いて実行。
Mac mini とMac Book airではこんな感じの結果になりました。
ツイート
これでbenchが使えるようになる。
あとはファイルのサイズを変えてbenchに食わせるようなシェルスクリプトをちょいちょいと書いて実行。
Mac mini とMac Book airではこんな感じの結果になりました。
日本語化されたpdfを参考にしてみた。
GSL リファレンス・マニュアル日本語訳
補完の方法は他にも選べる。
gsl_interp_linear, gsl_interp_csplineとか
自分の欲しい結果に合ったものを用いるべし
gsl_spline_init(spline, f0, fn, data_size)
下端f0から上端fnまでdata_size個のデータから補完する
補完元データを読み込ませる
yi = gsl_spline_eval(spline, xi, acc);
これでxiのときの補完した値が得られる
gsl_spline_free(spline);
gsl_interp_accel_free(acc);
全部終わったら解放しておくこと
今自分で書いたコードを読み返してみて色々とまずい気がするなー・・・ボソッ
i=0;
for(xi = inif[0]; xi < inif[data_size-1]; xi += DELTA){
i++;
この辺とか
ツイート
GSL リファレンス・マニュアル日本語訳
補完の方法は他にも選べる。
gsl_interp_linear, gsl_interp_csplineとか
自分の欲しい結果に合ったものを用いるべし
gsl_spline_init(spline, f0, fn, data_size)
下端f0から上端fnまでdata_size個のデータから補完する
補完元データを読み込ませる
yi = gsl_spline_eval(spline, xi, acc);
これでxiのときの補完した値が得られる
gsl_spline_free(spline);
gsl_interp_accel_free(acc);
全部終わったら解放しておくこと
今自分で書いたコードを読み返してみて色々とまずい気がするなー・・・ボソッ
i=0;
for(xi = inif[0]; xi < inif[data_size-1]; xi += DELTA){
i++;
この辺とか
これを実行したら
となるはず
参考ページ
http://winofsql.jp/VA003334/Cprog050930083833.htm
limits.h にCで使われる様々なデータ型の上限・下限が載っている
○使い方
これでチェック可能。
ちなみに自分のMac OS X 10.7.2での実行結果は
参考ページ
http://www1.cts.ne.jp/~clab/hsample/IO/IO19.html
ツイート
○使い方
これでチェック可能。
ちなみに自分のMac OS X 10.7.2での実行結果は
参考ページ
http://www1.cts.ne.jp/~clab/hsample/IO/IO19.html
デフォルトの場所にGSLがインストールされているなら、-Lや-Iオプションは不要で、これでおk
Numerical Recipes in Cというものがある。
C言語を学ぶなら読んどけって一冊らしい・・・
巻末によく使う配列の確保に関するルーチンをまとめたものがある(nrutil.h / nrutil.c)
これの使い方メモ
参考ページ
http://macwiki.sourceforge.jp/wiki/index.php/NumericalRecipes
一次元配列の場合は
でおk
他の型なら、適時修正
領域を確保する配列はhoge[0]からhoge[10]の10個 11個
(この本では要素の0個目は紛らわしいからやめとけ、って書いてます)
最後の行は確保した領域を解放する
であることも覚えておくと便利だろう
二次元配列では
たぶんこんな感じでおk
であることも覚えておくと便利だろう
ツイート
C言語を学ぶなら読んどけって一冊らしい・・・
巻末によく使う配列の確保に関するルーチンをまとめたものがある(nrutil.h / nrutil.c)
これの使い方メモ
参考ページ
http://macwiki.sourceforge.jp/wiki/index.php/NumericalRecipes
一次元配列の場合は
でおk
他の型なら、適時修正
領域を確保する配列はhoge[0]からhoge[10]の
(この本では要素の0個目は紛らわしいからやめとけ、って書いてます)
最後の行は確保した領域を解放する
であることも覚えておくと便利だろう
二次元配列では
たぶんこんな感じでおk
であることも覚えておくと便利だろう
普段はEmacsを使っていますが、前回記事でデータ閲覧のためにmiを導入したと書きました。
デフォルトで文字が小さいのを直したり(おじさんにはきつい;;)
キーバインドを自分好みに設定したかったので色々といじる。
設定は
左上のmi > モード設定
から変更します。
設定画面
とりあえずフォントのサイズを11に
あとはキーバインドを変更
「ジャンプリスト」やら「最近開いたファイル」も不必要なので消したいのですが
どこでいじるのかまだよくわからない・・・・
ちなみにキーバインドの設定はエクスポートして他のマシンでも同様のバインドにすることができるみたいです
Emacsだと、起動するときに読み込む .emacs というファイルがこれに該当するのでしょうか
ツイート
デフォルトで文字が小さいのを直したり(おじさんにはきつい;;)
キーバインドを自分好みに設定したかったので色々といじる。
設定は
左上のmi > モード設定
から変更します。
設定画面
とりあえずフォントのサイズを11に
あとはキーバインドを変更
「ジャンプリスト」やら「最近開いたファイル」も不必要なので消したいのですが
どこでいじるのかまだよくわからない・・・・
ちなみにキーバインドの設定はエクスポートして他のマシンでも同様のバインドにすることができるみたいです
Emacsだと、起動するときに読み込む .emacs というファイルがこれに該当するのでしょうか
C言語でコードを書くときにはいつもEmacsを使っていた(正確にはCarbonEmacs)
ただ起動にちょっと時間がかかる。(.emacsを読み込んでるから?)
また、ウィンドウをもうひとつ作ろうと思うと、
と打つ必要がある。
はっきり言って手間である・・・
そこで簡単なデータ閲覧用にmi(みみかき)を入れることにした。
mi公式
自分にあったパッケージを落としてくればよい
研究室のPCはスノレパなので
バージョン2.1.11r1
最終更新日:2011.4.17
これを入れておく。
ターミナルからの起動は
また
でmiを起動してhoge.datを開く事ができる。
これでhoge.datとfoo.datを2つのタブを通して開くこともできる。
aliasとして(Cシェルでは)
を登録しておくと、もうちょい楽になるか
ツイート
ただ起動にちょっと時間がかかる。(.emacsを読み込んでるから?)
また、ウィンドウをもうひとつ作ろうと思うと、
と打つ必要がある。
はっきり言って手間である・・・
そこで簡単なデータ閲覧用にmi(みみかき)を入れることにした。
mi公式
自分にあったパッケージを落としてくればよい
研究室のPCはスノレパなので
バージョン2.1.11r1
最終更新日:2011.4.17
これを入れておく。
ターミナルからの起動は
また
でmiを起動してhoge.datを開く事ができる。
これでhoge.datとfoo.datを2つのタブを通して開くこともできる。
aliasとして(Cシェルでは)
を登録しておくと、もうちょい楽になるか
4月にこのMac miniを使い始めてから
今日やっとGSLをインストールしていないことに気づいた・・・・
インストールしたはいいものの、コンパイルするときのリンクを忘れてしまっていたのでメモ
でいけるらしい
GSLがデフォルトの場所( /usr/local/include )にインストールされていれば
この二つは必要ない。
参考ページ
GSL日本語リファレンス置き場
http://www.cbrc.jp/~tominaga/translations/gsl/
ツイート
今日やっとGSLをインストールしていないことに気づいた・・・・
インストールしたはいいものの、コンパイルするときのリンクを忘れてしまっていたのでメモ
でいけるらしい
GSLがデフォルトの場所( /usr/local/include )にインストールされていれば
この二つは必要ない。
参考ページ
GSL日本語リファレンス置き場
http://www.cbrc.jp/~tominaga/translations/gsl/
strcpyを使えばよさげ
参考ページ
http://www9.plala.or.jp/sgwr-t/lib/strcpy.html
argv[1]に入ってるファイル名関連のファイルを読み書きしたいときにこれを使って編集する
今回はGIFアニメを作りたい過程でこれに遭遇
//なんか最近更新内容がずさん・・・
ツイート
参考ページ
http://www9.plala.or.jp/sgwr-t/lib/strcpy.html
argv[1]に入ってるファイル名関連のファイルを読み書きしたいときにこれを使って編集する
今回はGIFアニメを作りたい過程でこれに遭遇
//なんか最近更新内容がずさん・・・
後の自分のためのメモ
例えば次のような関数があるとき
この関数を実際に使うときは、配列とその要素数を引数として渡すが、そのとき[]はいらない
つまり
これでおk
(なんか書いててわかりにくいなぁー)
ツイート
例えば次のような関数があるとき
この関数を実際に使うときは、配列とその要素数を引数として渡すが、そのとき[]はいらない
つまり
これでおk
(なんか書いててわかりにくいなぁー)
c言語でfopenを用いて、ファイルを開くことができる
次のようにして開く
この書き方ではカレントディレクトリのファイルしか開くことができない
そこで絶対パスを用いた書き方に変更する
絶対パスの書き方はプラットフォームに依存するらしいので、
絶対パスをpwdコマンドを用いて確認する。
これでちょっとは便利になったかなぁー
研究室のMacにはGSLが導入されている。
GSLとは GNU Scientific Libraryの略で
numerical recipesに載っているプログラムが最初から使えるようなもので色んな計算の煩いを多少楽にしてくれる
詳しい導入の仕方などはこちら
で実際にコンパイルする際は、
のようなリンクを貼らなければならない(環境によってlocalなどは変わる)
しかし、gccはデフォルトでヘッダファイルをusr/local/includeに見に行くのでもしGSLがデフォルトの場所にインストールされている場合は -I オプションは必要ない
ってここのpdfに書いてある。
しかしそれを確認するために
って打っても、gccがヘッダファイルを探しにいくディレクトリを表示させても /usr/local/includeとは書いてないんだよなぁー
わからん。
・追記
http://www.asahi-net.or.jp/~wg5k-ickw/html/online/gcc-2.95.2/gcc_3.html
>例外はディレクトリ`/usr/local/include'で、 ヘッダ・ファイルを探す際には、 コンパイラのインストール・ディレクトリにかかわらず、 このディレクトリが探索されます
最初から見に行くようになってるのかー納得ー
ツイート
GSLとは GNU Scientific Libraryの略で
numerical recipesに載っているプログラムが最初から使えるようなもので色んな計算の煩いを多少楽にしてくれる
詳しい導入の仕方などはこちら
で実際にコンパイルする際は、
のようなリンクを貼らなければならない(環境によってlocalなどは変わる)
しかし、gccはデフォルトでヘッダファイルをusr/local/includeに見に行くのでもしGSLがデフォルトの場所にインストールされている場合は -I オプションは必要ない
ってここのpdfに書いてある。
しかしそれを確認するために
って打っても、gccがヘッダファイルを探しにいくディレクトリを表示させても /usr/local/includeとは書いてないんだよなぁー
わからん。
・追記
http://www.asahi-net.or.jp/~wg5k-ickw/html/online/gcc-2.95.2/gcc_3.html
>例外はディレクトリ`/usr/local/include'で、 ヘッダ・ファイルを探す際には、 コンパイラのインストール・ディレクトリにかかわらず、 このディレクトリが探索されます
最初から見に行くようになってるのかー納得ー
上の書き方では、カレントディレクトリでhoge.hというヘッダファイルを探し
次にgccコマンドラインの -Iオプションで指定したディレクトリを探し
最後にgccの標準ライブラリが探される。
こちらの書き方では、カレントディレクトリの検索を行わないそうです。
プロフィール
HN:coffee
職業:物理屋(自称)
趣味:映画鑑賞、登山
出身:大阪府の南の田舎
自己紹介:
import MyProfile
import coffee_pote from TWITTER
import amazonのほしい物リスト from WISH_LIST
print "先月子供が産まれました!"
# 最終更新 2022/10/25
職業:物理屋
趣味:映画鑑賞、登山
出身:大阪府の南の田舎
自己紹介:
import MyProfile
import coffee_pote from TWITTER
import amazonのほしい物リスト from WISH_LIST
print "先月子供が産まれました!"
# 最終更新 2022/10/25
カテゴリー
ブログ内検索
リンク
相互リンク募集中です
(Twitterにてお知らせください)
Demo scripts for gnuplot version 5 (gnuplotのさまざまなデモ画像と作り方がまとめられている、眺めているだけでできるようになった気分になれる)
gnuplotスクリプトの解説 (米澤進吾さんの個人ページ、gnuplotと言えばこのかた)
gnuplot のページ (Takeno Lab、うちのブログがリンクされていたのでリンク返し)
Twitterから映画の評価が分かる & 映画の鑑賞記録が残せる coco (映画の感想をまとめられるサイト、いつもお世話になっています)
Astronomy Picture of the Day Archive (天文や宇宙関連の最新の話題について画像とともにNASAが説明しているページ)
今日のほしぞら (任意の時刻の空で見える星を表示してくれる、国立天文台が管理している)
GNUPLOTとアニメーション (応用の項目の「見せてあげよう!ラピュタの雷を!!」あたりからすごすぎる)
読書メーター (読んだ本をリストできる便利なサイト)
flickr難民の写真置き場 (20XX年、flickrは有料化の炎に包まれた。あらゆるflickr無料ユーザーは絶滅したかに見えた。 しかし、tumblr移住民は死に絶えてはいなかった。)
教授でもできるMac OS X へのLaTeX, X11, gccのインストレーションと環境設定 (阪大の山中卓さんのwebページ、タイトルにセンスが溢れている、内容は超充実してる、特にTeX関連、学振DCとかPDの申請書類作成時にはお世話になっております)
英語論文執筆用の例文検索サービス (とんでもないものを見つけてしまった・・・・ arXivに収録されている 811,761報の 英語論文から,例文を検索するための検索エンジン)
Demo scripts for gnuplot version 5 (gnuplotのさまざまなデモ画像と作り方がまとめられている、眺めているだけでできるようになった気分になれる)
gnuplotスクリプトの解説 (米澤進吾さんの個人ページ、gnuplotと言えばこのかた)
gnuplot のページ (Takeno Lab、うちのブログがリンクされていたのでリンク返し)
Twitterから映画の評価が分かる & 映画の鑑賞記録が残せる coco (映画の感想をまとめられるサイト、いつもお世話になっています)
Astronomy Picture of the Day Archive (天文や宇宙関連の最新の話題について画像とともにNASAが説明しているページ)
今日のほしぞら (任意の時刻の空で見える星を表示してくれる、国立天文台が管理している)
GNUPLOTとアニメーション (応用の項目の「見せてあげよう!ラピュタの雷を!!」あたりからすごすぎる)
読書メーター (読んだ本をリストできる便利なサイト)
flickr難民の写真置き場 (20XX年、flickrは有料化の炎に包まれた。あらゆるflickr無料ユーザーは絶滅したかに見えた。 しかし、tumblr移住民は死に絶えてはいなかった。)
教授でもできるMac OS X へのLaTeX, X11, gccのインストレーションと環境設定 (阪大の山中卓さんのwebページ、タイトルにセンスが溢れている、内容は超充実してる、特にTeX関連、学振DCとかPDの申請書類作成時にはお世話になっております)
英語論文執筆用の例文検索サービス (とんでもないものを見つけてしまった・・・・ arXivに収録されている 811,761報の 英語論文から,例文を検索するための検索エンジン)
最新記事
(11/20)
(03/05)
(02/29)
(02/21)
(02/21)
(02/21)
(02/21)
(01/13)
(01/05)
(01/05)