2023年12月14日
今日の活動
ハイストレスな仕事が終わってよかったよかった。
今日のわんこ
リビングの扉の隙間から僕の帰りを確認すると、撫でられるために座椅子の上に移動してた。現金な犬である。
昨日の活動
XのAPIがうまく行かない原因、URL間違えてたからだった。4ヶ月考えてそんなオチかよ。
Advent Calendar 14日目
明日夜遅い予定なので休むかもしれない。
おさらい。ここまでならただの算数で済むんだけどな。
\([a_0, a_1, a_2] + [b_0, b_1, b_2] = [a_0+b_0, a_1+b_1, a_2+b_2]\)
\(t[a_0, a_1, a_2] = [ta_0, ta_1, ta_2]\)
\([a_0, a_1, a_2] \times [b_0, b_1, b_2] = [a_0b_0, a_1b_0+a_0b_1, a_2b_0+a_1b_1+a_0b_2]\)
\(1/[a_0, a_1, a_2]= [\frac{1}{a_0}, \frac{-a_1}{a_0^2}, \frac{-a_0a_2+a_1^2}{a_0^3}]\)
\(\sqrt{[a, b]} = [\sqrt{a}, \frac{b}{2\sqrt{a}}]\)
- 配列の長さがnで、配列の最初が0のとき、n乗すると0になる
さて、ルートのテイラー展開だ。
\(\sqrt{a+x} = a + \Sigma_{i=1}^{\infty}\begin{pmatrix}1/2 \ i\end{pmatrix}x^ia^{(1/2-n)}\)
おい!このブログでどうやって縦に並べて二項級数を書けばいい?!書き方わかんねえが\(\begin{pmatrix}1/2 \ i \end{pmatrix}\)は二項級数を表してる。
僕の頭は高校で止まってるから組み合わせのときにでてきた\(_nC_r\)しかわからないんだが、nって分数取れるんか?!わかんねえが、scipyに関数はあるらしいので信じて計算を進めよう。
\(\sqrt{[a_0, a_1, \cdots a_{n-1}]} = \sqrt{[a_0, 0, \cdots, 0] + [0, a_1, \cdots a_{n-1}]} \)
\(= \sqrt{a_0} + \Sigma_{i=1}^{\infty}\begin{pmatrix}1/2 \ i\end{pmatrix} [0, a_1, \cdots a_{n-1}]^i a_0^{(1/2-n)} \)
\(= \sqrt{a_0} + \Sigma_{i=1}^{n-1}\begin{pmatrix}1/2 \ i\end{pmatrix} [0, a_1, \cdots a_{n-1}]^i a_0^{(1/2-n)} \)
またn乗以上は0であることを利用した。
import scipy.special as sc
class MyClass:
__array_priority__ = 2
def __init__(self, arr):
self.arr = np.array(arr)
# 中略
def __array__(self):
return self.arr
def __array_wrap__(self, out_arr, context=None):
if context[0] is np.sqrt:
new_MyClass, d_MyClass = self._divided_differences()
new_MyClass.arr[0] = np.sqrt(new_MyClass.arr[0])
for i in range(1, len(self.arr)):
new_MyClass = new_MyClass + sc.binom(0.5,i) * (d_MyClass**i) * (self.arr[0]**(1/2-i))
return new_MyClass
めでたしめでたし。__array_priority__= 2
は「int + MyClass」はMyClass.__radd__が動いてくれたのに「np.int + MyClass」はnp.intが持つaddが優先的に動く。のを防ぐという意味を持つ。型の扱いが適当なのが悪いが、僕の人生を型の定義で費やしたくないので仕方ない。
せっかくなのだから今まで散々カッコで遊んできた内容を使った応用例を出したいのだが、例が自分の仕事でやってる内容しか思い浮かばずあまりよろしくない。更には検索避けの意味を含めて意図的に今取り扱ってる内容の一般名詞を伏せている。まあ、テイラー展開された式同士の計算を簡単なプログラムで計算することが出来るんだというメリットを感じてほしい。
今年のクリスマスは早くなると聞いているのでそれに合わせて次回が最後になるのだが、冒頭に書いたとおり、明日がクリスマスか来週までクリスマスが延期になるかはわからない。
コメントを投稿
注意事項- 承認を受けるまでコメントは公開されません。
- 非公開を希望した場合、コメントは公開されません。