昨日の続きです.後半2題は,「ニュートン法」にしました.
4つのうちの3番目は,「ニュートン法」の紹介です.C言語で学ぶニュートン法 - Qiitaを使用しました.f(x)とその導関数は,関数形式マクロではなくreturn文1つだけの関数で定義し,マクロEPSも除いて,1.0e-6を,while文の式に入れました.二分探索よりも収束が速いことは,ナレーションで言いました.近似解を求めるアルゴリズムであることは,言い忘れていました.
4番目は,「円の3等分」です.元ネタは円3分割です.画像も,かなり流用しましたが,中央から切って3等分(https://kuragebunch.com/episode/13933686331658756380の途中で「ベンツマーク」と称した切り方)の図を,作っていなかったので,授業前日にconvertコマンドで作成しました.スライドはこんな感じです.
関連情報として次の2点を挙げました(拙ブログにはリンクしませんでした).
使用する式は次の2つです.4番目のプログラムは「写経」ではなく,3番目のプログラムを修正することで完成させ,まずは2つの関数の書き換えを指示しました.
またf(x)=0の解は角度なので,座標に変えることも,指示しました.単位円で考えると,分割のために縦に引いた線と円との交点は(0,-1)です.他について座標を求めて出力する,というプログラムです.
授業中に,近い時間帯に2人の学生から質問がありました.一人はエラーが解消できず,もう一人は,出力がnanになるというのです.
全員に見えるTeamsの投稿から,チャットに切り替えて,ソースコードを送ってもらうと,returnの直後に「(1 / 2)x」と書いていました.乗算記号は省略できない(数学のとC言語のy = ax;
は違う)ことと,1 / 2が「整数/整数」で整数(この場合は0)になることを伝え,修正を促しました.