2021年度「数値解析」のページ

お知らせ

2021年8月18日
2021年7月30日
2021年7月29日
2021年6月24日
2021年5月28日
2021年5月21日
このところ、毎週水曜の10:00から鴨研究室のB4ゼミをオンラインで行っています。始まるちょっと前に乱入してもらえば、質問対応などが可能です。この授業と同じミーティングルームです。
2021年4月30日
2021年4月22日

4月23日の対面授業はG204G301で行います。

4月23日のオンデマンド授業は、このページの「2021年4月23日出題」を各自解いてください。授業時間中はZoomをつなぎっぱなしにして、チャットか音声で質問を受け付けます。それ以降は、質問専用メールアドレスを設けます。URLとメールアドレスは大学のコロナ関連のページからリンクされた「授業一覧」ページに載せます。

2021年4月16日

4月16日の対面授業はG204で行います。

4月16日のオンライン授業はWebexで行います。URLは xxx です。4月23日からはZoomに移行の予定です。

2021年4月9日
シラバスには『数値計算の常識』を教科書と指定していますが、生協の教科書一覧には載せていません。教科書を必要とする人は、生協に発注するなどして入手してください。なお、授業は教科書を持っていることを前提とはしません。
2021年4月6日
『数値計算の常識』を入手できた方は、授業開始までに1〜3章を読んでおくと良いでしょう。 ただし、講義は読んでいることを前提としたものとはしません。

日程

2021年4月9日(金) 講義 G204 (済) (録画)
2021年4月16日(金) 講義 G204 (済)
2021年4月23日(金) 演習 G301 (済)
2021年4月30日(金) 講義 G204 (済) (録画)
2021年5月7日(金) 演習 G301 (済)
2021年5月14日(金) 講義 G204 (済) (録画)
2021年5月21日(金) 演習 G301 (済)
2021年5月28日(金) 講義 G204 (済) (録画)
2021年6月4日(金) 演習 G301 (済)
2021年6月11日(金) 講義 G204 (済) (録画)
2021年6月18日(金) 演習 G301 (済)
2021年6月25日(金) 講義 G204 または Zoom (済) (録画)
2021年7月2日(金) 演習 G301 または Zoom (済)
2021年7月9日(金) 講義 G204 (済) (録画)
2021年7月16日(金) 演習 G301 (オンラインと対面の選択の予定) G301 または Zoom
2021年7月30日(金) 試験 G204 (予定)

資料

練習問題

2021年4月9日出題
  1. \(\sum_{n=1}^{2^{28}}(1/n^2)\) を計算するプログラムを、 以下のそれぞれのアルゴリズムを実装する形で書き、実行し、誤差の考察をせよ。 それぞれ、floatdoubleで実装して、違いについても実験・考察せよ。

    1. 初項から正順に足していくアルゴリズム
    2. 絶対値の小さなものから順に足していくアルゴリズム
    3. 再帰的に配列の部分和を約半分ずつ分割して足していくアルゴリズム
    4. カハンのアルゴリズム
    ヒント1
    \[ \sum_{n=1}^{\infty}\frac{1}{n^2} = \frac{\pi^2}{6} \]
    ヒント2
    \(2^{28}=16^7\)であるので、\(2^{28}\)はCでは 0x10000000 と書ける。
2021年4月23日出題
  1.   \[ \begin{aligned} f(-2) &= 1/4, \\ f(-1) &= 1/2, \\ f(0) &= 1, \\ f(1) &= 2, \\ f(2) &= 4 \end{aligned} \] から以下のそれぞれの補間法で\(f(-3)\), \(f(-1/2)\), \(f(3/2)\), \(f(10)\)の近似値を計算し、\(f(x)=2^x\) との誤差を評価せよ。

    1. ラグランジュ補間
    2. ニュートン補間
2021年5月7日出題
  1. 浮動小数点数 \(a\) を入力し、\(x\) についての方程式 \(xe^x = a\) の実数解を出力するプログラムを書け。ただし、\(a\gt0\) と仮定してよい。(仮定しないプログラムを書いたらかっこいい)
    1. 二分法を用いよ。
    2. ニュートン法を用いよ。
    3. 簡易ニュートン法を用いよ。
    ヒント1

    \(a\gt0\) と仮定し、\(f(x)=xe^x-a\) とおく。 このとき、以下が成り立つ。

    • \(f(0)\lt0\) かつ \(f(a)\gt0\) が成り立つ。
    • \(x\gt0\) のとき \(f'(x)\gt0\) かつ \(f''(x)\gt0\) が成り立つ。

    したがって、解は区間\((0,a)\)にちょうど一つあることと、\(f\)は\((0,+\infty)\)で単調増加かつ下に凸であることがわかる。

    ヒント2

    ヒント1の事実を利用すると、初期値を以下のように選ぶとうまくいくことがわかる。

    二分法の場合
    初期区間を\((0,a)\)にとる。
    ニュートン法の場合
    初期値を\(a\)にとる。
  2. 浮動小数点数 \(a\) を入力し、\(x\) についての方程式 \(x^3-3ax^2-3x+a = 0\) の実数解をすべて出力するプログラムを書け。ただし、\(a\gt0\) と仮定してよい。(仮定しないプログラムを書いたらかっこいい)
    1. 二分法を用いよ。
    2. ニュートン法を用いよ。
    3. 簡易ニュートン法を用いよ。
    ヒント1

    \(f(x)=x^3-3ax^2-3x+a\) とおくと \(a\gt0\) のとき以下が成り立つ。 \[ \begin{gathered} f(-2)\lt0, \\ f(0)\gt0, \\ f(1)\lt0, \\ f(a)\lt0, \\ f(3a+2)\gt0. \end{gathered} \]

2021年5月21日出題
  1. LU分解法をCの関数として実装したプログラムを他の言語に移植せよ。
2021年6月4日出題
  1. 三角形\(ABC\)の外心を\(O\)とし、外接円半径を\(r_O\)とする。外心は頂点から等距離にあることから、\[\tag{☂︎}\overline{OA}^2=\overline{OB}^2=\overline{OC}^2={r_O}^2 \] が成り立つ。 頂点と外心の座標を \(A=(x_A,y_A)\), \(B=(x_B,y_B)\), \(C=(x_C,y_C)\), \(O=(x_O,y_O)\) とおくと、(☂︎)は \[ \tag{☂︎☂︎} \left\{ \begin{aligned} (x_O-x_A)^2+(y_O-y_A)^2-{r_O}^2 &= 0 \\ (x_O-x_B)^2+(y_O-y_B)^2-{r_O}^2 &= 0 \\ (x_O-x_C)^2+(y_O-y_C)^2-{r_O}^2 &= 0 \end{aligned} \right. \] と書ける。 したがって、(☂︎☂︎)を\(x_O\)と\(y_O\)と\(r_O\)の方程式とみなして解くと、三角形の頂点の座標から外心の座標と外接円半径を計算できる。

    1. (☂︎☂︎)にニュートン法を適用して数値的に解くプログラムを書け。また、簡易ニュートン法を適用して数値的に解くプログラムも書け。
    2. (☂︎☂︎)を代数的に解いてその結果を実装したプログラムを書け。
    ヒント

    aは、 \[ \begin{gathered} x^{(n)}= \begin{bmatrix} x_O^{(n)} \\ y_O^{(n)} \\ r_O^{(n)} \end{bmatrix} \\ f(x_O, y_O, r_O)= \begin{bmatrix} (x_O-x_A)^2+(y_O-y_A)^2-{r_O}^2 \\ (x_O-x_B)^2+(y_O-y_B)^2-{r_O}^2 \\ (x_O-x_C)^2+(y_O-y_C)^2-{r_O}^2 \end{bmatrix} \end{gathered} \] とおいて、多変数のニュートン法を適用すればよい。

2021年6月18日出題
  1. 以下のそれぞれの数列について、その極限値を素朴に計算するプログラムとエイトケン加速を適用するプログラムとエイトケン加速を2回適用するプログラムを書き、収束の速さを比較せよ。

    1. \[ \tag{✈︎} \begin{aligned} x_0 &= 1 \\ x_{n+1} &= 1 + \frac{1}{x_n} \end{aligned} \]
    2. \[ \tag{⚓︎} \sum_{k=1}^{2^n} \frac{1}{k^2} \]
2021年7月2日出題
  1. \[ \int_0^1 \sqrt{1-x^2}\,dx \] を数値積分で計算するプログラムを書け。 区間分割数をいろいろと変えて、精度の変化を観測せよ。
    1. 台形公式を使って計算せよ。
    2. シンプソン公式を使って計算せよ。
  2. \[ \int_0^1 \frac{dx}{1+x} \] を数値積分で計算するプログラムを書け。 区間分割数をいろいろと変えて、精度の変化を観測せよ。
    1. 台形公式を使って計算せよ。
    2. シンプソン公式を使って計算せよ。
  3. \[ \int_0^1 \frac{dx}{1+x^2} \] を数値積分で計算するプログラムを書け。 区間分割数をいろいろと変えて、精度の変化を観測せよ。
    1. 台形公式を使って計算せよ。
    2. シンプソン公式を使って計算せよ。
2021年7月16日出題
  1. 以下の常微分方程式を以下のそれぞれの方法で\(0\le t\le 2\)の範囲で数値的に解き、精度を比較せよ。 \[ \frac{dx}{dt}=2xt,\qquad x(0)=1. \]

    1. オイラー法
      1. 刻み幅\(0.1\)
      2. 刻み幅\(0.01\)
      3. 刻み幅\(10^{-3}\)
      4. 刻み幅\(10^{-4}\)
      5. 刻み幅\(10^{-5}\)
      6. 刻み幅\(10^{-6}\)
    2. 修正オイラー法
      1. 刻み幅\(0.1\)
      2. 刻み幅\(0.01\)
      3. 刻み幅\(10^{-3}\)
      4. 刻み幅\(10^{-4}\)
      5. 刻み幅\(10^{-5}\)
      6. 刻み幅\(10^{-6}\)
    3. ルンゲ・クッタ法
      1. 刻み幅\(0.1\)
      2. 刻み幅\(0.01\)
      3. 刻み幅\(10^{-3}\)
      4. 刻み幅\(10^{-4}\)
      5. 刻み幅\(10^{-5}\)
      6. 刻み幅\(10^{-6}\)

この常微分方程式は解析的に解ける


奈良女子大学生活環境学部情報衣環境学科生活情報通信科学コース