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

課題:

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

ヒントなんだかコメントなんだか ......

レポート
そもそもこの言葉の意味がわかってるのかなぁ。レポートっていうのは, 日本語で言えば ``報告書'' だぞ。つまり何かを報告するわけだ。したがって 報告書の主文は ``○○は△□である。'' っていうものになるはずだ。 そしてその主張へいたる根拠を説明したり, その他いろいろ説明してるものだ。 結論, レポートとはプログラムリスト only ではない。
Exercise 3.1
理系の大学生ともあろうものが, 二次方程式も満足にあつかえないの ? って 思わせるプログラムがほとんどだ。
複素数, 実数, 虚数とかの言葉の意味と関係がわかっていないのだろうか ? 一般の複素数 c を実数 a, b を用いて c = a + i b (i は虚数単位) と書く意味を 考えてみましょうって, なんでここで算数を教えなくちゃいけないのかなぁ。
Fortran 文法の基礎としては, そういった種類の数を扱うときに使う 変数やら型変換関数やらは, 何でしょうってことだし。 数値計算としては, どういう時に ``桁落ち'' が発生するかを考えて, 対策をしてみましょうって事なんだけどな。
解と係数の関係の逆襲
(ある人の質問への回答より)
>>e.x 3.1 で解と係数の関係 (x1 + x2 = -b / a ,x1 * x2 = c / a) をどう
>>用いればいいんですか? 一つの解を公式で求め、もう一つの解を求める
>>のに、x2 = c / (a * x1) では用いたことにならないんですか?

何も考えずに (特別な工夫をせずに), プログラム中に式を羅列しても, 
意図した計算結果を得ることができるとは限りません。

1) なぜ解と係数の関係の式を用いるのか ?

2) 上の答えは「○○だから/○○になるから」という様な説明になると
  予想 (期待 ?) されるが, そのような状況は常に起こることなのか ? 
  どんな時にそのような事態が生じるのか ?

3) そのような不都合が生じる事態は, 予測可能なのか ?

4) 予測可能であれば, 対策をたてて防ぐことが可能である。

という論理です。上記 1-4 を考えれば, 答えに到達できると思います。
質問に対する直接の解答ではありませんので, あなたが期待した答えじゃ
ないかもしれないけど, 私は「教えられらものをただひたすらに覚える」と
いうのは大学での勉強だとは思っていませんので, あしからず。

PS.
(a, b, c) = (1,  -10000,  500) -> x1 =   9999.9502, x2 =   0.0500002503
(a, b, c) = (1.414, 100.2, 0.21) -> x1 =  -70.8607025, x2 =  -0.00209587021
まあ, 10 進数で 6 桁くらい合ってればいいでしょう。
Exercise 3.3
プログラムが実行されている最中の, その場所 (例えば メインルーチンの do ループの中や 関数 f の中) での 変数の値がどうなっているのかを, 考えてみましょう。 考えてわからなければ, 実際に表示するようにプログラムを改造して 調べてみましょう。 メインルーチンで用意された値を関数中で使うにはどうすれば良かったでしょうか ?
作成したプログラムによる計算結果は本当に正しいのか ?
幸いにして今回の課題については, 解析的に答えを求めることができるものが 多い。プログラムによる数値計算の結果と比べることにより, 計算の妥当性を 評価できる。または, 解析的に得られた答えと一致した計算結果を得るために, プログラムの改造・使用方法の検討が必要なはずだ。 例えば 4 の自乗根を計算するのであれば, 答えが 2 にならないとイケナイはずで あるし, (f(x))**2 の形の関数の積分なら, 被積分関数が恒常的に零でない限りは 有限の値になるはずである !! そういったところの検討が甘すぎる人が多い。 コンピュータで計算したことは, 結果の正しさを保証するものではないと肝に命じて ほしい。
数値計算の計算誤差って何だ ? 計算精度って何だ ?
誤差って, 何を基準に言うものなの ? 計算精度って, 計算結果が 1. とか 1.00794 とか 1.0 と表示される三通りの プログラムがあったとして, その三つのどれが精度が高いっていうの ? もし表示に指定されている format 文が f1.0 や f9.5 や f5.1 っていう違いだけ だったりすると, それは *計算の精度* には, どう関係してくるっていうの ??

提出状況とコメント

学籍番号ごとに, 提出されたプログラムの名称と提出日のあとに, ちょっとしたコメントが書いてあります。 プログラム自体はここに載せませんが, 他人に付いたコメントが参考に なるかもしれません。 いずれにしても, コメントを参考にするかどうかは, 自分で考えて決めてください。
h01s2001,
quadra0.f (0731): ``大きい解をまず求め'' って言っても, ちっとも大きさを比べてないじゃん。解と係数の関係の使い方が中途半端なので, 計算誤差を避けることができません。型宣言したのに使っていない変数がある。
newton1.f (0731): 表示がおかしくて何の数値を入力するのか戸惑う (``trial'' の意味わかってる ?)。説明文の日本語がワカラン。``nとoをすべてのところにつけることで一回の入力で収束させることができるようにした。'' って, 何を言いたいの ??
euler1.f & runge1.f (0731): これらのは講義資料どおりのプログラムだ。でも説明文の方がコジツケコジツケ。``値が小さく精度がいい'' とか ``hが順々に足していくため誤差が広がる'' とか。だってプログラムは ``x = i * h'' だから全然たしてないやん。それとも足す回数が少ない Step size が 3 以降 (爆笑) の方が正しい答えだって言うつもりなんだろうか ?? だいたい x=0 から x=2 の範囲で微分方程式を解くのに, h=3 にしてどうするつもりなの ? 微分って言葉の意味わかってますか ?
simpson1.f (0731): まあこれは特に問題ないか ... と思ったら, 説明文中の関数の式は間違ってるし, プログラムでは使っていない余分な変数が型宣言されている。最大の問題は, この計算値は正しい値なのか ? ってことだ。
simpson2.f (0731): 積分範囲が [0, ∞] なので上限をいろいろと変えて計算できるように工夫したのは良い。しかし問題は, この計算値は正しい値なのか ? ってことだ。で, 説明文によると何かグラフを描いたらしいのだけど, 関数の値が無限遠で零になるのと積分値 (面積だよ !) がどうなるかは, 違うことなんだけどな。積分って言葉の意味わかっていますか ??
newton1.f (0711): あなたの意図通りに動作して, 方程式の解を計算しますか ? プログラムが実行されているときに, n と a の値はいくつですか ?
quadra0.f (0704): だいたい良さそうなんだけど, パット見て気がつくのは, bb=0 の時の解はこれでいいのか ? ってことだ。あとは ff の使い方 (さらに言えば x7 から x11 までの使い方) が美しくないって事だ。ちなみにたとえプログラムが正しくても, それだけじゃあレポートの体裁を成していませんね。
h01s2002,
(0730): 添付されていた三つのプログラムのコーディングスタイルは, この演習でやっていたものと違いますね。どこかの本に書いてあったプログラムを写したのでしょうか ?
3-4.f (0730): 何をやっているプログラムなのか, さっぱりワカランです。とりあえず Format 文を無理に使わなくてもいいのではないでしょうか。ループの終了判定の条件を逆にすれば少しは見通しが良くなるけど, 気分的なものか(?)
...... ああそうか ! コードを整理して, ためし計算の出力をグラフにプロットして, ようやくわかったような気がする。もしかして三角関数一周期分についてオイラー法で dy/dx=2*pi*cos(2*pi*x) を解いたことにした sin 関数と Fortran 組み込みの sin 関数の差をとって, オイラー法について何か言おうとしたのかな。とすると, 設問の意味を思いっきり取り違えているような気がする。
3-7.f (0730): 乱数の生成法について何か別の本を見たのでしょうか ? 実行させると数値がズラッと表示されます。何をするプログラムで, この数値のどこをどう見ると「問題はない」と判断できるのでしょうか ?? 説明がないのでわかりません。
3-8.f (0730): 添付されているプログラムでは nstep や iseed に何を入れても同じ答え s=4. が出力されます。どこが「実行結果 成功です。」なのでしょうか ?
3-1.f (0711): 下の文の「ちなみに」の文とその次の文をそっくりそのまま繰り返す (もしかして科学的報告書における結果の示し方がわかっていないのかな ?)。例えば「問題なかった」と六文字で言われたとして, そのまま信じるのは科学的な態度と言えますか ? 尊氏が言ったり, 定説だったりすれば, 信じる根拠になるとでも言うのだろうか ? また, 複素数解であることを示すことができれば, それが具体的にいくつであるかを示さなくてもいいのか ? (ここも下の繰り返しだが) 数学的に正しいのか ? ということで 惜しいところでした。そうそう, メール末尾につく signature がおかしくないか ?
3-1.f (0704): 説明文をつけてくれたのはいいんだけど, 「dd( 0」とか「複数解」とか「MAN」とか誤記が目立つとゲンナリするね。ちなみに「実行結果」っていう言葉の意味は分かっていますか ? 基礎物理/化学実験や物質理工実験のレポートで「実験結果」っていうと何を書くもんだぃ ? さらに「仕方なく...」の文は日本語として滅茶苦茶で意味不明だよ。この説明を読むと意図通りではあるのだが, D<0 の時に表示される ``NO ANSWER'' (解が無い) っていうのは数学的に正しいのか ? ということで 惜しいところでした。そうそう, メール末尾につく signature がおかしくないか ?
3-1.f (0627): dd=0 のときにすることはこれでいいの ? dd<0 のときにだけこんな事してる意味は ? dd>0 でも dd=0 でも dd<0 でもない場合ってどんなとき ? 得られた方程式の解は正しいのか ? いずれにしてもレポートの体裁を成していませんね。
h01s2003,
ex31b.f (0730): 解と係数の関係を用いる意味がわかってないようだ。また「判別式が D<0 になった時, 複素数がうまいように出せず」っていうのは, いったいどういう風に出すのが *うまい* と考えていたのだろうか ? ちなみに ``cc/aa/x1'' という式の書き方は, わかりにくくなるので避けた方がよい。
ex33b.f (0730): 文関数を使っているのが, やや反則です。また方程式の解の初期値を 1 に決め打ちしてるところもやや減点かな。
ex34a.f (0730): これは講義資料通りのプログラムだ。
ex34b.f (0730): これも講義資料通りのプログラムだ。
(0730): 以上の二つのプログラム (ex34a.f, ex34b.f) の実行例として, 同じ Step size で実行した結果を示す *前に* 「ルンゲ-クッダ法の方が精度がよくて収束速度も速い」との記述があるが, なぜそう考えるのかの説明がない。
ex35a.f (0730): まあ説明通りのプログラムだ。
ex35b.f (0730): まあ説明通りのプログラムだ。
(0730): 以上の二つのプログラム (ex35a.f, ex35b.f) はいずれも台形公式に基づく数値積分のプログラムだ。ところで, これらのプログラムによる計算結果が正しいかどうかって, どうやって判断すればいいの ??
h01s2004,
quadra2.f (0731): 解と係数の関係の使い方が半端だ。それを用いるワケを理解していないようだ。
euler.f & runge.f (0731): これらは講義資料どおりのプログラムだ。で, 説明文は漠然としすぎていて, あなたが何を考えているのか, さっぱりわからない。
simpson.f (0730): なるほど, 被積分関数の形を図にしてくれたんだね。スバラシイ !! しかし惜しむらくは, あなたの意図とやってることに齟齬があるらしいってことだね。ところで「よって、グラフより 0 に収束する」って, 何の説明なのかな ??
newton.f (0730): ソースリストの読みやすさにも注意を払いましょう。論理的なまとまりごとに区切ったり, インデント (字下げ) によりループ範囲を明示したり。出力されるメッセージにも工夫の余地あり。``trial'' っていう単語の意味, わかってますか ?
newton.f (0711): あなたの意図通りに動作して, 方程式の解を計算しますか ? プログラムが実行されているときに, n と a の値はいくつですか ?
quadra.f (0627): d=0 でのコジツケにワラウ。解と係数の関係は使わないのか ? いずれにしてもレポートの体裁を成していませんね。
h01s2005,
oira.f & runge.f (0731): これらは講義資料どおりのプログラムだ。それぞれの実行結果らしきファイルも添付されているが, 説明文と対応していない。いかにも辞書的な文を書いても, あなたのプログラムや実行結果とどう照らし合わせて読めというのだろうか ?
quadra0.f (0731): 解と係数の関係を用いる意味がわかっていないらしい。使い方が中途半端なために, 必ずしも計算誤差を避けることができない。
d.f (0731): 最初に公式を用いて解を求めてしまってから, 判別式で場合分けして表示を切替る (しかし実は, どれでもおんなじような表示だ) ことの意味・意図は何なんだろう ?
(0731): 説明文が無くっちゃぁ意味不明なことが多すぎる。
h01s2007,
exercise3_1.f (0731): a=0 で二次方程式じゃない場合や, みんなにとって鬼門の解と係数の関係の所はいいぞっと思ったら, 複素共役な解でつまずくのか ...... ハァ。
exercise3_3.f (0731): 入力をうながすメッセージやその順番などもいいですね。使ってわかりやすいプログラムです。もちろん答えも正しく得られますね。
exercise3_4_euler1.f & exercise3_4_runge1.f (0731): これらは講義資料どおりのプログラムですね。で, 何をどう比べて, その結果はどうだったのだろう ? 説明文が無い。
exercise3_5_simpson1.f (0731): シンプソン法のプログラムであることは, 説明文の通りだ。でもそれ以降の記述は滅茶苦茶。結果の正しさの確かめ方は, 何を言ってるんじゃい ? 数値積分で求まった値をどうやって微分するって ? 求めた解 (積分値, 数値だ !) を用いてどうやって課題後半の積分を求めるってぇ ??
(0731): 以上の全てについて, 一言二言だけじゃ, ちっとも説明になってないよ。
h01s2008,
(0729): 四種類の課題について 7 つのプログラムを作成しているが, せっかくの説明文書なのに, 説明が舌足らずというか, 言葉を省略しすぎというか, それじゃぁ説明になってないやんとか (無いよりましなことは確かなんだが) ......
kai2.f (0729): まあ, ごく普通の素直なプログラムだ。\\
kai2-1.f (0729): なるほどね。解と係数の関係を用いる意味がわかっていないんだね。で, もしルートの有無で答えの精度が違うのであれば, ルートの関数を使わないようにすればいいのでは ? 組み込み関数のルートを使わないで方程式の解を求める方法はいくらでもあるよね ? やってみて精度は落ちたの落ちなかったの ? そういうちょっとやればわかるはずの検証をサボって何か言っても, それはただのイイワケだね。
euler1.f (0729): \\
runge1.f (0729): 上と合わせて, 結局のところ解析解はいくらで, それを得るために必要なきざみ幅はいくらなのかな ? ところで計算値の細かさって何だ ? 表示桁数の多さならば, format 文で何とでもなるでしょ ? (結果の正しさは別にして) それって計算方法に依存する話なの ??
newton1.f (0729): 添付の文書では答えが得られたらしいが, その答えは正しいのか ? そもそも関数 f, df の中で n, a は未定義なので, そんなプログラムで正しい答えを算出したとしたら, それこそ奇跡だ。
simpson1.f (0729): \\
simpson2.f (0729): プログラム自体に特別におかしいところはない。しかし simpson2 で Xend=10^2 としている説明文書の意味がワカラン。そしてプログラムをそのまま用いると Xend=11 で sekibun = 0.963190935 となり, ちっとも 0.885121 に収束しないのだが ??
h01s2009,
quadra0 & newton1 (0731): コンパイル済みのバイナリファイルを送りつけられても, どうしようもありません。説明文も支離滅裂です。計算結果も正しくありません。ソースがないので, 何を間違えたのかもわかりません。お手上げです。
quadra0.f (0627): そもそも方程式の解として出力される数値は正しいのか ? d<0 の時にも Inf な解が出るしぃ。いずれにしてもレポートの体裁を成していませんね。
h01s2010,
h01s2011,
(0730): やり直したとメールの本文に書いてある exercise3,1 ですが, そのメールには添付ファイルがありませんでしたよ ?
exercise3,1.f (0627): d<0 の時の解ってそういうもんかぁ ? 解と係数の関係は使わないのか ? いずれにしてもレポートの体裁を成していませんね。
h01s2012,
quadra0.f (0731): 確かに届いていました。見逃していてごめんなさい。さて, プログラムの動作としては特に不都合はないし, 説明文はこのプログラムの内容を説明している。しかし疑問なのは, なぜ ee1, ee2, ee 等を導入しなければいけなかったのか ? 普通の教科書に出てくる判別式を用いずにその 1 / (2*aa)**2 を, しかも各項ごとに計算するものだから ee = dd / (2*aa)**2 の関係であることもわかりにくい, そういうものを用いた理由は何なのでしょうね ?? この程度では計算速度の向上に寄与するとも思えないし, それよりは *わかりやすい* プログラムを作る方が 吉 かと思われます。で, 下のコメントの ``ちなみに'' 以下に続く。
exercise3_1.f (0731): 下のプログラムの修正版らしい。説明文では, なにか一所懸命に説明しようとしているが, それとプログラムとが全く一致していない。そもそもこのプログラムはエラーが出てコンパイルできない。したがって, 説明文中の実行例を得ることができない。ちなみに「実際に計算した値と比較しても良好な値」と言われても, その「実際に計算した値」というのが何のことなのか, レポートの読者にはさっぱりわからない。
quadra0.f (0728): aa や bb での判定には工夫の跡が見られる。しかし dd1 と dd2 の扱いはひとめで理解しがたく, そのために dd は判別式の値ではないことに気付きにくい (正負零の判定は間違ってないが)。最後に残念ながら dd<0 な場合の解は正しく表示されない。
h01s2013,
newton1.f (0725): 確かに今度はコンパイルエラーは無いんだけど, 答えは出てこない。関数 f, df の中で用いられている変数 n, a の値が未定義だから。
niji.f (0725): ねらいはイイんだけど, 変数 rute の使い方に誤りがあって, 正しくない答えを出す場合があるところが, オシイ。
newton1.f (0723): n, a に関しての説明文が付いているが, 実際に送られてきたプログラムはコンパイルすら通らない。もしもそこを直したとしても, 添付の説明文のような動作はしないと思われます。どうしたのでしょうか ??
quadra0.f (0704): やっぱり分子での桁落ちについてわかってないのね。あと, よーく考えれば x6 と x7 は無駄でしょ。最後の三行のインデントは正しくしないと, 読んでて分かりにくくなるね。いずれにしてもまだレポートの体裁を成していませんね。
quadra0.f (0627): なぜ解と係数の関係を利用するのか理解していないと思われ。計算誤差はどこから生じるのか ? また dd<0 の時って, 方程式の解は純虚数になるんですか ? いずれにしてもレポートの体裁を成していませんね。
h01s2014,
quadraX.f (0730): ファイル名にシングルクオートが入っているところが何とも言えません (苦笑), 左では X で置き換えていますが。型宣言しているのに使っていない変数があって混乱します。解と係数の関係を使う理由がわかっていないみたいですね。
newton1.f (0730): 単純なエラーでコンパイルできません。文関数を使うのは, やや反則です。
euler1.f (0730): これもエラーでコンパイルできません。
simpson.f (0730): これも単純なエラーでコンパイルできません。
sum1 (0730): これはコンパイル済みのバイナリファイルだ。でもどの課題のつもり ?
(0730): 以上の 4 つのプログラム (エラーでコンパイルすらできないもの 3 つ) とひとつのバイナリファイルだけを送りつけてきて, 説明文は全くなし。単純なエラーはこっちで直してもいいけど, プログラムリストだけじゃレポートにならないんだけどな。結局どういうつもりなのでしょうか ?
h01s2015,
Exercise3.1.0.f & Exercise3.1.3.f (0731): これらは下の (0728) のものから変更点は無いようだ。
Exercise3.3.1.f (0731): きのう (0730) の説明文から進歩したのは, ``何が間違っているかは発見できなかった。'' っていう記述。プログラムは今日はじめて見るが, 予想通りに関数 f, df の中で n, a が未定義だ。他人に対する同類のコメントを見て気がつかないもんかなぁ ?
Exercise3.4.1.f & Exercise3.4.2.f (0731): これらは講義資料どおりのプログラムだ。実行例を表にまとめて見やすくしたところに工夫の跡が見られる。でも説明がコジツケコジツケ。収束の基準がわかってなさそうだし, オイラー法では刻みが大きい方が良いかのような物言い。
(0730): 「Exercise3.3.1が...」って言っても, 添付ファイルは無し。もしかして過去に送付済みのプログラムについての説明かな ? でも 3.3.1 って無いんだよね。ちなみに n=5, a=2 なら 2 の五乗根を求めることになると自分でも言ってるけど, その答えは 1.0000304 じゃないよね (自分で 1.0000304 を五乗してみなさい)。
(0728): 二通りの計算方法 (のつもり) のプログラムとその実行例を示してくれたことは, たいへんに結構なことだ。で, その結果についてのコメント/評価は ?
Exercise3.1.0.f (0728): 残念ながら, 解と係数の関係を用いる意味がわかっているとは思えない。○○の一つ覚えのようにあっちでもこっちでも使いさえすればいいってもんじゃない。
Exercise3.1.3.f (0728): まあこれは, 説明通りのプログラムだ。
h01s2016,
Exercise3.4.1.f & Exercise3.4.2.f (0731): それぞれ講義資料どおりのオイラー法およびルンゲクッタ法による計算プログラムだ。説明は ... やや物足りない気もするが, まあこんなもんかな。ああそうだ, 真の値はいくらになるのか, 解析解について誰も何も言わないなぁ。
Exercise3.3.f (0730): 関数 f, df の中で n, a の値が未定義です。もしこのままのプログラムで何らかの計算結果が得られたとしても, その値は無意味です。だって説明文中に示されている実行例の結果の 5 の五乗根だって, 答えだとあなたが主張している 1.43116283 を自分で五乗してみなさいな (結果は 5 じゃないでしょ)。
Exercise3.1.f (0728): 残念ながら, 解と係数の関係を用いる意味がわかっているとは思えない。○○の一つ覚えのようにあっちでもこっちでも使いさえすればいいってもんじゃない。そして実行例付きの説明はいいんだけど, カンマとピリオドの区別がついてるのかな ?
h01s2020,
ex3-4a.f & ex3-4b.f (0731): これらは講義資料どおりのプログラムだ。実行結果はわかりやすい表にまとめられています。しかし説明文が滅茶苦茶な論理, オイラー法は刻み幅が大きいほど正確な値になるとでも言うつもりなのだろうか ?
ex3-3.f (0731): (自覚しているようだが) 説明文中にあるように計算値はおかしい。他人の提出物へのコメントを見て, 自分のプログラムにも同類の欠点があるとわかったのなら, やっぱり直してほしいな。時間はたっぷりあったはずなのだから。
ex3-1a.f (0731): 説明文どおり, 解の公式をそのまま使っただけの二次方程式の解を求めるプログラムだ。
ex3-1b.f (0731): こっちは解と係数の関係も用いているが, 使い方が中途半端なために, 必ずしも計算誤差を避けることになっていない。説明文中ではそれなりにもっともらしいことを言っているのに, その「絶対値の大きい方の解」との判断を, プログラム中では行なっていないじゃないか ! いいかげんなことを言う (する) んじゃないっ !!
h01s2021,
ex3-1.f (0704): gg, ii あたりが美しくないな。aa.eq.0 の判断と dd の正負零の判断は, 意味的に並列じゃないので, if--elseif-- ってつなげるのには違和感があるな。計算誤差対策はこれからなのかな。いずれにしてもレポートの体裁を成していませんね。
h01s2022,
exercise3.1.f (0730): 計算誤差を避けるために倍精度変数を使うのは, ひとつのやり方ではあるが, この演習の意図とは違う。プログラムの論理自体も, 解と係数の関係の使い方を見ると,「わかってないなぁ」と思える。
exercise3.3.f (0730): 文関数を使うのは, やや反則です。収束判定の eps が 0.1 なのに, 結果の表示を小数点以下 13 桁やっても無意味です。``a= ,n= ,x0='' と入力をうながすのと実際に変数に代入される順序が違っていて, ヒジョーに使いにくいプログラムです。(おなじ特徴的な間違いをしている人がいるって, どういうことだ ??)
exercise3-4-1.f (0730): これは講義資料通りのプログラムですね。
exercise3-4-2.f (0730): これも講義資料通りのプログラムだ。
(0730): 以上の二つのプログラム (exercise3-4-1.f, exercise3-4-2.f) は, どっかで見かけたような単語のつづり間違いがあったりと, なかなか興味深い特徴を備えています。「解説はできません。そのへんをご了承ください。」って, 了承するも何も, 提出されたものを採点するだけです。出さない自由もあるわけだしね。
exercise3-5-a.f (0730): これはバイナリファイルであって, プログラムのソースリストじゃない。
exercise3-5-b.f (0730): 考えて計算結果を求めてもらう課題だから, プログラムだけあってもだめですね。レポートの著者 (あなただ) の考えが, レポートの読者にはわかりません。
ex3-1-a.f (0627): dd>0 の時微妙に答えが変だ, dd<0 の時ってこうかぁ ? プログラムの書式としてインデントがそろっていないので読みにくい。いずれにしてもレポートの体裁を成していませんね。
h01s2023,
euler1.f (0730): まあ, 講義資料通りのプログラムですね。
runge1.f (0730): これも講義資料通りのつもりかもしれないけど, 実はエラーが出てコンパイルできない。
(0730): で, 以上の二つのプログラム (euler1.f, runge1.f) をどう用いて, どういう結果が得られたから「ルンゲクッタ法の方が精度が高い。」と判断したのでしょうか ? 説明が全くないので, ちっともわかりません。
simpson1.f (0730): そしてこのプログラムはなんだろう ? 説明書きが全く無しでリストだけ届いた。おまけにエラーでまともにコンパイルできないし。
newton1.f (0711): あなたの意図通りに動作しましたか ? 正しい答えを出しましたか ? 使いにくくありませんか ? プログラム実行中に, 特に function df のブロック中での n と a の値はいくつになっていますか ? そしてそれにはプログラムの論理の上で正当な理由がありますか ?
newton1.f (0704): こんなプログラムで期待通りに任意の数 a の n 乗根が得られたのでしょうか ? ``end do'' のインデントがおかしいね。
quadra0.f (0704): d<0 の時に正しい答えが得られますか ? いずれにしてもレポートの体裁を成していませんね。
quadra0.f (0627): d<0 の時って ``kainasi'' なのか ? 解と係数の関係は使わないのか ? いずれにしてもレポートの体裁を成していませんね。
h01s2024,
h01s2025,
h01s2026,
newton1.f (0711): あなたの意図通りに動作して, 方程式の解を計算しますか ? プログラムが実行されているときに, n と a の値はいくつですか ?
newton1.f (0627): 例題を入力しただけですね。いずれにしてもレポートじゃありませんね。
quadra0.f (0627): dd<0 の時に ``判別式が正じゃない'' のは確かですが, 方程式の解はどうなっているでしょうか ? 解と係数の関係は使わないのか ? いずれにしてもレポートの体裁を成していませんね。
quadra0.f (0620): エラーが出てコンパイルできませんね。ブロック if 文がわかってないのでしょう。
h01s2027,
Ex3.1.f (0730): プログラム自体はきれいにまとまっているが, 問題の中心的な意図であるところの解と係数の関係を用いることで計算誤差を避けるようにはできていない。
Ex3.3.f (0730): なんか他所で見たようなヘンチクリンさがあるプログラムなので, 繰り返して言うのはヤーメタっと。ところで説明文中の「しだいに1番上の値に近づいていく」って, どういうことだろう ??
Ex3.4-1.f (0730): これはだいたい講義資料通りのプログラムだ。
Ex3.4-2.f (0730): これもだいたい講義資料通りのプログラムだ。
(0730): 「値に1を入力」って, 何の値だろう ? この値 (1) って, 現実的な, もっともらしい, 意味のある 値なのだろうか ? で, 以上の二つのプログラム (Ex3.4-1.f, Ex3.4-2.f) の結果のどこをどう見ると「だいだい0.3くらいの誤差」って事になるのかな ? それって課題にちゃんと答えているのか ?? 期待されている真の値と比べてどうだ ???
Ex3.7.f (0730): 講義資料に書いていないプログラムを説明なしに示して「きちんといきました。」って言われても, わけわかりませんね。これも他所で見かけたような謎のプログラムだしぃ。
Exercise3.1.f (0627): dd<0 の時ってそういうもんかぁ ? 解と係数の関係は使わないのか ? いずれにしてもレポートの体裁を成していませんね。
h01s2028,
newton1-3.f (0731): どうして n=1, a=2 とした時の ``真の解'' が Ans= 1.43116307 なのかな ? おかしいと思いませんでしたか ?? 関数 f, df の中で使っている n, a が未定義です。
ex3-1-2.f (0730): 説明文では「Listing 12を打ち変えて、解と係数の関係を用い」と書いてあるが, ちっとも解と係数の関係を使っていないよ ? dd<0 の時も答えを出さないし。
euler1.f (0730): これは講義資料通りのプログラムだ。
runge1.f (0730): これは講義資料とは少し違うプログラムだ。
(0730): もし以上の二つ (euler1.f, runge1.f) を用いた計算の結果を比べて何かを言おうとしているのならば, それはナンセンスだ。だって解こうとしている微分方程式が違うんだもん。ちなみに「結果を見てわかるように」って, 何をどう見ると精度の良し悪しがわかるんだろうか ?
h01s2029,
ex31.f (0730): 計算誤差を避けるために倍精度変数を用いるというのは, ひとつのやり方ではあるが, この演習問題の意図したこととは違う。プログラムを見ると解と係数の関係を用いる意味がわかってなさそうだしね。
ex33.f (0730): 数値の入力をうながす ``a= ,n= ,x0='' と実際に入力される順序が違うのは, ヒッジョーにわかりにくいプログラムだ。文関数を使っているのも, やや反則だし。おまけに収束判定の eps が 0.1 なのでは, 得られた計算結果を小数点以下 13 桁も表示する意味がない。また説明文中での実行例では n=2,a=4 とした例を示しているが, 4 の二乗根なら答えは 2 のはず。2.1284224553969 なんて答えを出して平気でいるとは, どういう神経だろう ?
ex34a.f (0730): これは講義資料通りのプログラムだ。
ex34b.f (0730): これも講義資料通りのプログラムだ。
(0730): 以上の二つのプログラムの実行例として, 同じ Step size で実行した結果を示して「ルンゲクッタ法の方が収束速度がはやい」と言っているが, どこをどう見るとそういう結論になるのかな ? そもそも収束する行き先はどこ ? また桁数の多さから正確さを判定しているようだが, あなたの ex33.f の様に format 文を用いれば, 表示の上では桁数は好きなだけ出せるのだが ?? そもそも 0.4 という出力だって 0.4000000000 だと思えば桁数は多いし。
ex35a.f (0730): 標準的なシンプソン法による数値積分のプログラムだ。しかし計算値が正しいかどうかって, どうやって確かめるのだろうか ?
ex35b.f (0730): これも標準的なシンプソン法による数値積分のプログラムだ。積分範囲が [0, ∞] という課題に対して [0, 10000] としている。上限をいろいろ変えて計算したみたいな説明である。しかし積分値はそれで本当にいいのか ? 物理的数学的におかしいと思わなかったのか ?
ex35a.f と ex35b.f は, 7/30 に受け取ったメールに含まれていました。コメントし忘れていました。(0802 記)
h01s2030,
nizihouteishikinikai.f (0731): 解と係数の関係の使い方が中途半端なので, 必ずしも計算誤差を避けることができない。プログラムとしては倍精度変数を使っているのでそれなりに正しく答えは得られるが, 課題の主旨とは違う。
zyoubibunnhouteishiki.f (0731): ちっとも常微分方程式に関係ない (笑) けど, それはさておき。文関数を使うのは, やや反則だ。収束判定の eps が 0.1 なのに f16.13 で結果を表示するのには, いったいどんな意味があるのだろうか ?
oira-.f & runngekutta.f (0731): これらは講義資料どおりのプログラムだ。で, 比べてどうだったっていうの ? 説明が全くない。
nyu-tonnrahusonn.f (0731): これは講義資料の例題どおりのプログラムだ。これがどうかしたのかな ? 説明が全くない。
(0731): 「○○のプログラム」または「○○の式」のヒトコトだけでは, ちっともレポートじゃない !!
nizihouteisikinokai.f (0620): コンパイルはエラー無く終了するので文法的な誤りはないのでしょう。しかし方程式の解を求めるという目的に対して意味のある処理を行なっているかどうかは別問題です。いずれにしてもレポートの体裁を成していませんね。
h01s2033,
h01s2034,
newton4.f (0731): 講義資料のプログラムからの改造点など, 説明の文書もよく書けています。確かに common 文を用いるという選択肢もあるけど (名前付きの方が良いが), プログラムのお作法としては大域変数は使わない方が良い。普通の (物理や数学での) 関数でも多変数関数はあるよね, っていうか euler1 や runge1 でも使ってるやん。
euler1.f & runge1.f (0731): これらは講義資料のプログラムそのままですね。説明の文書も良く書けています。代表的な実行例として Step size をある値にしたときに出力される関数の値を書く所まではよい。しかし *収束* と言うときに, 何を変数と見立てて何が収束するのか, 収束先の (解析的な (?)) 値はいくらか, という論理関係がまだちょっと理解不足な点がありそうだね。それがわかっていれば, 文章で書いていたところを表にするなどして, わかりやすく表現できたことでしょう。
trapez1.f & simpson1.f (0731): これらは説明文書どおりのプログラムだ。レポートとしても良く書けていますが, 表にまとめて示してある数値の振る舞いと *精度* (何の ?) は, 直接関係しているのかな ? 少し勘違いしてるかも。
simpson2.f (0731): 数値積分の課題の後半については, そのチャレンジ精神がすばらしい ! 残念ながら完成品ではないが, プログラム的には関数とサブルーチンを区別しなくちゃいけないってことです。あぁ, あとレポートのお作法としては, こういう特殊なことをした時には参考文献を示すこと。
quadra1.f (0704): あぁ, こっちはできてるのね。両方のプログラム共になんだけど, ネスティングが入り組んじゃって論理が見にくくなってるね。dd の正負零によって三通りに場合わけするって論理が見えにくくなっている。実行例は, もう少し工夫しても良いのでは ? ちゃんと動く例や, 1 と 2 とで誤差が顕著な例とかね。
quadra2.f (0704): 解と係数の関係を使おうとしてくれたことは良いんだけど, d<0 の時の解は正しいか ?
h01s2036,
quadra0.f (0711): 一週間かけて, どれだけ進歩したのでしょうか ?
quadra0.f (0704): dd<0 の時には解を計算してくれないのかな ? いずれにしてもレポートの体裁を成していませんね。
newton1.f (0627): 例題を入力しようとしたのかな ? エラーが出てコンパイルできませんね。いずれにしてもレポートの体裁を成していませんね。
h01s2037,
exercise3_1.f (0731): a=0 で二次方程式じゃない場合や, みんなにとって鬼門の解と係数の関係の所はいいぞっと思ったら, 複素共役な解でつまずくのか ...... ハァ。
exercise3_3.f (0731): 入力をうながすメッセージやその順番などもいいですね。使ってわかりやすいプログラムです。もちろん答えも正しく得られますね。
exercise3_4_euler1.f & exercise3_4_runge1.f (0731): これらは講義資料どおりのプログラムですね。で, これのどこが, 「解の収束状況を調べたプログラム」なのだろうか。そして調べた結果はどうだったのだろう ? その点についての説明が全く無い。
exercise3_5_simpson1.f (0731): シンプソン法のプログラムであることは, 説明文の通りだ。で, 問題の積分値がどうなったかと, 課題の後半はどこへ ??
(0731): 以上の全てについて, 一言二言だけじゃ, ちっとも説明になってないよ。ちなみに「非常に難しかった」って, 具体的に何がどう難しかったのかな ? どこまではわかったのかな ?
h01s2038,
exercise3_1.f (0731): a=0 で二次方程式じゃない場合や, みんなにとって鬼門の解と係数の関係の所はいいぞっと思ったら, 複素共役な解でつまずくのか ...... ハァ。説明文もないし。
exercise3_3.f (0731): 入力をうながすメッセージやその順番などもいいですね。使ってわかりやすいプログラムです。もちろん答えも正しく得られますね。でも説明文はない。
exercise3_4_euler1.f & exercise3_4_runge1.f (0731): これらは講義資料どおりのプログラムですね。で, 何をどう比べて, その結果はどうだったのだろう ? 説明文が無い。
exercise3_5_simpson1.f (0731): 積分のプログラムらしい。でも結果は正しいのか ? 説明文が無い。
(0731): 以上のプログラムのための説明文 (レポートの本文だ !!) がありません。これではレポートとは言えないでしょう。
nijihouteishikinokai2.f (0704): あいかわらずインデントのつけ方が変で見にくいですね。dd>0 のときの論理が滅茶苦茶だし, 結局 d<0 の時の解ってどうよ ? ...... 下に書いてあるのと同じコメントになっちゃった。一週間たったのにプログラムに進歩がない ? diff すると ...... いずれにしてもレポートの体裁を成していませんね。
hannbetushiki2.f (0627): インデントのつけ方が変で見にくいですね。dd>0 のときの解と係数の関係の使い方が変だし, d<0 の時の方程式の解ってこうか ? いずれにしてもレポートの体裁を成していませんね。
h01s2039,
ex3.1.f (0627): インデントがついていないので読みにくい。stop 文はあちこちに書かないで, プログラムの出口はひとつにする。解と係数の関係を用いる理由がわかっていないようだ。dd<0 の時の方程式の解ってこうかぁ ? いずれにしてもレポートの体裁を成していませんね。
h01s2042,
ex3-1.f~ (0731): ほぼ講義資料のとおりの二次方程式の解を求めるプログラムだね, エラーが複数あってコンパイルできないし, 解と係数の関係を中途半端に使おうとしていることを除いて。
ex3-3.f~ (0731): ほぼ講義資料のとおりのニュートン法の例題のプログラムだね, エラーが複数あってコンパイルできないことを除いて。
ex3-4.f~ & ex3-42.f~ (0731): ほぼ講義資料のとおりのオイラー法とルンゲクッタ法のプログラムだね, エラーがあってコンパイルできないし式にも間違いがあることを除いて。
ex3-5.f~ (0731): ほぼ講義資料のとおりのルンゲクッタ法で二階微分方程式を解くプログラムだね, エラーがあってコンパイルできないことを除いて。
ex35.f~ (0731): ほぼ講義資料のとおりのシンプソン法の例題のプログラムだね, エラーがあってコンパイルできないし式にも間違いがあることを除いて。
(0731): 以上のプログラム達は, 例題の 1, 3, 4, 5 についての各一行のコメントとどんな関係にあるんだろう ? ここまで徹底されると, 実はこっちが試されてるんじゃないかと, うがった見方をしてしまうよね。
h01s2043,
newton1 (0711): 実行形式のバイナリファイルを送ってきても, レポートとしての要件を全く満足しません。
quadra0.f (0704): dd<0 の時には解を求めてくれないのかな ? 解と係数の関係はこれから導入するのでしょうか ? いずれにしてもレポートの体裁を成していませんね。
h01s2044,
quadra0.f (0731): ごく標準的なプログラムですが, 解と係数の関係を用いることにより計算誤差を避けるという点で, 課題の要求を満たしていません。また, 説明文書の日本語もわけのわからない部分があります。まずはそこからだな。
newton1.f~ (0731): なぜ emacs によるバックアップファイルを送ってくるのか謎ですが, もらった以上これを本編と見なします。プログラムはインデントがずれていて読みにくいし, 数値の入力を要求する順番も素直な論理じゃなくてわかりにくい。答えは正しく出てくるみたいだけど, 読みにくい・使いにくいプログラムは, やや減点です。ってゆーか, エラーが出てコンパイルできないじゃん。これで良く説明文中にあるように実行結果が得られたねぇ ??
euler1.f~ (0731): インデントがずれてて読みにくいし, そもそもエラーでコンパイルできません。
runge1.f~ (0731): これは講義資料とほぼ同じだがインデントがずれてて読みにくいプログラムだ。で, 上 (euler1.f~) と合わせての課題なわけだが, x=0 から x=2 までの範囲で微分方程式を解くのに step size を 3 以上にする意味がわからない。そもそも説明文中で最小な 1 きざみでもどうかと思うが (*微分* の意味が ...)。ましてや ``3以降'' ってねぇ, 「日本語の修行が足りません」と言うしかない。
simpson.f & simpson1.f (0731): プログラム自体は, まあ普通です。問題は計算結果の解釈だね。
h01s2047,
exercise3-1-2.f (0731): 解の公式を用いた, わりと標準的なプログラムです (ムダが少しあるけど)。でも計算誤差を避けるための手だてを講じていないので, 課題の主題を満足していません。説明文も通りいっぺんのものです。
exercise3,3-2.f (0731): 計算の部分はいいんだけど, 入力をうながすために表示する文言が変です ( trial の意味をわかっているのでしょうか ?)。また, 添付されていた Word 文書は, このプログラムの説明の文書ではありません。これでどうしてほしいのでしょうか ?
listing-16.f & listing-17.f (0731): これらは講義資料どおりのプログラムだ。説明の文書では二つのプログラムの実行例を並記して比べている。で, 「差が開いていった」のがどうしたと言いたいのでしょうか ?
exercise3-5.f (0731): 計算結果が示されているだけでは説明文書になっていない。計算結果の正しさについてはどう考えればいいのか ?
exercise3-5-2.f (0731): 台形公式による計算なのにプログラム名は simpson2 だ。こっちについては何の言及もないのか。
exercise3,1~1.f (0627): インデントのつけ方がおかしくて見にくい。dd>0 な場合に再度 dd>=0 を調べるのはなぜ ? 出力される解も微妙に違うし。dd<0 の時の方程式の解ってこうかぁ ? いずれにしてもレポートの体裁を成していませんね。
h01s2048,
exercise3_1.f (0731): a=0 で二次方程式じゃない場合や, みんなにとって鬼門の解と係数の関係の所はいいぞっと思ったら, 複素共役な解でつまずくのか ...... ハァ。
exercise3_3.f (0731): 入力をうながすメッセージやその順番などもいいですね。使ってわかりやすいプログラムです。もちろん答えも正しく得られますね。
exercise3_4_euler1.f & exercise3_4_runge1.f (0731): これらは講義資料どおりのプログラムですね。で, 何をどう比べて, その結果はどうだったのだろう ? 説明文が無い。
exercise3_5_simpson1.f (0731): 積分のプログラムであることは, 説明文の通りだ。でも結果は正しいのか ? そしてそして, 一体全体どこで課題後半の積分を求めてるってぇ ?? いい加減なことを言うんじゃないよ。
(0731): 以上の全てについて, 一言二言だけじゃ, ちっとも説明になってないよ。
h01s2049,
exe31.f~ (0627): バックアップファイルの方を送ってきたのかな ? まあ提出されたものなのだから正編とみなすことにする。解と係数の関係を用いる理由がわかっていないようだ。dd<0 の時の方程式の解ってこうかぁ ? いずれにしてもレポートの体裁を成していませんね。
h01s2050,
h01s2052,
guadra0.f (0731*): 解と係数の関係の使い方が中途半端なので, 必ずしも計算誤差を避けることができない。D<0 の時の解の表示で ``x4 = -1.(real) - 1.41421354i(complex)'' とか出るわけだが, かっこ書きの単語, っていうか実数とか虚数とか複素数とかの, 意味がわかって書いているのだろうか ? さらに, 型宣言したけど使われていない変数があったり, 意味不明の ii とかがある。それからちっとも「解の公式より出された X2と係数の関係より導き出させる X2 の二つが出力されま」せんが ?? それから「比較してください」ってねぇ, それはあなたがやる (そしてレポートに書く) べきことでしょ。
exe4.f & exe41.f (0731*): これらは講義資料どおりのプログラムです。説明文章の内容なんだけど, ちっとも論理がわかんない。``桁がちいさい'' ってどういう意味なの ? 表示上の桁数に意味があるの ? それから「刻み幅が大きくないと ... 精度がわるくなる」とは, ``刻み幅が大きい方が精度が良い'' という意味か ? で, それは正しいの ?? そして「より真の値に収束する」の根拠は何 ? 「小さい桁まで表現 (表示だろ !)」されたせいなの ??
h01s2053,
h01s2056,
h01s2057,
quadrad1.f (0627): aa=0 の時に再入力をさせているのは良いが, ここで入力された aa が有意な値であるという保証はあるか ? stop 文はあちこちに書かないで, プログラムの出口はひとつにする。解と係数の関係を用いる理由がわかっていないようだ。dd<0 の時の方程式の解って ``kyosuukai'' って言うのか ? これで本当に意図した通りに解が表示されるのかい ? いずれにしてもレポートの体裁を成していませんね。
h01s2059,
quadra0.f (0731): まとまっているプログラムではあるが, 解と係数の関係を用いて計算誤差を避ける手だてをこうじていないし, dd<0 で x3 と x4 を計算している意味はないだろう。
newton.f (0731): せっかくのプログラムも, 説明文で ``テーラー展開を繰り返す'' なんて言われちゃちょっとね。ちなみに テーラー展開 とは, 何をどう展開することだ ? このプログラムはそういうことを繰り返し実行してるのか ?
euler1.f & runge1.f (0731): これらは講義資料どおりのプログラムだ。で, 説明文中の ``収束の精度'' って何のことだろう ? 計算結果はさておき Step size > 2.0 にどんな意味があるつもりなんだろう ? なにをもって ``精密な値'' というつもりなんだろう ? 二つの方法を比べての優劣は, いったい何を根拠にしているのだろう ?
simpson.f & simpson1.f (0731): プログラム自体はいたって標準的なんだけど, 説明文が問題だ。後者の積分値の正当性はグラフを描くとわかるらしいが (どうやってわかるんだ ? やってみせてくれ !), 前者の積分 (区間 [0, 5]) の結果の正当性はどうやって判断するつもりなんだろう ?
h01s2060,
quadra0.f (0731): まとまっているプログラムなんだけど, 解と係数の関係を用いて計算誤差を避けるという設問の意図を満足していない。
newton1.f~ (0731): インデントがおかしくて読みにくいし, 入力をうながすメッセージにも工夫の余地あり (``trial'' っていう単語の意味わかってますか ?)。で, エラーでコンパイルできないという罠。
euler1.f~ & runge1.f~ (0731): これらはほとんど講義資料どおりのプログラムだが, 前者にはまたしてもエラーでコンパイルできないという罠が ... そしてさらに後者を実行しても, 説明文中にあるような実行結果 ``0,0 1,2/3 2,-2/3'' などという分数は得られないという三番目の罠。そして実行結果はあっても説明がないし, ``h=step side'' だったり, その値が 1 や 2 や 3 だったりと, とても現実的とは思えない世界だ。
h01s2064,
ex31.f (0730): プログラム自体はきれいにまとまっているのだが, 残念ながら課題であるところの解と係数の関係を用いていないので, 計算誤差を生じる恐れがある。
ex33c.f (0730): 文関数を使っているのが, やや反則です。
ex34.f (0730): これは講義資料通りのプログラムだ。
ex34b.f (0730): これも講義資料通りのプログラムだ。
(0730): 以上の二つのプログラム (ex34.f, ex34b.f) の実行例が示されていますが, 収束速度とは何のことでしょうか ? 関数の値はいくつになれば良いのでしょうか ?
ex35.f (0730): ちっとも説明されていないが, 台形公式による数値積分のプログラムだ。
ex35b.f (0730): これもまあ似たようなもんだ。
(0730): さてそこで問題なのだが, 以上の二つのプログラム (ex35.f, ex35b.f) による積分の計算値が正しいかどうかって, どうやって判断すればいいのでしょうか ?
h01s2065,
3-3.f (0730): 関数 f, df の中で n, a が未定義です。正しい答えが得られません。n=3, a=3 で得られたと あなたがいう 1.00002527 を, 自分で三乗してみなさい。
3-1-1.f & 3-1.f (0730): 説明の文章の途中の論理に疑問があるし, 誤字もいくつか見られるので, 非常に読みにくい。で, 3-1-1.f は解と係数の関係の使い方が中途半端なので, 計算誤差を避けることができない。説明文の最後で, 二通りプログラムで得られた結果が -2.61803389 と -2.61803412 だそうだが, この二つの値はどちらが正しくて, その根拠は何だっていうんだ ?? (あ, 後から誤字の一部訂正版の説明文だけ送ってきたのか)
3-4-1.f & 3-4-2.f (0730): これはほとんど講義資料どおりのプログラムだが, ルンゲクッタ法のプログラムの冒頭のコメント行がオイラー法になっているところは, ヒドすぎる。Word 文書の計算結果の整理と表示の仕方に工夫が見られる。ところが説明文は, コジツケもコジツケだ。あなたは, オイラー法ではきざみ幅が大きい方が正しい値が得られる, と主張しているのように読める。収束するとかしないとかって, 基準は何なんだ ? 正しい値の基準は何だ ?
h01s2066,
Ex31.f (0731): あいかわらず解と係数の関係を用いる理由がわかっていないようだ。使い方が中途半端なので, かならずしも計算誤差を避けることができない。ちなみに説明文中で「複素数の解がうまくいかなかった」と述べているが, いったいどういうものを ``うまくいった'' ものだと考えているのだろうか
Ex33.f (0731): 文関数を用いるのは, やや反則だ。説明文中で「収束判定は、収束していく過程で収束が見られなくなるまで」のところが論理矛盾していて意味不明です。日本語の修行が必要なのかもしれませんね。
Ex34-1.f & Ex34-2.f (0731): これらは講義資料どおりのプログラムだ。説明文中で「rungeのほうがeulerよりも速く収束している」と言っているが, どこをどう見ればそういう結論に達するのだろうか ? 説明不足です。
Ex35-1.f (0731): これはシンプソン法による数値積分のプログラムだ。でもこれに関する説明はない。
Ex35-2.f (0731): このプログラムには型宣言していながら使っていない変数がある。このプログラムの説明文では, なんらかの判断をしたことになっているが, その根拠となるデータが示されていない。口先だけで「○○だ」と頑張っても, それを聞いた人が信じてくれるとでも思っているのだろうか ? まあ狙いはいいんだけど, その辺がおしかったね。
Ex31.f (0627): 解の表示が見にくいね。解と係数の関係を用いる理由がわかっていないようだ。dd<0 の時に ``虚数解'' になるのか ? 虚数解とはなんだ ? 計算しないのか ? いずれにしてもレポートの体裁を成していませんね。
h01s2067,
(0723): 一括してたくさんのプログラムを送ってくれたものについてのコメントは以下の通りです。でもどんなレポートを書けばいいのか, わかってるとは思えないところがイタイ。
quadra1.f (0723): 一応の動作はするけれども, 計算誤差 (桁落ち) の対策ができていないね。
newton1.f (0723): 文関数を使っているのが, やや反則かな。いずれにしても正しく答えを算出しませんが ?? 自分でちゃんと動作を確かめたのだろうか ???
newton2.f (0723): 文関数を使っているのが やや反則だし, 初期値の x0 を決めうちしているし, 収束判定の eps が ずいぶん小さいね。
euler1.f (0723): コンパイルにエラーは出ないが, x=2 の手前までしか計算しないよ。step size も決め打ちだね。(収束状況を確認した証拠とは言えるかもしれないけどね)
runge1.f (0723): ま, さすがにこれはそこそこちゃんと動いてるみたい。でも euler1.f と合わせて, ちゃんとしたレポートにはなっていない。
simpson2.f (0723): 積分区間が [0,10000000] と上限が一千万になっているが, それで良いことの説明が無いし, そもそもレポートになっていない。
pi2.f (0723): 改造版プログラムとしては動作するけど, 改造の結果意味のなくなったコメント行がそのまま残っていると, あとでプログラムを見たときに意味不明ってことになるよ。レポートになってないね。
sum10.f (0723): で, これって, どの課題のつもりでしょうか ??
h01s2069,
quadra2.f (0730): dd>0 の時があいかわらずわかってないみたい。
quadra2.f (0729): dd>0 の時に解と係数の関係を用いる意味がわかってないらしい。dd<0 の時の扱いについて, 解を実数部と虚数部に別けるという方針でやったのであれば, それなりに筋が通っているので「こじつけ」っていう訳じゃない。筋が通らないものを無理につじつまあわせをするのが *こじつけ* だ。sqrt の中も論理性があってそういう処理をしているのであればちっともコジツケじゃない。で, 変数の x3 と x4 はわざわざ宣言したけど使っていないね。
newton1.f (0716): 文関数は使わないっていう約束だったのに。ちょっと複雑だったり, 記述が長くなったりする関数だと, 対応が困難だよ。ところでこのプログラム, エラー無くコンパイルできましたか ? エラーを直しても, 意図通りに動作しますか ? 正しく a の n 乗根を求めてくれますか ?
quadra1.f (0716): 完結したプログラムではある。でも dd>0 の時に (精度を落さずに) 正しい答えを出力するかな ? 引き算を用いると桁落ちする可能性があるよ。惜しかったね。いずれにしてもレポートの体裁を成していませんね。
quadra0.f~ (0627): バックアップファイルの方を送ってきたのかな ? まあ提出されたものなのだから正編とみなすことにする。インデントがそろっていないので見にくいですね。dd=0 の時に出力される解は正しいか ? 解と係数の関係は使わないのか ? いずれにしてもレポートの体裁を成していませんね。
h01s2075,
quadra.f (0731): 解と係数の関係を使う理由をきちんとわかっていないために使い方が中途半端だ。また説明文末尾の二つの数値 -7.60555124 と -7.60555077 は, どちらが正しくて, それはナゼか ?
newton1.f (0731): ``途中の Xk を印字する'' も何も, そもそも問題の主旨を理解しているのかな ? これじゃあ正しい答えは求まらないよ。っていうか, 一体何を計算するつもりなんだろう ??
euler1.f & runge1.f (0731): これらのプログラムは, ほとんど講義資料のとおりだが, runge1.f には致命的な間違いがあるので, 期待したようには計算してくれないはずだ。またこの euler1.f では, 添付されたような計算結果は得られないよ。問題は計算結果の検討なんだけど, それに関するコメントはないね。
pi1.f (0731): 添付されてるプログラムのそのままでは, 説明文書中のような計算結果一覧は得られないね。とすると n=9305 が良いなんて, いったいどうやって見つけたんだろう ? 今回は答えがπだとわかっていたけど, 一般の場合にはどうやって適切な n を決めるつもりなんだろう ? ちがう seed の時にはどうするつもりだろう ?
h00s2036,
h98s2024,
ex3-1.f (0731): 処理ごとにまとまっているし, コメントも適宜はいっていて, 見やすいプログラムです。実行結果も付いていて, ねらいは良いですね。説明の文章も良く書けています。あえて言えば, 文番号の 5000 は実行文に付けない方がよくて, continue 文を用いるか, 所詮は排他的な分類なのだから全体に else if を使うなどした方がよいでしょう。
ex3-3.f (0731): 予想される不都合な入力に対しての処置まで書いてあって, 良くできたプログラムです。しかし惜しむらくは, fukuso 関係です。n が偶数ならプログラム通りで得られるものも解のひとつですが, それ以外の場合には, これじゃあ困っちゃうよ。また実は, n は整数に限らないという罠。
exercise3-4a.f & exercise3-4b.f (0731): これらは講義資料どおりのプログラムだ。Step size を何通りか変えての計算結果もファイルにして付けてくれた。説明文もよく書けています。細かい点ですが, 1 step にかかる計算時間は, 二つの方法を比べると同じではなくて, ルンゲクッタ法の方が長いはずです。
ex3-6a.f & ex3-6b.f & ex3-6c.f (0731): なかなか工夫の跡が見られて, 素敵です。b のプログラムなど, わりと興味深いところです。大筋ではπに向かっていきますが, 局所的には必ずしもそうじゃないことがわかります。c になると, これはもう乱数列の検証みたいなもんですね (笑)。この方法で作られる乱数列 (周期は 2**31) の部分列の乱数としての質を検査している感じ。
h00s5022,

(2003-08-03, 00:00 更新)