技術メモ

役に立てる技術的な何か、時々自分用の覚書。幅広く色々なことに興味があります。

三角関数の公式を覚えるのに全く苦労しなかった話

三角関数の公式を覚えるのが大変だとよく言われるけれど、高校生の頃は実は全く苦労した記憶がないという話。というのも、単に回転行列を覚えるだけだったからだ。これさえ覚えておけばいい*1 これさえ覚えておけばちょっと計算するだけで加法定理や和積の定…

置換可能素数

以前の「Nが現れる素数」に続いて面白い素数が紹介されていた。*1 このような素数を求めてみた。 ルール <ルール> 素数Pに対して下の条件を満たすn(1,2,...9)が存在する。 1. Pの各桁の中にnを含まない。 2. Pの各桁をnで置換した数も全て素数になる。 (…

GCD, LCM with Python3

自分用のメモ Python3で最小公倍数(GCD)、最大公約数(LCM)を求める from functools import reduce def gcd(*numbers): def gcd(a, b): while b != 0: a, b = b, a % b return a return reduce(gcd, numbers) def lcm(*numbers): def lcm(a, b): return (a * …

nCk (mod m) の求め方 [n,kが凄く大きい場合]

大きいnに対してコンビネーションを求める 凄く大きいnに対してCombinationを求める時、例えばを求めようと思っても愚直に計算するにはプログラムで扱える桁数を超えてしまう。 そこで、mで割った余り(modular) を求めさせることがある。pythonで書いたので…

ffmpegを使って.m3u8(ストリーミング形式ファイル)の動画を.mp4形式で保存する

シェルスクリプトを書いた。 注意 使っていたffmpegのバージョンが少し古かった。最新版ではできない可能性もある。 ffmpeg version 2.8.4 Copyright (c) 2000-2015 the FFmpeg developers built with gcc 5.2.0 (GCC) スクリプト ファイルの名前は適当でい…

円周率素数 ネイピア数素数

3.14159265 と言われて何を思い浮かべるだろうか。 そう、円周率である。円周率と言えば、3.1415...と続く数なのは小学生でも周知の事実だが、 円周率を頭から数えたとき出てくる素数というのはあまり知られていないかもしれない。まず 3 は素数 31 も素数 3…

Nが現れる素数(N=1,2,3,4)

2が現れる素数という面白い素数が紹介されていた。 2が現れる素数 - INTEGERS昔せっかく高速素数判定器を作ったので、どうせならNが現れる素数を見つけてやろう!と思い立った。 プログラム (※プログラムはpython(2.7.12)で動作します)ルールとしては ①四…

2次元配列の特定の条件を満たす要素の中からランダムに選択【numpy】

「0~1の値を取る2次元配列があって、0.7以上の要素を持つインデックスの中からランダムにインデックスを取ってくる。」 こんなことをしたい時にnumpyを駆使すれば綺麗に書けたのでメモしておく。 例えばこんな配列(numpyのarray)があったとする import numpy…

slackbotでbotに投げられた画像をダウンロードする

slackbotでシステムを作ろうとした時に、botに投げた画像をいったん保存する方法がわからなかったので、記録しておく。 slackbot自体の始め方 slackbot自体の使い方は他のブログなどで詳しく紹介されているのでそちらを参考にしてほしい。 インストールはこ…

為替の分足CSVデータが無料でダウンロードできるサイト

こちらでダウンロードできるようだ。 2001年1月から最新(おそらく定期的に更新)までのデータを扱える。 1分足より長いスパンにする時は独自で整形しないとしないといけないかもしれない。 関連記事: OANDAのAPIを使ってリアルタイムでデータを取ってくる…

root権限なしでcmakeをインストールする

root権限がない状態でcmakeをインストールする時、ソースからビルドする。 gcc,g++,makeが必要になる。 手順としては以下の通り cmakeのソースをダウンロード,解凍 インストール先のフォルダを作成 ビルド、インストール (状況に応じて)PATHを通す(※PATHの…

倍プッシュの錯覚に騙されてはいけない(マーチンゲール法)

FXの業界には、ギャンブル性の強いバイナリーオプションという取引がある。 バイナリーオプションとは、1分後や10分後の相場について「上がる」か「下がる」かについてのみ予想する取引のことである。 そのバイナリオプションの取引で、必勝法と謳い人々をだ…

為替相場の値動きにウィナー過程を仮定するのはダメかもしれない

為替相場の値動きに本当にウィナー過程を当てはめていいんだろうか。 簡単に調べられそうだったので、ドル円相場で少し調べてみた。 結果から言うと、正規分布っぽくなくねって結論が出てしまった。※ウィナー過程…確率過程においてが平均0分散sの正規分布に…

FXを始めて、金融工学の触りを学んで感じたこと

FXに興味が出てきて、バーチャルトレードで短期投資をしてたんだけど、10万円くらい負けてもうやめてやろうかと思った。 それで、負けん気というか、儲けてる奴は何をしてるんだろうと思って色々調べていると金融工学の分野に辿り着いてしまった。勉強してい…

pythonで正規性の検定【コロモゴロフスミルノフ検定(KS検定)】

確率分布が正規分布に従うか調べたい、 二つの集団が同じ確率分布から得られたものか調べたい、 といった時に使うのが、コロモゴロフスミルノフ検定(Kolmogorov–Smirnov test) コルモゴロフ–スミルノフ検定(コルモゴロフ–スミルノフけんてい、英: Kolmogoro…

二項分布の極限が正規分布になることの証明【正規近似の証明】

二項分布の試行回数を無限大に大きくしていくと正規分布に近づくことが知られている。 しかし、その証明は意外と知られていない。(中心極限定理でも証明は可能ではあるが、回りくどすぎて初学者には不親切)やが出てくるのがどうしても不思議で、自分なりに…

直下のファイルを走査し一覧表示する [bash, python]

あるディレクトリの直下のファイルに対して巡回しながら処理したい時 シェルスクリプトとpythonでどうするか。 bash files="./hoge/*" for filepath in $files; do echo $filepath done ./hoge/1.txt ./hoge/2.txt のようにディレクトリごと表示される ファ…

pythonで完全数と友愛数と婚約数を求める

以前の記事の続きとして、せっかくなので友愛数・完全数・婚約数を求めてみたい。 約数関数(再掲) divisor(n)として約数関数を使うので、再掲しておく。 sympyを使う。 import sympy def divisor(n): factors = sympy.factorint(n) rst = 1 for i,j in fac…

sympyで素因数分解ができるからオイラー関数と約数関数を書いてみた

pythonのライブラリの一つsympyを使えば、簡単に素因数分解ができるということを知った。 import sympy sympy.factorint(1000) #{2: 3, 5: 3} ちなみに、因数分解も簡単にできる!! 凄い。 import sympy x = sympy.Symbol('x') eqn = x**2 - 3*x + 2 print(sy…

pythonで一元配置分散分析(one way ANOVA)

一元配置分散分析とは 「3つ以上の群があった時に、果たしてそれらの群の平均は等しいと言えるかどうか。」 という検定。 集団の分布が正規性を持つことが前提となっている。*1 ※すべての組み合わせペアでt検定を適用するのは間違いなので注意*2基本的な発想…

一発でlocalhostのwebサーバーを立てる便利エイリアス

web

Flaskで開発していたり、http通信が必要となるjsのライブラリを使っているとlocalhostのwebサーバーを立てたくなることがある。 そこで苦労の末辿り着いた便利エイリアスを紹介したい。 それがこれ alias httpserver="python -m SimpleHTTPServer& start chr…

リスト内を検索して該当するインデックスを全て返す (python)

a = [1,2,3,2,3,4,5,4,3,2,1] こんなデータがあった時、3がある場所を取ってきたいとする。 a.index(3) # 2 とすると最初のインデックスだけが返ってくる。 希望は全てを取ってくることなので、これではダメ。 じゃあどうするか。 index = [] for i,j in enu…

AlphaGOの自己対戦棋譜のsgfファイル取得

有志によるSGFファイル https://s3-us-west-1.amazonaws.com/apetresc-site/alphago_selfplay.zip (ソース:apetresc comments on AG vs AG Games 11 through 20 now available)コピペ用 wget https://s3-us-west-1.amazonaws.com/apetresc-site/alphago_s…

pandasで重複数をカウントする

pandasで重複数をカウントしたい時、 例えばこんなデータがあったとする。 import pandas as pd df = pd.DataFrame([['AA',100],['AA',200],['AA',200], ['BB',100],['BB',200]],columns=['x','y']) #--------------- # x y # 0 AA 100 # 1 AA 200 # 2 AA 20…

pythonでgraphvizの使い方(美しいツリー構造や状態遷移図の描画)

pythonで美しいグラフ構造を書くためのツール。pythonでグラフ構造を書くといえば、今有名なのはnetworkxだろう。 でもnetworkxは描画には特化していない。どちらかというと分析に使うツールだ。 特に、状態遷移図や木構造を書くのには向いていない。 そこで…

sshを介してファイルのやり取り(sftp)

sftpの使い方メモサーバーに入るのはSSHと同じ要領 sftp [サーバー名]でサーバーに入る。 exitでsftpを終了。 サーバーからローカルにファイル転送 ファイル転送 get [ファイル名] ローカルのディレクトリ操作 基本的に先頭に"l"をつけるだけ lls #localのls…

2次元のランダムウォーク(python)

import numpy as np import matplotlib.pyplot as plt time = 2000 state = np.zeros(2) orbit = np.zeros(2) for t in range(time): speed = 1 randomvec = np.random.random(2) - 0.5 randomvec *= speed/np.linalg.norm(randomvec) state += randomvec or…

pythonを使ってFitzHugh南雲方程式のnullclineを描く

pythonでヌルクラインを描く方法 いくつか方法があるようだけど、matplotlibとscipyを組み合わせる方法が良さそうだった。 FitzHugh南雲方程式 FitzHugh南雲方程式とは、一言でいうと神経細胞(ニューロン)の挙動を数理的に表した方程式のこと。ニューロン…

三目並べの全ての状態数とその遷移関係を数え上げるアルゴリズム

三目並べでとりうる盤面の状態数を数えてみた。 英語ではTicTacToeと言ってボードゲームAIの入門によく使われる題材だったりする。 ゲームの状態数はよく9マス×3状態で通りだとか最初は9通りで次の番は8通り…だから通りだとか言われるけれどどれも厳密な答え…

引数のあるコマンドをエイリアスに登録する方法(シェルスクリプト)

OS

引数のあるコマンドをエイリアスに登録したい時、調べたのでメモ 例えば、複数のサーバーが用意されていてSSHするサーバーを使い分けるみたいな時。 ssh USER@SERVER1.com -p 8888 ssh USER@SERVER2.com -p 8888 ssh USER@SERVER3.com -p 8888 ...みたいなコ…