2019年10月24日木曜日

学習環境

解析入門(上) (松坂和夫 数学入門シリーズ 4) (松坂 和夫(著)、岩波書店)の第6章(関数の近似、テイラーの定理)、6.1(テイラーの定理)、問題3の解答を求めてみる。



    1. 問題の仮定が、 f は閉区間

      a , b

      で微分可能で連続である。

      また、

      f a < 0 , f b > 0 f ' x δ 1 > 0

      なので狭義単調増加である。

      このことと 中間値の 定理より、

      f δ = 0 a < δ < b

      を満たす

      δ

      がただ1つ 存在する。

      (証明終)


    2. f ' b n b n + 1 = f ' b n b n - f b n f ' b n b n + 1 - b n + f b n = 0

      よって、 問題の斬化式によって定義される数では、関数 f の

      b n , f b n

      における接線と x 軸との交点の座標が

      b n + 1 , 0

      であるという幾何学的意味をもつ。


    3. 問題の仮定

      f ' x δ 1 > 0

      より、 f は凸関数である。

      このことと、 (b) より、

      ξ < b n + 1 < b n

      よって数列は強い意味で単調減少して、収束する。また、 c に収束するとすれば

      c = c - f c f ' c f c f ' c = 0 f c = 0

      よって、

      c = ξ lim n b n = ξ

      である。

      (証明終)


    4. テイラーの 定理より、 ある

      ξ < c n < b n

      が存在し、

      f ξ = f b n + f ' b n ξ - b n + f ' ' c n 2 ξ - b n 2 0 = f b n - f ' b n b n - ξ + f ' c n 2 b n - ξ 2

      を満たす。

      両辺を

      f ' b n

      で割ると、

      0 = f b n f ' b n - b n - ξ + f ' ' c n 2 f ' b n b n - ξ 2 b n - f b n f ' b n - ξ = f ' ' c n 2 f ' b n b n - ξ 2 b n + 1 - ξ = f ' ' c n 2 f ' b n b n - ξ 2

    5. 問題の仮定と(d)より、

      0 < b n + 1 - ξ = f c n 2 f ' b n b n - ξ 2 δ 2 2 δ 1 b n - ξ 2 = A b n - ξ 2

      また、

      0 < b 2 - ξ A b 1 - ξ 2 = 1 A A b 1 - ξ 2 0 < b n + 1 - ξ A b n - ξ 2 A 1 A A b 1 - ξ 2 n - 1 2 = 1 A A b 1 - ξ 2 n

      よって 帰納法により 成り立つ。

      (証明終)

コード

Python 3

#!/usr/bin/env python3
from sympy import pprint, symbols, Derivative, solve, plot, sqrt

print('4.')

x = symbols('x')
f = x ** 2 - 2
f1 = Derivative(f, x, 1).doit()
b1 = 3


def b(n):
    if n == 1:
        return b1
    t = b(n - 1)
    return t - f.subs({x: t}) / f1.subs({x: t})


bs = [b(n0) for n0 in range(1, 11)]
for i, b0 in enumerate(bs, 1):
    print(f'{i}: {float(b0)}')

print(float(sqrt(2)))

fs = [f1.subs({x: b0}) * (x - b0) + f.subs({x: b0}) for b0 in bs[:3]]
p = plot(f, *fs,
         (x, 1, 3),
         ylim=(-1, 7),
         show=False,
         legend=False)

colors = ['red', 'green', 'blue', 'brown', 'orange',
          'purple', 'pink', 'gray', 'skyblue', 'yellow']

for o, color in zip(p, colors):
    o.line_color = color

p.show()
p.save('sample4.png')

入出力結果(Zsh、cmd.exe(コマンドプロンプト)、Terminal、Jupyter(IPython))

% ./sample4.py
4.
1: 3.0
2: 1.8333333333333333
3: 1.4621212121212122
4: 1.4149984298948028
5: 1.4142137800471977
6: 1.4142135623731118
7: 1.4142135623730951
8: 1.4142135623730951
9: 1.4142135623730951
10: 1.4142135623730951
1.4142135623730951
%

0 コメント:

コメントを投稿