数値解析法 (数値計算 編), 2003-07-18 質問と回答, M は宮本による回答。 7/18 は質問メールを提出する必要はなかったんだけど, 何人かからのメールがよせられ ましたので, とりあえず回答してみます。ちなみに, これまでもそうだったんだけど, *解答* ではない。 h01s2002: 先生のお気に入りの映画を教えてください。(最近のものが好ましいです) M: そうですねぇ。昔のものなら「ダーク・クリスタル (Dark Crystal)」がお気に入り ですが, 他にも「バロン (テリー・ギリアム監督)」とかかな。邦画では「御法度」の 松田龍平くんがゾクゾクするほど妖しくってよかったですね。他にもいっぱいある気が するけど, 忘れてるなぁ。 h01s2003: FORTRAN を習得したことによって今までどんなことに役に立ちましたか? M: 研究で必要なシミュレーションプログラムを Fortran 言語で自作した。他の言語を 学習するときの基準になった。この授業 (演習 ?) を担当できた。あ, 三番目は役に 立ったと言えるのか ? (笑) h01s2025: Exercise 3.1 M: えっと, これがどうかしたのでしょうか ?? 他に名前しか書いていないし添付 ファイルもないけど, メールの Subject が ``数値解析レポート'' なんだよなぁ。 h01s2026: 長い間、お世話になりました。 M: 何と返事をしたものだろうか :-) h01s2029: 0から無限までの積分のやり方は参考書にのってますか? M: 載っている本もあるかもしれません。無いかもしれません。発想の転換が必要かもしれません。 h01s2030: >h01s2043: exercise3-3途中までやりました。先週の質問で、red hatを間違ってと書いてる人がいたけど、意味は伝わってるはずなのになぜイヤミったらしい答えを返すんだろうか? >M: 確かに観察された事実から隠れた意味を推定することは可能ですが, その推定は間違っている可能性もあります。 >しかしコミュニケーションの場面では, 文面をあるがままに素直に受け取ることで, 少なくとも私が誤解曲解する愚を避けることはできます。 >またプログラムでは, 一文字の書き損じのために意図した動作をしないのが普通です。 これを読む限り、043番さんの考えが普通に思われて仕方がありません。 >またプログラムでは, 一文字の書き損じのために意図した動作をしないのが普通です。 このメールの流れはプログラム言語なのでしょうか?ただの会話ではないのですか?さらに[red hat]を使っていて >red hot と書けば、この授業は[red hat]を使っており、[red hat]のことだと >隠れた意味を推定すること は極簡単、というより常識です。それを >プログラムでは, 一文字の書き損じのために意図した動作をしないのが普通です。 という詭弁を使い相手を混乱させるようなことを言うのは何でなのでしょうね。 先生が望む人は、つまり一字一句いい間違えない、書き間違えない、それこそ コンピューターみたいなほとんど間違えのない人間なのでしょうか。そんな人は この世にはいるのでしょうか。先生は誤字脱字は一切なく、自分が話す言葉の使い方 などに誤りがないと思っておられるのでしょうか。 返答を希望します。 M: ツッコミどころ満載なのですが, いちいちやっていたのではきりがないし, そのこと によって 030 番さんが納得するとも思えないので省略し, そのかわりに簡単な総括を 述べるにとどめます。 「自分の期待したものとは異なった返答が得られたときにどう対応するかで, あなたの器量の大きさが測られます。」 なお末尾の質問に対する返答は, 「誤りが含まれている可能性はあると考えている」 ですし, ついでに言えば, 「自分の常識が世間の常識と一致するとは限らないと考えて いる」です。ですから, 指摘を素直に受け止めて, 間違ったら直せばいいだけです。 「rod hot」と書いても「Red Hat (登録商標で固有名詞 !)」のことであると推定できる という常識を持っている人がいたとしたら, 自分の常識が万人に通用するものではない 可能性があることを意識するきっかけになったことと思いますが, いかがでしょうか ? 意外と教育的でしょ ? (自画自賛 (笑)) まあ, これでも納得できない人がいることは 予想していますが (苦笑)。 h01s2043: 結局全然できませんでした。難しいです。 M: どこが難しいのでしょうか ? Fortran 文法ですか ? 二次方程式の解き方ですか ? それとも計算誤差の避け方ですか ? どこがわからないかをきちんと明らかにすれば, 解決への道が開けます。 h01s2052: Exercise3.1の問題で a=0 のときも一次方程式として解けるプログラムのほうが好ましいでしょうか? M: 「あなたはどうしたいのですか ?」設計意図が明確に説明されていて, すなわち動作 が定義されていて, そしてそのとおりにプログラムが作成されていればいいのでは ないでしょうか。(もちろん, プログラム作成者/設計者の意図しない入力や無意味な 入力にどう反応するのかも定義のうちです。) h01s2057: 時に明らかにおかしいプログラムでコンパイルできるのですがなぜですか? M: 一概には答えられません。なぜなら「おかしい」とあなたが判断した基準がわから ないからです。コンパイラはプログラムの syntax に誤りがなければ, というよりも その言語の syntax に基づいて解釈が可能なソースプログラムであれば, エラー無く コンパイルできると思います。そして普通の Fortran コンパイラであれば, 人間と 違って semantics までは判断できないと思います。あなたのいうところの「おかしい」 は, syntax ですか semantics ですか ? h01s2064: ニュートン-ラフソン法で、収束判定が変わると計算結果がだいぶ違うく なります。計算する関数によって収束判定を変えるとしたら、どんな基準で変えれば よいですか。 M: どう変わるかの情報もなしでは何ともいえんなぁ。あえて言えば, 基本だけど, 「あなたはどうしたいのか ?」 ほしい精度 (許容誤差) やかけられるコスト (CPU time など) などが基準になるのではないでしょうか。