- 課題
-
C1 x2−C2 sin( x )=0 の解のうち,
0より大きいものを
二分法、はさみうち法、または ニュートン法を使って
精度 10-6 で求めてみよう。
C1 は 学生番号 うしろから3桁め、C2 は 学生番号の 最後2桁
例:2012161 ならC1 は1、C2 は61
|
-
実習のヒント こんな問題の時は....
-
まず f(x)= C1 x2−C2 sin(x)
のグラフをなるべく正確に描き,
2,3箇所(x=π や π/2)の値を計算して書きこんでおきます。
解がどのあたりにあるか,だいたい見当をつけましょう。
グラフは手書きでも、gnuplotでも、Excelなどを使ってもいいです
Excelでグラフを書くときは
電卓で計算するときは、角度表示をradian に直すのを忘れないように!
関数の部分のプログラムも自作し、関数の1行目をコピーして
int main()の前にプロトタイプ宣言してください。
c言語で
sin( )やcos( )やabs( )など数学関数を使う場合は<math.h>もincludeし、
コンパイルの時にはオプションとして -lmを付けて
[例] gcc kadai1.c -lm のようにすればOK。
xm を計算した直後に、 xm と f(xm) を出力しておくと、
解が収束していく様子がわかって実感がわきますよ!
-
二分法を使う時のHint
ニュートン法を使う時のHint
提出物の書き方
|
-
二分法、ニュートン法 採点基準
-
(1) グラフを描いて、計算の範囲の見当をつけた(1点)
(2) x=xaにおける式の値f(xa)とx=xbにおける式の値f(xb)の符号が逆(1点)
(3) その区間でグラフが連続で、解が1つだけあることを確かめた (1点)
(4) 初期値の設定が適切 (1点)
二分法: f(xa)とf(xb)の符号が反対になるよう
ニュートン法:初期値と解の間に「変曲点」「極大,極小値」をはさまない
(5) 計算方法が正しい (1点)
(6) 計算の終了条件が正しい (1点)
(7) 計算が収束している(50回も繰り返すようならおかしい) (1点)
(8) 問題に対する答えをちゃんと書いている「解はx=.....」 (1点)
(9) 解の精度が正しく書いてある (1点)
(10) 式に代入して0になるか検算し、得られた解が適切か書いてある(1点)
(合計10点)
|
↑「プログラムが走ってなんか数字が出た」だけでは不十分なのが分かりますね
|