数値解析法, 2004 年, 数値計算編, 課題 (レポート) 提出状況

課題:

質問などがあれば, いつでもどうぞ。

ヒントかも ...... 多くの人がツマヅイテルよ, ヤレヤレ

レポート
そもそもこの言葉の意味がわかってるのかなぁ。レポートっていうのは, 日本語で言えば ``報告書'' だぞ。つまり何かを報告するわけだ。 実験のレポートなら「序論」「実験操作」「結果」「考察」という構成でしょ, ここでもそういう形式にすれば良いのに。 そもそも ``他人にわかりやすく説明する'' ってのが, 全くできてないのが ほとんどだね。
Exercise 3.4
結果を並べて示しさえすれば比べたことになるという考えは, とても幼稚です。
Exercise 3.5
(f(x))**2 の形の関数の積分なら, 被積分関数が恒常的に零でない限りは 有限の値になるはずである !! そうは思わんかい ??
基本
誰一人として, 市販の数値計算に関する専門書で勉強した形跡がないのは, 一体全体どういうワケなんだろう ??

提出状況とコメント

学籍番号ごとに, 提出されたプログラムの名称と提出日のあとに, 辛口かもしれないちょっとしたコメント (たぶん激辛) が書いてあります。 プログラム自体はここに載せません。 他人に付いたコメントが参考になるかもしれません。 いずれにしても, コメントを参考にするかどうかは, 自分で考えて決めてください。

h02s2004,
Ex3.8.f (0730): 説明文がなくてプログラムソースのみ。「モンテカルロ法による 円の面積の計算」とコメントにある。しかしプログラムの書き方がこの授業で推奨して いるものと異なるし, 乱数生成ルーチンもテキストと違う。結論, どっかからパクッて きたなぁ。
Ex3.3.f (0723): 説明文とプログラムがあるのは良いんだけど, プログラムで 言ってることと実際にやってることが違う。また計算を止める条件としてふさわしい 条件を設定しているのか ?
Ex3.7.f (0723): テキストに示したものとは異なる乱数の生成ルーチンなわけ だが, これが Exercise 3.7 とどういう関係にあるのか, 全く何の説明もない。
h02s2010,
newton.f (0808): 変数 n がなぜ倍精度実数じゃなくちゃいけないのか謎ですが, 解がだんだんと変化していく様子をグラフで示したのは工夫の一つですね。しかしこれ では, ただそれだけのことでしかありません。ツマンナイです。また正解の基準が関数 電卓の値というのも, ちょっとねぇ。
eulerian.f, runge-kutta.f (0808): 結果がエクセルファイルだから, 一体どんな もんだろうと思ったら, あれだけかい ! ぽつりと結果を言われても, どーしろと言う のか。また説明文で「重みがそれほどないとして」とか「解析していくうちに誤差に なってくる」とか, 前後の文脈から言って, 意味不明ですね。また, 電卓との差と いわれても, これこそエンピツとの差といったときのナンセンスさと同程度の意味しか ない。
rrand.f (0808): あちこちで共通に使うであろう部品名を, 個別課題に対応する プログラムの名称に採用するという発想が謎だが, それはさておき。計算結果を表に まとめているのも良いんだけど, それもさておき。なんかもっともらしい小難しい ことを言ってるけど, 微妙に本質をずれているような気がする。たまたま選んだ seed がそういうものだったとか, たまたま表示された桁数がそういうものだったとか, って いうことを考えれば, 残念ながらあなたの考えは外してます。
h02s2014,
exe3,3.f (0805): プログラムとしては, ごく普通のものだ。説明文では計算結果 を電卓による計算と比べている。しかしこの言い方に意味はない。電卓でどんな計算を やったのか不明だからだ。計算に使った道具の種類は結果の正当性を保証するものでは ない。また試行値をいろいろと変えて計算を試みている。そのこと自体はいいのだが, はたして試行値の意味を理解しているのかどうか疑問だ。さらに, 仮に電卓での計算値 が正しいとして, それとの食い違いが生じた理由は何でしょうか ? 食い違いを小さく するにはどうすれば良いのでしょうか ?
exe3,5.f, exe3,5,2.f (0805): 前者は区間 [0,5] での積分, 区間の分割数を 変えて計算を試みた結果が表にまとめて示されている。また後者は区間 [0,∞] での 積分で, ∞ に対する工夫の跡が見られる。解析解についてもレポートに記載があるよう だが, 残念ながら Word98 では読めません。(> MS のバカ)
exe3,8.f (0805): πと球の体積をモンテカルロ法による数値積分で求めている。 説明文中で球の体積について高さがどうこうという説明はちっともわからん。n の値を 色々と変えて計算を試み, 結果を表にまとめているのはわかりやすくてよい。しかし, n の値を大きくしても計算結果がある値に漸近することはなかったとの結論は, 普通に 知られているモンテカルロ法の性質として正しいのか ? もしそうなら, この方法による 数値計算はできない(無意味な結果を与える)ことになってしまうのでは ??
h02s2018,
Listing16.f, Listing17.f (0810): プログラムはオイラー法とルンゲクッタ法の もののようだけど, なにせ説明文がリンクで文章の実体が届いていない (苦笑)。
Kadai3.f (0809): Ex3.6 のようだ。seed を 5 通りやってるわけだが, これだけ で n を増やしていったときの値の変動の仕方の一般的な傾向など言えるんかい ? また それについて論理的に説明できるのかい ? ここで計算機が行なっているのはあくまでも 疑似乱数なので, もし何らかの一般的傾向があるならば, 決定論的に予測可能・理由 付け可能なはずであーる。
Kadai1.f (0809): Ex3.3 のようだ。近似の精度がその程度であるのは, どうして でしょうか。答えがでないと明確にわかってるから何が出てもビックリしなかった ようだけど, 一般にはそうはいかない。きちんとプログラム上で対策すべし。
h02s2020,
newton_cortz.f (0810): 期限を過ぎての提出であることを, あらかじめ明記して おく。さて, このプログラムは何をやってんの ? プログラムが表示してる事って, 滅茶苦茶じゃなぁい ??
monte.f (0810): モンテカルロ法でπを求めるらしい。
monte_sekibun2.f (0810): モンテカルロ法で積分するらしいんだけど, 入力する 数値の意味が良くわからない。説明も良くわからなければ, プログラムの出す指示は もっとわかんない。
rrand.f (0810): 疑似乱数の生成, 特に課題とは関係ないのかな。
h02s2021,
newton1.f (0802): ええと, まじッスか ? こんなプログラムで説明文書に示され た通りの結果は出ないんですけど ??
euler1.f, runge1.f (0802): なんにも理解せずに, ただテキトーにこなしただけ でしょ。なぜなら全く無意味なことをやってるから。
simpson.f, simpson2.f (0802): 区間 [0, ∞] での積分のやり方には, 工夫の 跡が見られます。が, パラメータを変更して再計算の度に再コンパイルという手間を かけなくても良いようにするくらいは, やってほしかった。
h02s2024,
Exercise3-3.f (0716): 「計算の精度は 10^-6」って, どこのこと ? ソースの インデントが正しくないので, 「Do ループで」といってもどの範囲のことなのか, ひとめじゃわかりにくい。あと, ユーザーに入力を促すところで印字される文言が 意味不明になっちゃってるよ。まるでどっかの国の法律の改正時の不手際みたい (笑)。 なお説明が最小限なのは, 他の二つがもっとヒドイから (笑) とりあえずここでは 目をつぶるとするか。
euler1.f, runge1.f (0716): 「しかし手計算の解には届かず。」とか「ほぼ手 計算の値と同じ。」とか言われたって, レポートを読む私としては, ナンノコトヤラ ? そもそもレポートって言うものは, 他人に読んでもらうものだっていう意識あるの ??
simpson1.f (0716): 無限大までの範囲を, 適当な大きな数値に固定して, それで 充分だという保証はあるの ? 関数の値と積分値とは違うよね ? そもそも恒等的にゼロ ではない関数の, 区間 [0,∞] での面積がゼロってどういうことよ ?? おかしいと 思わんのかね ??? これもまた, 説明文が説明になってないしぃ。
h02s2028,
exe3.3.f (0806): プログラムにしろ説明文書にしろ, 力作です。スバラシイ。 ただし計算誤差についての考察にはいただけないものがある。だって, 3 の平方根って 1.7320508... でしょ, それが 1.73205078 と得られその二乗がぴったり 3 になる なんて, おかしいでしょ ?? いやー, 残念だったね。
exe3.5.kai.f (0806): これもまた力作ではある。しかし考察については疑問点も ある。あなたは「xe が一定で knkk を変えたとき」や逆に「knkk が一定で xe を 変えたとき」に, それぞれ積分の値がどうなると主張しているのですか ?
exe3.8.kai0.f (0806): プログラムについて, 前半は 1/4 円の面積からπを求め ている, ここまではいい。後半は *このπ* を用いて ... なにやってんじゃ ? ええっとまず ff(x)**2 っていうことは, sqrt(1 - x * x)**2 だから ... うひゃぁ, ムズカシイ。いえね, どんなやり方でも良いんだけど, このやり方じゃあ モンテカルロ法のメリットが出ないことは確かだ。 n を変えての計算例をまとめてあるのは良いけど, その評価があれじゃあねぇ。 また理論値として電卓の値を示しているけど, 正解を知らない積分の時にはどうする つもりだろうか ?
h02s2029,
ex3.4b.f (0804): 一つのプログラムでオイラー法とルンゲクッタ法の両方の計算 をやるようになってる。のは良いんだけど, オイラー法の計算結果がおかしい ?
ex3.5c.f (0803): 一つのプログラムで二つの関数の積分値を求めるようになって いるのには工夫の跡が見られます。ところで収束する値が一つ示されているが, 解析解 は求めてみたのでしょうか ? しかし使うなと言い, 例も示していない文関数を使って いる。また説明文のなかで「刻み幅を細かくすることで, 積分範囲無限大に対応した」 と支離滅裂なことを述べている。結論, どっかから ......
ex3.3.f (0803): 所定の改造がなされているのだが, 方程式を入力する前に解の 試行値を入力させるのはいかがなものかと。また, ワードとエクセルの二つのファイル にわかれたレポートも, その旨の説明がないことと合わせて, いかがなものかと。
h02s2032,
Listing22.f (0727): Exercise3.6 モンテカルロ法でπを求める問題。点の数を 色々変えて実行しているようだ。しかし計算結果の「精度」についての誤解があるの ではないかな。πは既知だけどそうじゃないときの計算結果の「精度」はどう評価 すればいいのかな。そこんところをきちんと理解すれば, 確率論を用いたことを理由に 精度が劣ると判断したことの正否がわかることでしょう。
Listing23.f, Newton.f (0727): Newton といってもここでは台形公式を用いて いる。ちなみに台形公式による積分で ndiv をうーんと大きくしていったらどうなるの かも見てみるとおもしろいカモ。いずれにしても計算手法の適否を判断するには, 自分の体験に基づくことも必要だけど, ある程度以上のちゃんとした議論のためには, きちんと誤差の振舞いについて把握する必要がありますね。そうでないと経験に基づく 勘違いをいつまでも引きずることになる。
Example3.5.f, Example3.5-3.f (0702): だいたいいいんだけど, 説明の文章に 細かい点でアラが目立つ。せっかくだから指摘しちゃう。例えば, 解析解は正しいの かい ? プログラムによる計算で得られた値は全く違う値なのに。 Runge-Kutta 法で有効数字 5 桁まで正しい答えが得られる最大の刻み幅 h はいくつ なのか ? Euler 法ではどうか ? その h であると判断した根拠は何か ? とかの説明が弱いね。
レポート全体の形式にしたって, 実験のレポートなら「序論」「実験操作」「結果」 「考察」という構成でしょ, ここでもそういう形式にすれば良いのに。 こういう h をいろいろ変えてやってみた結果というのは, 表にまとめて示すと 見やすいとか, レポートの書き方指導を受けただろうに。 ここでそれを活かさずにどうするっ !
h02s2034,
ex3.3 (0810): ソースファイルを添付したらしいが, 何も付いてこなかった。 なお実行結果は NAN の行列らしい。さてプログラムの直し方の勘違いもはなはだしい。 コンパイルが成功したのに実行すると NAN の行列, これはまさにプログラムの構成自体 に誤りがあるので, 意図しない計算を実行してしまっている。あるいは設計意図に 間違いがある。決して変数の精度や文字数が原因ではない。
h02s2039,
newton-raphson.f (0809): Exercise3.3
euler1.f, runge1.f (0809): Exercise3.4
simpson1.f (0809): Exercise3.5, この期に及んでこんなトボけたレポートが 提出されるとは ...... (唖然)
h02s2040,
Ex3.3.f (0803): a, n を入力できるようになっていて, 複素数解には未対応。 あまりにシンプルすぎて, 特に問題になる点はなさそう。
Ex3.5.f (0803): 一つのプログラムで f, g の両方の計算ができるようになって いることに工夫の後が見られます。ただし g の積分区間についてハードコーディング しない方がよかったのでは。また説明文書で, 積分の値が「○○ に収束する」との 記述があるが, その値はどうしてわかったのか ? ちなみに解析解は ?
Ex3.5a.f (0803): これは何かな ? 説明文は Ex3.5.f のものと全く同じように 見えるのだが, プログラム自体はこの授業では推奨しない機能をわざわざ使っている。
Ex3.5b.f (0803): プログラムファイル名は Ex3.5 だけど, 中味は Ex3.4 だ。 オイラー法とルンゲクッタ法の両方が一つのプログラムにまとめてある。しかし説明文 の言葉遣いはひどいね。だいたい「見やすい」と言っても何が見やすいのかサッパリ ワカラン。またやってることがわかってないのかな。刻み幅が小さいほど正しい値に なると述べながらも, 正しくない値を出す大きい刻み幅の実行例を示しているし。 そもそも >2 な刻み幅に何の意味があるの ??
h02s2042,
euler.f, runge.f (0809): だーかーらー, 解析解はいくらなのさ ?
newton4.f (0806): 説明文書で二の二乗根を求めるのに初期値が 0.7-3.3 で なければだめだなんて, あまりにも具体的なことが書いてあるし, 得られる解の精度も 小数点以下第一位までなんてオカシイと思ったら ...... やっぱりプログラムが おかしいじゃん。
ball.f (0806): あぁ, これも関数 ff(x,y) の定義で苦労の跡が ...... (汗) 点の数 n がハードコーディングなのが玉に傷 (ウマイ !)。rrand() の使い方に ついて, x と y とにそれぞれ s1 と s2 とを用意して異なる系列の乱数を用いたつもり かもしれないけど, そんなことをする必要はない。むしろ s1 と s2 の選び方に よっては, x と y に相関が生じてしまう可能性がある。それではランダムに点を取った とは言えないよね。
h02s2045,
Exercise3.6.1.f, Exercise3.6.2.f (0810): これもまた「概要」という言葉の 不思議な使い方の例だ。レポートの説明文の内容が中途半端なんだけど, 本人は 「プログラムが未完成」と言っており, あくまで言葉の不思議な使い方を貫くつもり らしい。
euler.doc (0723): ソースプログラムをワード文書にしているという非常識さに 加えて, 説明文らしき【結果】の文章が支離滅裂です。
newton.doc (0723): 説明文無しでワード文書化されたソースプログラムだけ あってもねぇ。おまけにコンパイルエラーで実行できないし。
niji.doc (0723): これまた説明文無しでワード文書化されたソースプログラム だけだ。いちおう二次方程式の解を求める様だが, ここで Excercise 2.6 の解答を 送ってよこされても, ほとんど意味ないね。
runge.doc (0723): あいかわらず日本語が壊れている。論旨も支離滅裂です。 ステップサイズを変えても結果が変わらない事って, プログラムに間違いがあっても 起りうることだから, 正しいことの理由になんかならない。
h02s2048,
njyoukon.f (0809): これだけかい。
taiseki.f (0809): 日本語の文として, 句読点のうちかたが変です。かえって 意味が取りづらくなってしまっている。さて「面積を求めるために積分した後に, 体積を求めるためにもう一度積分している」とのこと, だれかのプログラムとそっくり なのだが, そういう意味なのかぁ。まぁ言われりゃ確かにそんな感じのことやってる けど, これは多重積分でもなんでもない。モンテカルロ法のメリットがちっとも出て いない。で,計算結果についてはあいかわらず電卓基準なわけだが, 答えが未知の場合 には一体どうするつもりなんだろう, と何度書いたことか。あぁ。
monte.f (0803): プログラムについては順当な作りではある。しかし説明文は, ただこうなりましたとひとことだけ記述されていたって, 小学生の日記じゃないん だからねぇ。
h02s2049,
euler.f, runge.f (0810b): 課題 3.4 らしい。Step size を入力できるように テキストのプログラムを改造しただけらしい。さて説明文は, あまりにも簡略化され 過ぎていて, どういうことなのか理解・読解することがヒジョーに困難だ。例えば 「徐々に近づいててくるのがわかります。」だって, _何_を_・_ど_う_ 見れば *近づく* と言えるのか, どう見れば *徐々に* と言えるのかとか, 全く説明がない。
h02s2050,
Exercise33.f (0716): 説明文が, 日本語としておかしいとか, そもそもレポート の体裁をなしていません。
euler.f, rungekutta.f (0716): プログラムでの計算の様子をあれこれ漠然と 言葉で説明されても,「はぁ, そうですか」としか言いようがない。言い換えると, 評価の下しようがない (ゴチャゴチャ言っとるな, とは思うけど)。こんなのが「結果 をわかりやすく他人に説明する報告書」なんですかね ?
Exercise35.f (0716): 数値計算の結果が正しいかどうかを確かめるのに,「やはり 手で実際に計算してみるのが一番だと思う。」のならば, どうしてヤンナイの ??
h02s2051,
ex3,33.f (0810): あいかわらず繰り返し近似の回数で解が実数か虚数かを判断 している。たまたまここで正しそうな答えを返すことと, 原理的に正しい答えを導く 手順とは, もう本質的に天と地以上もの差があるのにね。そして今度は s は何をやって るのか ? 小手先の誤魔化しで済ませて良いという問題じゃないでしょうに。
ex3,5.f, ex3,55.f (0810): プログラムについては本質的でない点の修正。説明文 はやっぱりよくわかりません。独自の世界なのでしょうか。
ex3,3.f (0809): つくづく意味不明な説明。表があっても何の表か, サッパリ ワカラン。プログラムも, なかなか滅茶苦茶なことやってる。こんなのでまともな解が 求まるかどうか, 本人にもわかってないんじゃないかな。ちなみに変数 s の変遷すら 把握していないと見た。そうそうプログラムの解説で, 「関数の説明を行なっている」 とは, どういうことか ? 特殊な言葉遣いなのかな ?
ex3,5.f, ex3,55.f (0809): 「実際にf(x)を区間[0,5]で積分してみると5e-5が 解として得られる。この値を電卓で計算すると0.033689735となる。」と言われても, どういうことなのかサッパリわかんない。どゆこと ?? 後半の g(x) の積分については ギリギリセーフかな。でも文章中でごちゃごちゃ説明するなら表にまとめて示して 欲しい気もする。
ex3,6.f (0809): ふーん, あっそう。
h02s2052,
ex3,8.f (0809): はぁん ? 何をやろうというのか ?? 問題を全く理解していない ように見えるんですけど。おまけに "kyosuukai =" とは, いったいどういうつもり なんだろうね。説明文中に示されている実行例も, ちっとも思いっ切り的を外して いるし。これじゃあ他の課題の解答の信憑性も落ちちゃうよね。
ex3,3.f (0809): 「近い値が得られてよかった」だと ! 近いの程度が問題なのに ちっともわかってない。また最後の例で, おかしな動作をするのがわかったならば, きちんと対策をとらんかい !!
ex3,6.f (0806): s, n を入力するとπを計算する。色々とやった結果を表に まとめて示している。しかし考察は, 「n が大きくなると ...」という定性的なものに とどまっている。でもこの結論は本当かな ? また s についてはわからなかった らしい。疑似乱数の理解不足かテキストの記述不足か ??
h02s2053,
listing22.f (0806): 説明文書で簡単にひとこと「こうなった」と言われても, 「はぁ, そうですか」と返すしかない。そんなのちっとも科学的・論理的じゃないね。
h02s2054,
exercise3.7.f (0723): 説明の文書で実行結果が表になって示されているのは わかりやすくて良い。しかし結果の解釈については, 誤りあり。 なぜならモンテカルロ法に於いては, 点の数と計算の精度との関係は既知であって, その点を踏まえた議論がなされていないから。 ちなみに結果一覧の表中に間違ってるところもあるみたいだよ。
exercise3.6.f (0716): 説明の文書で実行結果が表になって示されているのは わかりやすくて良いですね。また計算時間についての考察もあって, 良くできてます。 せっかくだから計算時間を計って表に載せるという手もあるのにね。さらに乱数の数と 計算精度との間に, 何らかの関係は無いのだろうか ?
exercise3.3.f (0709): Listing 15 を元に, a の n 乗根を求めることができる ようになっています。ただし, どの変数をどういう精度 (型) にするのか, ポリシーが 見えませんね。 説明の文書で実行結果が表になって示されているのは見やすくて良いです。ただし, 各欄に納まる数値の桁数の関係で, 末尾の一桁が改行されて次の行に表示されている (Word98) のがみっともない。だからワードは ...... 。 また添付のプログラムでの計算と, 電卓での計算結果を対比させているのも面白い ですね。ところで, 電卓での計算結果は, どの程度正しいのかい ?
h02s2057,
ex3.3.f (0809): だめ。これだけたくさん他山の石を示されても, ちっとも効き目 のない人がいるんだねぇ。あきれた。もっとも提出されたプログラムも, 要求仕様を 満足していないけどね。
ex3.6.f (0809): s を変えたときの π の計算値の変化を示しているが, 「5 で 最大値を取り」って, どうやって確かめたのか ? どんな意味があるのか ? また n を 大きくしていったときの挙動も, 「パイの値に近づいていった」って言ってもねぇ, 見りゃわかる・それで ?
h02s2062,
Exe3.3.f (0810): 「要旨」とか「試行関数」とかいう言葉の使い方が標準と違う ような気がするんだけど, 意味わかってるのかな。で, a と n を固定して x を色々と 変えて実行している。このことにどんな意味があるのか ? 得られた解の正解への近さ を議論しているが, このレベルでそんな議論の意味があるのか ?? ちなみに「5, 9 を 通り 7 を通らない直線」って, 一体どこに出てきた何の話をしているのだろう ???
Exe3.5.f (0810): 「要旨」と題した要旨じゃない文で数値積分について説明して いるようだが, 区間が偶数番目と奇数番目をわけて積分すると, どうして正確な積分が できるのだろうか ? 新説なのか珍説なのか ?? ところで被積分関数も異なり積分区間も 異なる二つの積分を行なうという最も初歩的なことすら理解されていないようだ。 あ〜ぁ。
Exe3.8.f (0810): 例によって「要旨」という言葉の件はさておき, これじゃぁ ちっとも二重積分になってない。また n があまりに大きいと誤差が大きくなるって, モンテカルロ法として知られている手法の挙動とは異なりますが, これも新説ですか ?
h02s2064,
Exe370.f, Exe371.f (0809): モンテカルロ法とシンプソン法による数値積分の 比較。「3.14 まで求まる」 n はいくつだって ? そもそもこの「〜」は, 何を意味する の ? もっともらしいこと言ってるくせに, 基本的なところができてないのね。
Exe380.f (0809): 「Ex37のときより明らかに精度が落ちている」といっても, 何をどう見るのか, 全く説明がない。
Exe360.f (0803): おおむね良いんだけど, 誤差についての考察は, だーれも やってくれないんだなぁ。
Exe340.f, Exe341.f (0802): ひとつのプログラム中にオイラー法と ルンゲクッタ法の両方を組み込み, 結果を比較できるようにしたのは, なかなか面白い アイデアだね。ただしプログラムがわかりにくくなるっていう欠点はあるけど。 説明文書も出だしはオオッと期待させるところがあったのだけど, 結果の評価が全く なくって竜頭蛇尾で残念。ちなみにそれに加えて解析解ってどうやって求めたの ?
Exe337.f (0723): 狙いは良いんだけど, 微妙に間違ってる。惜しいね。おかしな 答えを出す入力例をすぐには示せないけど ...
Exe33.f (0709): Listing 15 を元に, a の n 乗根を複素数解まで求めることが できるようになっています。利用者が数値を入力する際への配慮もされています。 指数 n を複素数型にする意味はあるのかな ? (この程度の計算なら良いけど, 場合に よってはメモリと時間の無駄。) 繰り返し近似計算の終了条件で苦労したようですね。この様な場合に実数値 (実部 あるいは虚部) の異同を「等しいかどうか」で判定することは, 危険です。 問題によっては何度繰り返しても等しくならず, 終了しない恐れがあります。 今回のように収束することがわかっている問題の場合には大丈夫ですが。 また, 実部だけ (あるいは虚部だけ) が偶然に前サイクルと一致してしまうと, 虚部 (あるいは実部) が異なっていても繰り返し近似が終了してしまいます。 (例えば 1 の立方根を求めるに際し, 予想解を (-1, 1) と (-0.5, 1) とで計算して みましょう。) 惜しかったね。ああ, 説明文書の実行結果の節に「実行結果」が 示されていない。
Exe335.f (0711): 上の Exe33.f で一見して誤りという解を与える点を修正した つもりのようです。しかし上述の私のコメントの後半で指摘している事項にビックリ してしまったためか, 前半の問題点についての本質までには考えがおよんでいないよう ですね。そのような対処療法的で本質的でない修正のため, 例えば 1 の四乗根を求め ようとしたときに予想解を (1, 1.1) としてしまうと, 繰り返し近似の過程で (-1.,-3.56018536E-21) と (-1.,1.22457075E-16) との間を振動することになって しまいます。このプログラムでは繰り返し回数の制限により終了しますが, 答えは 虚数部が大きい (と言っても 1e-16 だけど) 方を与えますね。たまたまこの例では 実用上困らないけど, 例えば 1 と 10 との間の振動が回数制限のタイミングのせいで 10 の方で終了してしまうかもしれない。ニュートン法は収束性に関しては良い方なの で, ある程度多数回繰り返し近似すれば, そこそこの近似解が得られる可能性はあり ます。しかし繰り返し近似の過程で振動してしまっては, 正しい解の近くにさえ行か ないかもしれない。言い換えれば, 一般には k 回の繰り返しで解が求まる保証は無い のでは ? 惜しかったね。 あと説明文のなかで, 適当な桁で四捨五入した方が精度が上がるかの記述があります が, そういうもんなの ? 「精度」と「有効数字」との関係を正しく理解していますか ?
kakunin.f (0711): a の n 乗根を求めるプログラムで得られた結果を検証する ために, x の n 乗を計算するプログラムを作成したらしい。元の根を求めるプログラム で得られた結果をそのままにせずに, 検証する手段を考えたことは, すばらしいこと です。
h02s2065,
ex3-3.f (0810): 「Xk の値を変化させて近似解が真の値に近づくことを調べた」 というその調べ方はどうしたの ? 課題はそういう意味なの ?? いずれにしろ「誤差」 が大きいというその誤差ってなぁに ???
ex3-6.f (0810): 「かなり真の値に近づいた」とか「多少の誤差はあるものの 全体を通して」とか「ほぼ比例の関係」とか「(全部で何通りあるか考えもせずに たった 5 例のうちで) s=3 のとき c が最小」とか, 曖昧模糊モコとしすぎなのだが よく耐えられるもんだな。
ex3-8.f (0810): ん ? こんな解答が出てくるような課題があったっけか ?? それはさておいたとしても, こんなプログラムの書き方のスタイルは, 感心しないな。 教えられたはずの注意点を守っていないし, 教えていない非標準機能を使っていたり するしね。しょうがないから努力 *だけ* は買うとするか。レポートの内容については 「aの値が変化」するのはどういう時だ ? とか買うに値しないようなので。
sum10.f (0625): テキストの Listing 13 の改造と思われるプログラムリストが 送られてきたけど, だからなんだっちゅーの ??
h02s2067,
tr.f (0716): 台形公式による Ex3.5 用のプログラムらしいのだけど, 説明文が 何もない。プログラムリストだけで何をどうしろというのだろうか ?
pi.f (0716): rand() は何ですか ? 「点の数を変えるたびに、pi が変わりま せん。」と「点の数だけ増やすと、pi の値が大きくなります。」は, 言っている ことが矛盾しています。したがって, 説明文の意味がわかりません。また, この様な 計算結果を与えるということは, 正しく π を計算していないということですね。 たまたま今回は π を求めているために, 計算結果がもっともらしい値であるかどうか の判断をするのが容易でしたが, 普通は答えがわかっていません。どうしたらもっとも らしい計算値であるかどうかがわかるでしょうか ?
integral.f (0716): これもまた, 正しく π を計算していないのでは ありませんか ?
h02s2068,
Exercise3.8.f (0810): まあだいたいそんなもんだけど, やっぱり if 文が余計だ ね (問題が悪い)。s と n を変えたときの結果については, 面白いことも言ってるね。 でも結局, 答えがわかってるから言えることなんだよね。そうでない一般の場合には どうするつもりなんだろう。
Exercise3.5a.f, Exercise3.5b.f (0809): b の方で, プログラムの最初に 何やってるのか ? 説明文もあるはずなんだけど, 積分範囲が j=3 からとか言っていて ちっとも意味わかんない。外部から与えられるパラメータに依存しないことをやって xend=j としてるけど, それなら最初から xend=定数 じゃだめなの ?? 説明の文章も 意味わかんないし。g(x) の値が 10^-5 になる x の値とか言ってるくせに, プログラム 中ではそんなの全然出てこないし。謎だ。j=50 までに所定の条件を満足しなければ, xend がおかしな値のまま計算を実行しちゃうしね。それに関数の値が小さいからって, それ以降を無視しては, 一般にはダメでしょ。例えば 1/x の [0,∞] での積分とか ...
Exercise3.6.f (0809): うひゃぁ, Word98 で読めない文字フォントで書いてる。 > MS のバカ ! ちなみに「概要」っていう言葉の意味, わかってる ?? そこで モンテカルロ法なわけだが, あいかわらず少ない経験に基づき勝手な憶測を展開して いる。ここで特にそういうのは, 自分で反例を示しているにも関わらず, ある主張を するという自己矛盾を抱えているからだ。あきれた。
h02s2069,
exe36v1.f (0806): 「感じられた」でなくてきちんと調べれば, もっといい レポートになったのに。また想定外動作についてもきちんと考察すればいいのにね。 いずれにしても (下のものも), 実行例を一つだけ挙げて結果を総括的に述べているだけ では, あんまり科学的・実証的なレポートじゃないね。
exe38v1.f (0806): 一瞬 do ループ中の if 文はいらないんじゃないかなと思った けど, よくよく考えると必要。ということは ...... げげっ テキストに不適切な個所が あることをハケーン (汗) それはさておき, ff(x, y) / n ってこれで良いのかなぁ ?
exe33ex1v2.f (0729): 非標準の system というサブルーチンを呼んでいるが, 説明が全くない。org_func(x, y) という関数についても「xをyで割ったときの余りを 戻り値とする」ような説明が書いてあるけど, よくよく見ると違うんじゃないの ? とか, もっともらしく答えを印字するけどちっとも合ってないとか。誤りの予感。 ま, やってることをろくに理解せずに複素数解に拡張しようとしてコケてるのかな ?
exe33ex1v1.f (0716): Listing 15 の改造で, 得られた解の誤差も表示するように なっている。また解が純虚数と表示される場合もある。しかしまず, 誤差の計算方法の 意味がわかんない, 説明文とソースプログラムの記述も違うし。それに実行例どおりに 数値を 100, 2, 2 と入れても, 示された実行例と同じ結果にならないし。でねでね, org_func(x, y) がわけわかんないのよ。説明も全くないし。最後にね, 純虚数の解が 得られる場合について繰り返し近似の経過を見てると, おかしな事やってるとわかる。 例えば -2 の 4 乗根を求めようとしてね, x の初期値を 1 とすると, 1.18920712 に 収束したかに見えて, とつぜん解が 1.18920712 * i であると表示される。これって, だんだんと解に近づいていくというまっとうなニュートン法 とは違うよね。
h02s2083,
euler-runge1.f (0810b): 締切り後だけど改訂版だそうだ。10 行毎に表示を一時 停止させるというアイデアは良いが, その実現方法が随分とわかりにくいね。さて, 微分方程式の解をグラフとして描いてくれたのは良いのだけど, この図を見て「一致 している/していない」と言われても, 作図と表示の分解能や期待した精度などが ちっともわからないので, なんだかなぁ。また「だんだん近づいていくタイプの方法」 って言ったって, そうじゃないのって一体何なんだろうとか, 解析解を(どうやってかは 知らないけど)求めたのなら, その作図にあたって x のきざみを 0.0001 とオイラー法 やルンゲクッタ法のきざみ h よりも小さくする意味は何だろうとか, 謎は尽きない。
euler-runge.f (0810): これも説明文と思しきファイルは UTF-16 なテキスト ファイルだよぉ。さて Step size=1 の時に「下五桁の精度を出している」の桁数って どうかぞえるの ? 「概要」とか「解析解に具体的な数値を入れて得られた値」とか, またしてもバイナリを添付してきたりとか, 真面目にやってんのか ? という面も少々 ある。
newton3-3.f (0810): 説明文と思しきファイルは file コマンドによると UTF-16 なテキストファイルだそうだ, そんなのいったいだれがまともに読めるというのか。 さてさて, いらないことばかりごちゃごちゃと書いて, 必要なことはなーんにも書いて いないんだね。プログラムもネスティングが滅茶苦茶でワケワカランしぃ。あぁ resolt とかいうファイルに実行結果と考察があるのね。んで「原理的に得られる最高の精度」 って, もっと高い精度での計算は原理的に不可能なんですか ? はぁ ?? 「初めの値を 100 倍」する意味ってあるの ??? まあ, 良いことも一言だけ書いてあるけどね。 最後に, バイナリまで送りつけてきて, どういうつもりなんだろう ????
pil.f, rrand1.f (0625): テキストの Listing 21, 22 の改造と思われる プログラムリストが送られてきたけど, だからなんだっちゅーの ??

(2004-08-19, 19:10 更新)