2021-01-01から1ヶ月間の記事一覧
の近似によくスターリングの公式が用いられます。 これで十分なことも多いですが、もう少しよい近似を考えてみましょう。積分で近似して、 この差を取ると、 summationの中は、 をテイラー展開すると、 だから、summationの中は、 右辺第一項はリーマン・ゼ…
https://www.bousai.metro.tokyo.lg.jp/taisaku/saigai/1010035/1012790/index.html ここから辿ると、死亡情報が例えば、https://www.bousai.metro.tokyo.lg.jp/taisaku/saigai/1010035/1012790/1012818.htmlのように得られます。年代・性別・居住地・診断日…
もう一つ、これはC/C++で行列の掛け算を書いたことがある人にはよく知られていると思いますが、乗数の方の行列を転置すると速くなります。 もう一度C++のコードを見てみましょう。 Matrix C(H, Vec(W)); for(size_t i = 0U; i < H; ++i) { for(size_t j = 0U…
なぜC++で書いたライブラリは遅いのでしょう。 Pythonのコードは、 for i in range(H): for j in range(W): C[i][j] = int(sum(A[i][k] * B[k][j] for k in range(M)) % D) return C C++のコードは、 for(size_t i = 0U; i < H; ++i) { for(size_t j = 0U; j …
いよいよ本題、C++でMatrixの掛け算をするPythonのライブラリを作ります。まず、リストをstd::vectorに変換します。 PyObject *mul(PyObject *self, PyObject *args) { PyObject *obj1, *obj2; long D; if(!PyArg_ParseTuple(args, "OOl", &obj1, &obj2, &D)…
C++で簡単なPythonのライブラリを作ります。 整数同士を掛け算する関数です。さっそくコードを示します。 # setup.py from distutils.core import setup, Extension setup(name = 'mymath', version = '1.0.0', \ ext_modules = [Extension('mymath', ['myma…
PythonのライブラリをC++で作ります。 例えば、次のような問題を考えます。 H×Wの長方形があり、そこに1×2の長方形を隙間なく敷き詰めます。敷き詰め方は何通りあるでしょう。 2×3なら、の2通りです。 さて、この問題はどのように解くでしょう。この手の問題…