数値解析 課題1 ( 10月19日出題 )

課題

  1. ニュートン法を用いてケプラー方程式
    $f(x)=4\sin(x) -2x -1 = 0$
    の解の近似値を求めるプログラムを作成せよ ( 解は3個ある ) 。
  2. (1) のプログラムで初期値 $x_0$ を $-10$, $-9$, $\cdots$, $10$ としてそれぞれ実行し、 次のような事柄について考察せよ。
    • 収束するか否か
    • 収束する場合、
      • 3つの解のいずれに収束するか
      • $x_n$ の動く範囲が解の周辺に留まっているか

注意

  • C言語で float 型、double 型の絶対値を返す関数は abs() ではなく fabs()。
  • 三角関数を用いるには、C言語ならば math.h を include する必要があり、 python ならば math を import する必要がある。
  • プログラムを共同製作した場合はその旨を必ず明記すること。
  • レポートには以下の項目を含めること :
    • 計算内容
    • プログラムリスト
    • 実行結果 ( 出力を全て載せるのではなく、適切にまとめること。)
    • 考察

提出方法

  • メールにて shiota@is.kochi-u.ac.jp 宛て。
  • 件名は [自分の学籍番号] 数値解析課題1
  • テキストでも、WORD, PDF 等のドキュメントでも可。

提出期限

  • 11月2日(水) 10:20am
  • 原則として締め切り厳守

課題プリント ( このページと同じ内容の pdf です。)

重要! プログラミング課題全般についての注意

  • この授業で課すプログラミング課題は、計算式として与えられたアルゴリズムを 自力でプログラムに翻訳する訓練 です。
  • パソコンの前で作業しますのですぐにサンプルプログラムを検索しに掛かる人がいますが、 いきなり人の書いたコードを見ても勉強になりません。 必要な変数の宣言、ループの組み方、条件判定等の設計を まず自分で 行ってください。
  • 自力でバグが取れないときは遠慮なく質問をしなさい。質問をしたからと言って点数を引くことはしません。
  • ネット上のサンプルプログラムをそのまま使った場合はコピー元が容易に特定できます。ゆめ、心得違いをしないでください。

今回の課題のヒントその1

$f(x)=4\sin(x) -2x -1 = 0$
の解の状態は

今回の課題のヒントその2

 今回の課題のプログラムは、たとえばこんな感じに書けばできます。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

double f(double x){
    return f(x) の式 ;
}

double df(double x){
    return f'(x) の式 ;
}

int main( void ){
    変数宣言
    初期値を設定する部分
    漸化式を計算するループ
    出力部分
    return 0;
}
ループは
while(継続条件){
    計算式たち
}
でも
do{
    計算式たち
}while(継続条件);
でも
for( ... ){
    計算式たち
    if(終了条件) break;
};
でもいいし、継続条件とは !(終了条件) のことです。 せいぜい 20-30 行のプログラムです。