Remrinのpython攻略日記

python3に入門しました。python3についてあれこれとサンプルコードとか。

アルゴリズム

ニュートン法

ニュートン法で平方根を求める。 ・まずは√2 def a(x): return (x**2 + 2) / (2 * x) x = 2 # 初期値(0以外の値) for i in range(6): x = a(x) print(x) # 1.5 # 1.4166666666666667 # 1.4142156862745099 # 1.4142135623746899 # 1.414213562373095 # 1.4…

遺伝的アルゴリズム

遺伝的アルゴリズムの例 ①初期の遺伝子プール(個体群)を決める ②一定確率で遺伝子を交差させ、個体数を2倍にする ③一定確率で突然変異を起こす ④重みづけをして評価し、生き残る個体を選ぶ ⑤一定回数または目標値に達するまで②に戻る 16桁の2進数の数を正解…

素数

素数について。 素数生成のジェネレータ def gen2(start=2, stop=1000000): pr = max(1, start - 1) while True: while pr < stop: pr += 1 if all(pr%x != 0 for x in range(2, int(pr**0.5) + 1)): break yield pr g = gen2() for i in range(10): print(n…

フィボナッチ数列

フィボナッチ数列について。 def fib(n): a, b = 0, 1 for i in range(n): a, b = b, a + b return b print([fib(i) for i in range(10)]) # [1, 1, 2, 3, 5, 8, 13, 21, 34, 55] メモ化した場合 fib_memo = {} def fib(n): if n < 3: return 1 if n not in …

最小二乗法

最小二乗法について。 (2, 3), (4, 7), (9, 11)の3点をデータとして、最小二乗法を1次式で行う場合。 とすると、 これの最小値を求めることになり、偏微分をして となるベクトルが係数ベクトルとなる。 # coding: utf-8 import numpy as np import matplotli…

バーンスレイのシダ

○バーンスレイのシダ 4種類の変換をそれぞれ、85%、7%、7%、1%の確率で選んでいきます。 # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt def transform1(p): x, y = p[0], p[1] x1 = 0.85*x + 0.04*y y1 = -0.04*x + 0.85…

pythonで円周率を求める

pythonで円周率を求めるアルゴリズム ○ライプニッツの方法 収束が遅い。 100万回計算して、6桁くらい。 pi4 = 0 for i in range(1000000): pi4 += (1 / (i * 4 + 1) - 1 / (i * 4 + 3)) print(pi4 * 4) # 3.141592153589902 ○区分求積を使う。 収束が速い。 …

pythonでクイックソートのアルゴリズム

pythonでクイックソートのアルゴリズムを考えてみた。

三角形の内接円、外接円、面積、角度

pythonで外接円の中心と半径を求めるプログラムを作ってみた