タグ

AlgorithmとC++に関するkujooのブックマーク (5)

  • 多変数関数の極小値求解プログラム2

    [ 簡単な説明 ] Nelder-Mead の滑降シンプレックス法による多次元関数の極小値求解プログラムです。 出力例は、3変数関数 f (x,y,z) = |(x-1)3|+(y-2)2 + |z-3| の極小値を求めています。(解は、x=1、y=2、z=3 で f( )=0 です。) 極小値求解プログラムは、与える関数の符号を変えれば、極大値求解に使用できます。 /* amoeba.c 多次元の滑降シンプレックス法 */ #include <stdio.h> #include <stdlib.h> #include <math.h> #define NMAX 5000 /* 関数評価回数の上限 */ #define SWAP(a, b) {swap = (a); (a) = (b); (b) = swap;} void amoeba(double **p, double y[], in

    kujoo
    kujoo 2009/06/24
    滑降シンプレックス法
  • Shinsuke’s Web Design » 多次元の滑降シンプレックス法 by C言語プログラム(amoeba.c) 【非線形 最適化/逆問題】

    滑降シンプレックス法とは まずはじめに、滑降シンプレックス法について簡単に説明。 滑降シンプレックス法とは、非線形 最適化/逆問題を扱うことができる単一目的の最適化手法(アルゴリズム)です。 かみくだいて言うと、未知の解を、反復計算を行うことにより正解にどんどん近づいていき、収束させる計算手法です。 滑降シンプレックス法(Nelder & Mead Downhill Simplex)は、J. Nelder氏とR. Mead氏が開発したのが発端とされているようです。 線形計画法の中のシンプレックス法(表を用いたり、方程式を連立させて解くような計算手法)とは計算方法が全くと言っていいほど異なる。 滑降シンプレックス法の特徴と計算方法 特徴 未知数を解くための評価関数の式が連続した値には絶大な効果を発揮します。 (例えばn次元の関数などの最小値/最大値を求める) 逆に言うと、不連続な値を求めるの

    kujoo
    kujoo 2009/06/24
    滑降シンプレックス法
  • opencv.jp - OpenCV: 推定器(Estimators)サンプルコード -

    作成者: 上田悦子, 最終変更者: 怡土順一, 最終変更リビジョン: 357, 最終変更日時: 2007-12-26 14:22:07 +0900 (水, 26 12月 2007) ■ Condensation OpenCVには,推定器の一つとしてCondensation(パーティクルフィルタ)が実装されている. リファレンス マニュアルにもあるように,アルゴリズムの詳細は, http://www.dai.ed.ac.uk/CVonline/LOCAL_COPIES/ISARD1/condensation.html を参照されたい. ここでは,特にOpenCVに実装されているCondensationアルゴリズムの関数の使用方法について述べる. #include <cv.h> #include <highgui.h> #include <ctype.h> #include <math.h>

  • String::Dictionary - naoyaのはてなダイアリー

    String::Dictionary という Perl のライブラリを作ってみました。 http://github.com/naoya/perl-String-Dictionary/tree/master String::Dictionary は検索エンジンその他を作る時に必要になる「辞書」のためのデータ構造 + API です。辞書は単語の集まりですが、これを配列やハッシュなどで持つのではなく、単語をすべて繋げた一つの大きな文字列として保持することでメモリ領域を節約したものです。単語は単に文字列連結で持つだけでなく、Front Coding で圧縮しています。以下簡単な解説です。 辞書は例えば [0] ・・・ jezebel [1] ・・・ jezer [2] ・・・ jezerit [3] ・・・ jeziah [4] ・・・ jeziel ...という風に単語を配列で持つことで実現でき

    String::Dictionary - naoyaのはてなダイアリー
  • C 言語入門サンプル

    以下、すべて Visual C++ で作成していますが、 すべて確認しているわけではありませんが Linux 上の gcc でも動くはずです。 gcc でも Visual C++ と同様に C 方式のコメント (/* */) と C++ 方式の コメント (// ) の両方が使えるようですから、多分大丈夫だと思います。 但し、Linux では 日語は euc にしなければいけません。また math.h をインクルードした ソースファイル sample.c をコンパイルする場合には gcc -lm sample.c のようにする必要があります。 実行ファイルは無指定では a.out になります。 以下のプログラムは単なるサンプルで、コードを勝手に使用しても 構いません。但しバグがあっても当方では責任を持ちません。

  • 1