タグ

algorithmとpythonに関するpipeheadのブックマーク (8)

  • ニュートン法とは何か??ニュートン法で解く方程式の近似解 - Qiita

    ニュートン法とは ニュートン法とは、f(x)=0になるようなxを求めるアルゴリズムの1つで、方程式の解を近似的に求めることができる方法です。 ニュートン法を用いると、√2の値やsin(x)=0.5になるようなxの値など近似的に求めることができます ニュートン法の考え方 ニュートン法では、以下の考え方に基づいて計算が行われます f(x) = 0になるような値xを探す時、ある値x1における接線の切片x2は、元の値x1より真の値xに近くなる この考え方は下の図のように、f(x)という関数においてf(x) = 0になるようなxを求めたいとき、ある値x1における接線f'(x)の切片x2を求めると、求めたい値xに対して、x1よりもx2の方が近くなるということを意味しています 先ほど算出したx2の値を元にして同様の操作を行うと、x3は目的となる値xにより近づきます この手順を繰り返せば繰り返すほど、算出

    ニュートン法とは何か??ニュートン法で解く方程式の近似解 - Qiita
    pipehead
    pipehead 2015/06/13
    > ニュートン法とはf(x)=0となるxを求めるための手法で、繰り返し計算を行うことでxについて近似的に算出することができます。また、誤差範囲を指定することで、有効桁数が保証された値を得ることができます
  • Pythonで基本のアルゴリズムを書いてみた - Something Beyond

    2015-01-05 Pythonで基のアルゴリズムを書いてみた Programming アルゴリズムを学ぶ意義みたいなものはいろいろなところで語り尽くされていると思うので私からは特にコメントしませんが、今回の勉強に利用した書籍でも引用されていた言葉が印象的なので、記しておきます。 最先端の機械を使って製品をつくるのは簡単で、しかも楽なことだが、基技術を固める前に楽なほうに流れていってしまった。俺のような基的なことがきちんとできるローテクが、今、我が世の春を謳歌しているんだ。 岡野雅行さんという職人さんの言葉のようです。そういえば随分前にこんな記事が盛り上がりました。 今すぐ辞めて欲しい、「Ruby on Rails勉強してます」「CakePHP勉強してます」 最新技術だけではなくて、その基礎となる技術をしっかり理解しなければダメだよということでしょう。ということで基のアルゴリ

    Pythonで基本のアルゴリズムを書いてみた - Something Beyond
    pipehead
    pipehead 2015/01/05
    線形探索法 (リニアサーチ), 二分探索法 (バイナリサーチ), ハッシュ探索法, 単純選択法 (選択ソート), 単純交換法 (バブルソート), 単純挿入法 (挿入ソート), クイックソート, エラトステネスのふるい, ユークリッドの互除法
  • 簡単な画像の類似度計算手法「Average Hash」 » Untitled Blog

    画像の類似度を計算する方法を調査していたところ、面白い手法を紹介している方がいたので、この場でシェアしたいと思います。 この手法は「Perceptual Hash」という、「比較可能なハッシュ」を生成するための一手法です。 一般的にMD5やSHA1などのハッシュ値は、1バイトでもデータが違えば、まったく違うハッシュ値を返してきますが、「Perceptual Hash」は似たようなデータには似たようなハッシュ値を返してきます。 元ネタのブログによれば、これから紹介する手法のことを、ブログのオーナーであるDr. Neal Krawetzさんは「Average Hash」と呼んでいるようです。 元ネタのブログ記事は、以下のリンクからたどることができます。 Looks Like It – The Hacker Factor Blog いたってシンプルな手法ではありますが、例えば高速で「それなりの精

  • すごい乱数生成アルゴリズム「xorshift」 - Pashango’s Blog

    みなさん、こんにちは、今回は乱数の話です。 特に複数機種でのコンシューマ機でゲームを開発をしていると、機種間で乱数値を統一するために乱数生成アルゴリズムを自作しますよね。 そこでよく使われるアルゴリズムが「線形合同法」です、内容は至って簡単で、以下の漸化式を使います。 A,B,Mは定数で、どの値が入るかは処理系依存です。 例えばUnixなどの処理系ではA=1103515245,B=12345,M=2147483647などが入ります。 C言語ですと以下のようになります。 static unsigned int x=1; void srand(unsigned int s) { x=s; } unsigned int rand() { x=x*1103515245UL+12345UL; return x&2147483647UL; } この「線形合同法」は計算が簡単で高速ですから、いろいろな環

    すごい乱数生成アルゴリズム「xorshift」 - Pashango’s Blog
    pipehead
    pipehead 2009/07/18
    冒頭で線形合同法のかんたんな説明
  • シェルソート - 理想のユーザ・インターフェイスを求めて

    挿入ソートのコードを改良してシェルソートのコードを作成した。 正しく動作することは確認したが、自分にとっては実装するには複雑すぎてコードを見ただけでは正しいかどうか判断が難しい。アルゴリズムとしては明快なのであるが...。try and errorでようやく正しい答えを得ることができた。 """ Shell sort Aug. 09, 2007 """ data = [2,15,23,40,56,1,12,54,27,6,3,5,67,87,22,38,92] print data dsep = len(data)/2 while 1: for N in range(1, dsep): for i in range(N, len(data), N): tmp = data[i] j = i while tmp < data[j-N] and j>=N: data[j] = data[j-N

    シェルソート - 理想のユーザ・インターフェイスを求めて
  • 挿入法 - 理想のユーザ・インターフェイスを求めて

    ついでに挿入法も試す。左から順番に比較してゆき、挿入する位置が確定するまで並んでいるデータを右へずらす。 """ insertion sort Aug. 07, 2007 """ data = [15, 23, 3, 56, 22, 9, 1, 3, 20, 11] print data for i in range(1,len(data)): tmp = data[i] j = i while tmp < data[j-1] and j>=1: data[j] = data[j-1] j -=1 data[j]=tmp print data

    挿入法 - 理想のユーザ・インターフェイスを求めて
  • 選択法 - 理想のユーザ・インターフェイスを求めて

    バブルソートと似た整列アルゴリズムの選択法も試してみる。正常に動作することを確認。今回はfor文を2回使用した。 """ selection sort ver.1 Aug.07, 2007 """ value = [6,2,4,9,7,1,0,3,8,10,1,5] for i in range(0, len(value)-1): min = i for num in range(min+1, len(value)): if value[min] > value[num]: min = num dummy = value[min] value[min] = value[i] value[i] = dummy print value

    選択法 - 理想のユーザ・インターフェイスを求めて
  • バブルソート - 理想のユーザ・インターフェイスを求めて

    バブルソートを実行するプログラムをPythonで作成する。精錬されればもっとエレガントに書けるのだろうが、とりあえず正常に動作することは確認した。 """ bubble sort ver.1 Aug. 7, 2007 """ height = [178, 175, 173, 165, 179, 155, 182, 177] nmax = len(height)-1 while nmax >=2: for num in range(0,nmax): if height[num] > height[num+1]: dummy = height[num] height[num] = height[num+1] height[num+1] = dummy # print num, height nmax = nmax-1 print height

    バブルソート - 理想のユーザ・インターフェイスを求めて
  • 1