c/c++

LU分解

LU分解は連立方程式を解く方法の一つで、方程式をAx = yとしたとき、右辺のベクトルyが複数ある時に役に立つ解放。ガウスの消去法では前進消去の度に係数行列が書き換わってしまうので、yが複数のときはその都度回復というか内容を元に戻さなければならない…

c++でガウスの消去法(部分ピボッティング付き)

前のエントリ - c++でガウスの消去法 - で http://d.hatena.ne.jp/yatt/20080214/1202987642ピボッティングは0、あるいは0に非常に近い値で除算しないため、また、精度を高めるためにやると追記しました。ただ、その内容に関しては自分で実際に確かめてはい…

並列FizzBuzz

最近並列プログラムにハマってます。amazon:マルチコアCPUのための並列プログラミング]と[amazon:MPIプログラミングを読みながらpthreadライブラリとかCellをいじって「早っ!」とか言ってみたり。ただし勉強不足なせいで現実問題に応用可能な知識が足りない…

c++で高速フーリエ変換, fft

多倍長演算のプログラムを書くために学習した高速フーリエ変換のメモ。・・・ところでfftでググるとファイナルファンタジータクティクスが出てくるあたり泣ける。高速フーリエ変換は離散フーリエ変換を高速に行うアルゴリズムで、素直に実装すると再帰的な処…

精度の高い平方根の算出 -ニュートン法-

Cでプログラミングするときに平方根の値を使うにはmath.hのsqrt関数を使うのが普通です。が、sqrtで得られる値では浮動小数点の精度が足りない場合もあります。その場合はsqrtl関数を使います。しかし、この関数は環境によって使えないので、自分の環境にsqr…

c++でcuiのタートルグラフィックス

『c++プログラミング第2版 vol.1』という本を読んでタートルグラフィックスの問題が出題されていたので面白がってやってみた。問題4.23。ところで、この本はすごくいいです。工学的な観点、効率の良いプログラムの書き方、オブジェクト指向、そして当然なが…

c++でガウスの消去法

やっと試験等々が終わってある程度暇になりました。ってことでガウスの消去法をc++で実装しました。Gaussクラス。前進〜消去!後退〜代入!(意味不明) (追記:2008/02/17: 慎重なプログラムでは行列の対角要素がゼロであった場合、ゼロ除算例外の送出を防…

gcのモデル

作ってみました。勉強のため。マーク&スイープgcというらしい。 再利用可能なオブジェクトのリストがあり、 新しくオブジェクトをつくるときはそこからとる。 そのときにリストが空ならgcを起動 ルートオブジェクトから辿れるオブジェクトすべてにマークを…

最も簡素?なls

#include<stdio.h> // printf #include<dirent.h> // DIR, struct dirent #include<string.h> // strcpy int main(int argc, char **argv) { DIR *dp; struct dirent *ent; char path[256]; if (argc < 2) strcpy(path, "."); else if (argc < 3) strcpy(path, argv[1]); else { printf("u</string.h></dirent.h></stdio.h>…

オセロプログラム

課題にだされてたオセロのプログラムが一応形になった。ただしまだまだ改善の余地あり。c++でかいたもので、undoの実装に座標型の構造体のスタックを使っている(stack)。AIのゲーム木探索にはnegamax-alpha-betaを使った。あとは、、、 着手可能な座標を返す…

STL便利!

C++のSTLって便利だなあ。今更って言われそうだけど。これまでcでプログラムしてきたけど、軽いこととかちょっと複雑なデータ構造を使うものはpythonでやってきた。c言語に標準ではデータ構造ライブラリが無いから全部自前でそろえる必要があって、しかも多…

オセロゲームのAI

先週の土曜日に突然オセロを作ろうと思いつきせっせと書いてみたけれど、AIを強くできなくて悩む。 今のAI: その1:盤面を左上から走査して、おける場所を見つけたら即座に置く。 その2:先読みせず、現在の一手で最も多く石を取れる場所のうち、最も右下…