kajibo.com

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.zerosobjectになるようにしてある。遊ばない場合は不要。


読者に言える形でこのMyClassを利用する具体例を説明する突破口をようやく見つけたのだが、突破口なだけで僕はどう書けばいいか理解していないので、まあ来年のAdvent Calendarに期待やね。

コメントを投稿

注意事項
  • 承認を受けるまでコメントは公開されません。
  • 非公開を希望した場合、コメントは公開されません。

プロフィール

カテゴリ

未実装