前期中の目的 方程式を解く 線型方程式 非線型方程式 (線型方程式 ないこと..) # 実際は、線型の場合も同じテクニックが利用できる 問題を解くならば非線型方程式の方がプログラムしやすい ( why ? ) ので、最初は非線型方程式 もちろん、非線型方程式の方が色々と難し 例:解の存在が保障されない sin X - α = 0 |α| <= 0 -> 解がある |α| > 0 -> 解がない ( 実数の範囲では.. ) 以下では、非線型方程式には解があると仮定して解く 線型方程式は、解の存在を示すことができる 解くための手順も存在する。 => 公式が使える 非線型方程式の方は、手順があるという保障がない => 反復法を利用する 「解く」こと 公式がある ( 線型方程式のクラーメルの公式、Gauss の消去法 ) => 公式に当て嵌める そうでない.. => f(x) = 0 という問題そのものを利用するしかない もし... (勝手に選んだ.. x1 が..) f(x1) = 0 (満す..) ならば.. x1 が解 そうだなければ... 幾つか xi を f に代入してみる その結果から解を予想 => Graph を書く サンプル点では正しいが.. => 間で何がおきるか解らない => 導関数を調べる.. o 二分法 f(x) が区間 [ x1, x2 ] で連続 f(x1)f(x2) < 0 => \exist x0 s.t x1 < x0 < x2 & f(x) = 0 # 実際は、[x1,x2] の間に奇数個の解がある。 # [中間値の法則] f(x1)f(x2) > 0 解の個数は偶数個 ( 0 個、つまりない場合も含める ) [アルゴリズム] f(x): given x1 < x2 & f(x1)f(x2) while ( | x2 - x1 | > ε ) { m = ( x2 - x1 ) / 2 if ( f(m)f(x1) > 0 ) { x1 = m } else { x2 = m } } # 32 bit 実数では、24 bit 仮数部が確定すればよいので # 24 回で Okey.. 本来、「解く」ためには、「解の存在」を示す所からはじまる => 二分法では、「解の存在」は仮定 # 狡い !! (数学的に..)一般に方程式を与えると解が存在するという保障は ないが、実用的 ( 物理上.. ) には、解があることが明かな場合 が多いので、十分役立つ。 この方法は、一つの解しか見付からない => 解は一つあれば、実用上はなんとかなることが多い.. # 代数方程式なら、次数を一つさげることができる.. 最初に、解のありそうな区間 [ x1, x2 ] を探す必要がある。 => これが結構大変 [特徴] 愚鈍 ( 遅い.. ) が、 => 収束が遅い 1 次収束 反復で解く場合 反復回数を n とすると 答の精度が n に比例する。 二分法 1 回実行すると 1 bit だけ定まる 確実 ( ロバスト.. ) => 確実に答が出てくる # cf. ニュートン法 ( 次回やる.. ) は、 # ロバストでない # 運が悪いと、解がでないことも.. # 二次収束 # 答の精度が n の自乗に比例する # # 回数 精度 # 1 1 # 2 2 # 3 4 # 4 6 # 5 16 # 6 32 # 倍々ゲーム ? ロバストな方法は、1 次収束の事が多い.. cf. [テキスト p.12] [二分法のアルゴリズム] 1. f(x1)f(x2) < 0 となる 区間 [ x1, x2 ] をみつける 2. 区間 [x1,x2] の中間点 x3 = (x1+x2)/2 での f の値 f(x3) を求める # これが 0 なら x3 が答 3. 両端の間数値の符号が異なる区間を次の区間とする f(x1)f(x3)<0 ならば x1 <- x3 そうでなければ x2 <- x3 繰り返し回数 n = 24 か |f(x3)| < ε 程度で終了 # ε の値は f(x) や応用目的で決定 # cf. 10~{-5} [例題] f(x) = x^2 - 2 [0,5] # 電卓でも Okey # コメントは不要 6/3 出題, 6/9 締切 : レポートは mail で提出 # 出題日の次の講義の日の前日が締切 To: fukui@ecc.math.cst.nihon-u.ac.jp Subject: 06/03 1111 Name Title ^^^^^ ^^^^ ^^^^ ^^^^^ | | | +- 適当な題名 (無くてもよい) | | +------ 本名 | +----------- 学生番号 +------------------ 出題日 ( 提出日でない !! ) 学生番号、出題日は半角で !! Cc: 自分の e-mail address stmXXXX@ecc.math.cst.nihon-u.ac.jp g13XXXX@edu.cst.nihon-u.ac.jp etc.. 本体: 内容を入れる ( 添付ファイルはしない.. ) => Cut & Past で行う 先頭に、プログラム 次、実行結果 最後に考察 # 三つの部分からなる ( 区別できるように.. ) o 気を付けること.. 空っぽの e-mail を送る人がいる.. 友達に送って、確かめてからにしよう mailer によって、「名前を付て保存」すると送ってくれない.. => 「上書き保存」すれば良い。 Cc: を利用して、自分にも e-mail を送り、自分の目的とする 内容が確かに送られることを確認できるようにする。 => 中身がなかったらどこかで失敗している.. # 最初は失敗はしょうがない o 名無のゴンベ.. 空メールは、未提出扱い !! o e-mail を利用できることも一つの課題 => 使いかたによって、便利.. o e-mail をかく場合は、「よく考えて」 会話であれば、直に確認できるが... e-mail だと、誤解されても確認ができない o 携帯電話でも e-mail が安い e-mail の方が少い帯域で、多くの情報が送れる 音声の方は、そうはゆかない => 高くなる o SPAM には、対応しないように 対応すると、却って利用される.. ( こいつは反応する奴だ.. ) o レポートは 13 回位で、各々 2 点