ニュートン法
方程式 $f(x) = 0$ の解を求める方法として代表的なものに、二分法とニュートン法があります。ニュートン法は、関数 $y=f(x)$ が単調連続で変曲点がなく、かつ $f(x)$ の導関数が求められるときに使えます。
ニュートン法による解法は、次の通りです。
- ある $x$ における接線を求め、その $x$ 軸との交点を求める。
- その $x$ 軸との交点の $x$ 座標を新たなxとし、その $x$ における接線を求める。
というのを繰り返します。
課題49:ニュートン法
方程式 $e^x - 3 x = 0$ を、ニュートン法を用いて解いてください。ただし、計算は x = 0
からスタートし、$\epsilon < 0.00001$ としたとき以下の収束条件(のいずれか)を用いるものとします。
- $|\ f(X_n)\ | < \epsilon$
- $|\ X_{n+1} - X_{n}\ | < \epsilon$
- $|\ (X_{n+1} - X_{n})\ /\ X_{n}\ | < \epsilon$
- $|\ f(X_{n+1}) - f(X_{n})\ | < \epsilon$
また、numpy
, scipy
, sympy
などを使うと便利だが、この問題は二分法の理解とPythonでの実装の練習を兼ねているため、これらのライブラリを用いないこと。
# アウトプット例
0.6190612833553127
-
上記の収束条件を変更したときにアルゴリズムの挙動がどう変化するか答えてください。
-
同様に方程式 $x^2 - 2 x + 1 = 0$ の解をニュートン法で求めてください。
-
同様に方程式 $e^x sin x - 2 x = 0$ $(0 < x < π)$ の解をニュートン法で求めてください。
課題提出方法
-
基本的にGoogle Colaboratoryを用いてプログラミングしてください。どうしても Google Colaboratory を用いることができない場合のみ、Jupyter Notebook または Jupyter Lab を用いてください。
-
課題1つごとに、ノートブックを新規作成してください。1つのノートブックで複数の課題を解かないでください。
-
ノートブックを新規作成すると「Untitled.ipynb」のような名前になりますが、それを「学籍番号・氏名・課題番号」のような名前に変更してください。
-
質問・感想・要望などございましたらぜひ書き込んでください。
-
もし課題を解くにあたって参考になったウェブサイトがあれば、それについても触れてください。
-
課題を計算し終わった ipynb ファイルを提出するときは、指定したメールアドレスに Google Drive で共有する形で授業担当者に提出してください。