2023年12月19日
今日の活動
語ることがない。強いて言えば、ロースカツに100円足して味噌を追加し、「味噌追加に100円って良い値段してはるな~」と思いながら食べてたことぐらいか。最初から味噌がかかってたらわかるけど、タルタルソースみたいなノリで味噌がついてくるだけだしな~。
と、頼むときは考えてたが、食べてたらどうでもよくなった。味噌はうめえ。
今日のわんこ
お風呂から上がったら手と足を隠して寝てた。寒いのかな。
Advent Calendar 19日目
もうここまできたらおさらいは不要だ。
今までの話はテイラー展開が絡んでたということは匂わせ続けてきた通りである。12/11の再掲だが、
\(f(x) = a_0 + a_1(x-x_o) + a_2(x - x_o)^2 + \cdots \)
\(g(x) = b_0 + b_1(x-x_o) + b_2(x - x_o)^2 + \cdots \)
\([a_0, a_1, a_2][b_0, b_1, b_2] = [a_0b_0, a_1b_0+a_0b_1, a_2b_0+a_1b_1+a_0b_2]\)
としていた。
では、\(f'(x)\)はこうなるはずである。
\(f'(x) = a_1 + 2 a_2(x - x_o) + \cdots \)
つまり、こうなりそうだ。
\(\partial[a_0, a_1, a_2] = [a_1, 2a_2, 0]\)
長さは変わらないように0で埋めた。これはかけ算よりコードを書くのは簡単そうだ。
# 今までの続き
def partial(self):
new_arr = np.zeros(len(self.arr))
new_arr[:-1] = self.arr[1:] * np.arange(1, len(self.arr))
return MyClass(new_arr)
となると、積分も考えたくなるよね。
\(\int f(x) = a_0 x + a_1/2(x-x_o)^2 + a_2/3(x - x_o)^3 + \cdots \)
\(\int [a_0, a_1, a_2] = [0, a_0, a_1/2]\)
積分定数が必要な場合はなんか適当に足してくれ。
def integrate(self):
new_arr = np.zeros(len(self.arr) + 1)
try:
new_arr[1:] = self.arr / np.arange(1, len(self.arr) + 1)
except TypeError:
new_arr = new_arr.astype(object)
new_arr[1:] = self.arr / np.arange(1, len(self.arr) + 1)
return MyClass(new_arr[:-1])
明日最終回でsympyを使って遊ぶためにTypeError
が出た場合はnp.zeros
をobject
になるようにしてある。遊ばない場合は不要。
読者に言える形でこのMyClassを利用する具体例を説明する突破口をようやく見つけたのだが、突破口なだけで僕はどう書けばいいか理解していないので、まあ来年のAdvent Calendarに期待やね。
コメントを投稿
注意事項- 承認を受けるまでコメントは公開されません。
- 非公開を希望した場合、コメントは公開されません。