数値解析法 (Fortran 編), 2007-06-15 質問とコメント, M は宮本によるコメント。 h00s2073: 同じものを計算するときに計算方法が違う式を作って計算上の最終結果が 同じになるときプログラムの中では同一の最短の計算をしているのですか、それとも 式の順序にしたがっているのでしょうか。 M: ええっと, 日本語の文として非常に意味がわかりにくいです. 「違う式を作って」 とありますが, 式を作るとはどこでどうやって作るとういう意味でしょうか ? それはさておき「プログラムは書かれた通りに動く (たとえそれが作者の意図と 異なっていたとしても)」と, とりあえず言っておきます. h01s2077: 分数の約分をするのに、ユークリッド互除法というのを知ったのですが、 先生が約分のプログラムを組む時には、ユークリッド互除法を使いますか? また、これを使わずに約分のプログラムはできますか? M: まず前半, わたしが使うかどうかを聞いてどうするのでしょうか ? わたしと同じ ことを, あるいは逆に違うことを, しなければイケナイっていう法はないと思います. 後半について, あなたは筆算で約分するときに, どういう手順/アルゴリズムで計算 しますか ? h04s2019: 入出力書式の編集子で、実数Iや整数Fは理解できますが、文字列Aや空文字 送りXなどは、なぜ使用するのか、又は、使用するとどうなるのかわかりません。 M: 資料には簡単な説明しか書いていませんから, 詳しくは文法書を見てください. ひとことだけ, 要不要は, 知識の乏しい人の想像力の範囲に制限されないのだヨ. h05s2001: Problem2-2は、得点データをリダイレクトするようなプログラムにしても いいのですか? M: 必要ならば, そうすれば良いのではないでしょうか. お好きなようにどうぞ. h05s2002: 前回の質問の返答でFreeBSD の欠点は, Unix 系と書いてあったんですが、 Unix系が欠点とはどういう事ですか? M: そこ (2007-06-08 の h05s2002) には「初心者には取っ付き難いかもしれない.」と 書いておいたのですが, それでは不十分でしょうか ? 別バージョンの言及として: Windows しか知らない人にとって, なぜか習得に困難をともなうことがある. (というかポリシー/世界観が違うので, 頭の硬い人には困難らしい) h05s2003: Exercise2.1において、コンパイルして実行した後でaとbの数値をコンマで 区切ってG端末上で入力したら、ようやく期待どおりの結果が得られましたが、実行前 (この段階以前)に数値をいれることは可能ですか?できるとして、いつ入力すれば いいのですか? M: 仮りに当該プログラムを実行する前に, (方法は知らないけど) 数値を入力できたと して, その数値を受け取るのは, いったいどこの誰でしょう ? という疑問がわいて くるので, そもそも何をやりたいのか, さっぱり見当がつきません. h05s2007: PCは、今まであったプログラムに少しずつプログラムが足されて行き、 ときどき大きな改変がされるの繰り返しをしていると思います。プログラムの基礎に 虚弱性のないものが開発されず。これからも、それが繰り返されると思いますか? M: えっと, 主語の「PCは」というあたりが, いまいちだなぁ. 何を想定しているの でしょうか ? ハードウェアなら, 使用する LSI などや信号の規格に応じて設計する ので, 過去の資産を引き継ぐ所も新規に設計される所も, いろいろあるでしょう. ソフトウェアであれば, 例えば Windows は Linux に何かを付け足し拡張して作られた 物ではありませんし, 逆も又そうです. このように, 堅牢制を引き継がないもの, 脆弱性を引き継がない物などはいくらでもありますよ. h05s2009: もし、自分がパソコンだったら・・・プログラムを考えると、何とか プログラムを作れるのではないか?どうやったらつくれますか? M: 文の意味がわかりません. h05s2011: なぜemacsで文章をを作るときに始めにスペースを開けなければならないん ですか? M: 始めにスペースが必要ない *文章* なら, スペースを開ける必要がないのは当り前 ですよね. 必要なら開ける, ただそれだけなのではないでしょうか ? h05s2013: 二次方程式の解を求めるプログラムを作ろうとしたのですが、コンパイル時に エラーが出てコンパイルしてもらえませんでした。エラーが出たのは解の公式の√の 部分で、sqrt(b ** 2 - 4 * a * c)としたのですが、sqrtの部分が拒否されました。 これはなぜでしょうか? M: どんなエラーが出たのか, この文章だけではわかりませんので, 何とも言えません. 譬えて言えば, 診断や検査をせずに病名を当てるなんて, 無理でしょ. h05s2014: 前回の僕の質問の回答についてなんですが、講義中に疑問に思った点が解決 してしまったらメールで質問することがない気がするということなんですが・・・。 出席確認もあるので一概には言えませんが、メールの期限にもう少し余裕を持たせては どうですか? M: まず前半について, そういう種類の質問は, 確かにすることがなくなっちゃいますね. こういう自明なことから考えられることは, 「評価に値する質問」というのは, それら とは異なる種類のモノだということです. 後半について, 出席確認という主旨からすると, 本当は授業時間中に発信したものに 限定したいくらいです. それにもかかわらず, 授業終了時プラス 30 分と緩めていると いうのが実状です. 極端な話をすれば, 現状は, 授業時間には欠席しておいて, 終了 してから演習室にやって来てメールを出す, ということも可能になってしまっている のです. そういう不正をする人はいないと思いますが, 念のため. h05s2015: Listing 4で10 continueとgoto 10はどういう意味ですか? M: 文法的な意味は, 簡単ですが資料に記載してあります. ここではそれを繰り返す程度 の説明しかできません. ``10 continue'' は, 特になにもしない実行文に 10 という 文番号が付いているだけです. ``goto 10'' は, 制御 (次に実行する文) を, これよりも詳しい説明が必要なのであれば, 文法書を参照するなりしてください. h05s2016: 整数の計算はわかったのですが、分数などの場合はどうすれば良いのですか? M: あなたが筆算で計算する場合には, どういう手順で何をやりますか ? それを Fortran という言語で記述すれば, プログラムになります. h05s2018: 他の授業でマイコンの実験をしました。この計算をするコンピューターの 原理も、マイコンと同じものなのですか?またそれぞれの利点や欠点もあったら教えて ください。 M: 2007-06-01 の h05s2019 を参照してください. なお, それぞれの利点と欠点は, 主に規模の違いによるものと考えられます. h05s2019: 課題についてなんですけど『ソースファイル と 実行結果 と *説明の文章*』 とあるのですが、説明の文章と言うのは何に打ち込めばいいのですか?ソースファイル とは違うのですか?また、ソースファイルは添付ファイルとして送ることができますが、 実行結果はどうのようにして送ればいいのですか? M: 「メールで送って提出」ですから, コンピュータ上のファイルでなければいけない ということは, ほとんど自明だと思うのですが ? そうであれば, 実行結果も (1) ファイルに出力する, (2) 出力をファイルにリダイレクトする, (3) 端末上への 出力を(マウスでドラッグして)ファイルにコピー&ペーストする, (4) 端末上への出力を 手でファイルへ書き写すなどの手段が思い浮かぶのが普通だと思いますが, そうでも ないのでしょうか ?? h05s2021: 前の鈴木先生の授業もあまりついていけてなかったのですが、時間内に プログラムを作れるか心配です。この授業では補講などをやらないのですか? M: 「時間」というのは授業時間のことでしょうか ? もしそうなら, 次のことを指摘 したいと思います. 大学の授業は授業時間だけで完結するのではなくて, その 2 倍 程度の時間の自宅学習をしていることが想定されて, 付与される単位数が決められて います. それでも足りなければ, 自主的にどんどんやれば良いだけですが. なにしろ 一週間は 604800 秒もの時間があるのですから. h05s2024: 課題2ですが最大、最小は100,60とそのまま表示していいんですか? 比較とか使わなくてもいいんでしょうか? M: えっと, 「そのまま」と聞く意味がわかりません. 例えば 2 で除した数を表示する ことは, アリエナイと思いますが ? ちなみに問題文は, 「〜を求めるプログラム」を 要求しています. h05s2025: ブラックジャックのプログラムについて、遊びかたがわかりません。 FORTRAN90版はやっていないのでわかりませんが、FORTRAN90だと快適に遊べるので しょうか????? M: 快適かどうかについて言えば, まったく同じアルゴリズムを異なる表現で記述した だけですから, 本質的には同じ動作が期待されます. よって, 快適さは同じ. 遊び方については, プログラムを読めばコンピュータの動作がわかるので, それに 対応した人間の操作をすればよいのではないでしょうか. っていうか, 遊び時間ではありませんヨ (w h05s2026: いろいろな計算のプログラ厶をつくっていますが、確率をだすような プログラムなどもつくれますか? M: アルゴリズムを明確に定義できれば, それを Fortran 語で書き下したものが, 求めていたプログラムとなることでしょう. h05s2028: リスト4 のプログラムの9 行目にあるcontinue 文は、ただ文番号を設定する だけのために用いている。と書いてあるのですが、文番号は何のために設定するのですか。 M: h05s2015 参照. h05s2029: LIstingのプログラムはわかりやすくプログラムしたものですか?それとも、 短く短縮したものですか? M: そこがシアンのしどころでした. わかりやすくすると行数が増え, 学生さんが入力 して動作させてみるときのタイプ量が増える, vice versa. ということで, わかり やすくかつ短くしたので, 文法要素の説明としては充分なつもりですが, プログラム としての意味が薄いような例になってしまったかもしれないと危惧しています. h05s2030: Exerceiseでリスト3の宣言の範囲より大きい値をiとjにいれてみました。 宣言では real a(10),b dimension b(10) としてあります。10