数値解析法 (Fortran 編), 2005-06-17 質問と回答, M は宮本による回答。 h03s2001: 出来ない計算はないのですか? M: 不完全性定理により, 真偽が決定できない命題が存在することがわかっている。 この様な命題の答えは, 原理的に計算できない。またコンピュータの世界では, プログラムの停止問題という問題があったようにも記憶している。またさらに, 計算時間の爆発的増加により, 実質的に解を得られる見込みが小さい問題もある。 公開鍵暗号などの強度も, この辺に依存した問題だったような気がする。 h03s2002: FortranにはLinux版とWindows版があるが、何か違いはあるのか。なぜこの 授業ではLinax版を使うのか。 M: 文法の規格が別途定められている言語なので, その面においては基本的に差異は 無いと思われます。しかしユーザーインターフェースの面では差があるかもしれま せん。 h03s2003: HPに「最終締切前であれば, いったん提出したものであっても修正版 (アップグレード版) を提出することができます。」…とありますが修正前の版も 評価の対象になるのですか? M: もしそうだとすると, 何のためのアップグレードなのでしょうね。あるいは, 二つの評価をどう組み合わせて, 最終的な評価とすれば良いのでしょうか ? h03s2004: 組み込み関数、例えばsinや、cos、logなどは、どのようにしてプログラム しているんですか?またこれらの関数をグラフにすることはfortranでできるんですか? [文字化けしていました, メールソフトの設定を直してください] M: (1) 普通に, 精度良く高速に計算するようにしていると思いますが。そう思いま せんか ? (2) Fortran には, 描画のための組み込みコマンド/関数がないことは, 承知のうえで質問しているのですか ? h03s2005: Exercise2.4リスト3のプログラム入力で、宣言された大きさの範囲を超える 場所を参照した場合にでてきた計算値は何を計算した値ですか? M: 規格外の動作についてなど, わかりません知りません。 h03s2006: WindowsではなくLinuxを使う企業があるとよく講義で聞くのですが、どの ような関係の企業でよく使われるのでしょうか? M: 業種によって決まる問題だとは思えません。またヨーロッパでは政府機関が調達する 製品にオープンソースであることを求めている所もあると聞いたことがあるような気も します。 h03s2008: (1)二乗根はsqrt(x)を使ってあらわしますが、三乗根や四乗根を表すには どのようにすればいいですか?(2)Listing7 の10行目で「goto 20」というがあるの ですが、これはどんな意味があるのですか?(3)「DO loop」や「WHILE loop」の 手法を用いれば漸化式を計算するプログラムの作成などに応用できますか? M: (1) 冪乗の演算子があります。(2) そのまんまの意味ですが, それの何が分からない のでしょうか ?? (3) どんな漸化式をどういう風に計算するつもりなのか, この説明 では全く分かりませんが, 「まあできるんじゃないの ?」ととりあえず言ってみます。 h03s2009: 二進数以外で処理されるプログラム言語はありますか? M: COBOL は十進で数値処理をすると聞いたことがあります。 h03s2011: 課題についてなのですが、この授業で書かれていることだけではできませ ん。もう一度読み直した方がいいでしょうか?それとも、参考資料が必要でしょうか? M: 各人の勉強の手法に制限をつけるつもりは全くありません。どうぞ, 授業の資料を 読むなり, 他に参考書を参照するなり, 好きなだけやってください。 h03s2012: 算術if文とはどのようなものですか?なぜfortran95からは廃止になって しまったのでしょう? M: 詳しくは文法書を見てください。算術 if 文は, 論理 if 文に容易に置き換え可能 であり, また使用例なども見ると, 廃止になるのも納得できるハズです。 h03s2017: Exercise 2.3で、ソースファイルを再コンパイルするのが面倒くさいので 工夫しろと書いてあったので、プログラムを実行したあとにcの値を直接GNOME端末に 書き込んでコンピュータにreadさせる方法を行ったのですが、そうしたら丸め誤差が 出なくなりました(10.0000001の小数点以下がなくなり10になった)。この方法は、 間違っているのでしょうか? M: 色々なやり方があると思われます。 h03s2019: Fortranは何回かバージョンアップ(もしくは拡張機能がついたり)しており ますが今後もバージョンアップする予定とかはないんですかね? M: 現在でも改訂作業が進められているようです (通称 Fortran 2003)。 h03s2022: WEB上で紹介されている、『(電子計算機のプログラミング 8) FORTRAN 77 入門 浦昭二 編 培風館』以外で、先生オススメの文法書はありますか? M: それ、結構ぜーんぶの文法要素をカバーしてるから、お気に入りなのよね。じつわ。 h03s2023: 液晶ディスプレーのスクリーンセーバーはどこから手に入れているの ですか? M: 液晶だろうが CRT だろうが, 今のところ違わないと思いますが。 h03s2024: fortranで作ることができるゲームは、PCやPSPなどのゲームに応用されて いるのですか? M: 広い意味では, そうかな。 h03s2025: 様々なプログラミング言語がありますが、Fortranが他のものよりも優れて いる点は何ですか? M: しかるべき本にちゃんと書いてあるでしょうから, そっちを見た方が正確でしょう。 h03s2027: 2.6の問題で結果がどうなればいいんですか?数値を新たに打ち込みその数を 計算してもらうというプログラムを作ればいいのですか? [06/24追記] M: 問題文に書いてある通りなのですが, どこか意味が分からないところがあるので しょうか ? 教えていただければ, 改善のヒントになってうれしいんですけど。 h03s2028: リスト6において、DO loopのループのカウンタ変数n は整数であることが わかった。しかし、Fortran 77 ではカウンタ変数は整数に限らず、実数でよかったにも かかわらず、Fortran 90 からはカウンタ変数は整数であることが推奨され、 Fortran 95 では整数以外をカウンタ変数に使うことは完全に禁止されたとある。 この理由はなぜか? 教えてください。 M: 2005-06-10 の h03s2050 を見てください。 h03s2029: fortranの最大の弱点は対応ソフトの少なさだと思いますがこれについて、 どう思いますか? M: 本当に少ないんですか ? どうやって数えましたか ? h03s2030: Exercise2.4のarray4で範囲をこえる場所を参照した結果セグメントエラーに なってしまうのですがこれでいいのでしょうか?範囲を1から30までにしてみたら そうなりました。 M: いったいどうなると予想していたのでしょうか ? [別便で 6/10 の分のメールについての記載があった。あんなハンパなメールでは, 先週送った部分がどれで, 今週追記した部分がどれか, 全く分からない。また主張を 裏付ける証拠もない。少なくとも, 自分の送信記録に残っているメールを, ヘッダ情報 全てをつけたままで見せてもらわなくちゃ, ね。] h03s2031: 参考書はいろんなものがあると思うんですが先生のおすすめの参考書は ありますか?あったら教えてください M: Fortran の文法は非常に簡単なので, そんなに特別な参考書は必要ないと思います。 Web ページに記載している文法書じゃダメですか ? h03s2034: 「continue」以外のコマンドで、プログラムと関係ないものは あるのでしょうか。 M: continue も実行文の一つで, ちゃーんとプログラムに関係していますよ。 h03s2035: WHILE loopは、DO loopとはもっと違った繰り返し方であるというのは、 例えを読んでわかったのですが、繰り返しが一定ではないという点だけでしょうか? M: 「繰り返しが一定」とは、どういう意味ですか ? h03s2037: Exercise 2.4で、リスト3のプログラムを宣言された範囲を超える場所を 参照してたところ範囲外のところもちゃんと表示されたのはなぜですか? M: h03s2005 を参照してください。 h03s2039: リスト10で、callの後の文字とサブルーチンの後の文字が違いますが、 どっちを変えても問題はないのですか。 M: プログラム単位内でちゃんと合ってますが ? それとも仮引数のこと ? h03s2040: 先生は、プログラムの作成をうまく行うために、一番大事なことは何だと お考えですか? M: 「アルゴリズム + データ構造 = プログラム」なのだそうです。だからまずは分かり やすいこと。 h03s2041: 「fortran」や「emacs]は、学校以外のパソコンでは扱えないのですか? M: もちろん, 他所でも使えます。 h03s2042: Unixでメールを送る方法を教えて下さい。[文字化けしていました, メール ソフトの設定を直してください] M: 2005-06-03 の h03s2030 (2) を参照してください。 h03s2043: WindowsのCygwin Bash Shellで計算したのとlinuxで計算したとき結果が違う のはどうしてですか? M: 情報不足で判断できません。 h03s2044: (1)emacsで漢字が入力できるそうですが、どうしたらいいのですか? (2)先生はどういうときにUnixなどを使っているのですか?  M: (1) かな漢字変換プログラムによって微妙に操作が違うので, 演習室の Linux で キーを押す順序がどうなっているのか, 知りません。(2) 某MS社の製品を使わされる 場合以外のほとんどの時。 h03s2045: プログラムを作るということは、結局はそれを使うわけですから、より 簡単にプログラムを作り直して行くっという作業も必要なのですね? M: そうです。作成だけでなく, 保守も重要なのです。 h03s2046: 前回の回答でwindowsのいらない機能として >>窓が開いたり, メニューが出たりするときに, アニメーション的に出てくると >>ころなど, cpu パワーを無駄遣いしてるなと。 とありましたが、windowsよりも無駄なアニメーションが多いけどUNIXベースで作られて いるMac OS Xは好きですか? M: あまり使ったことがないので, よく分かりません。でも MacOS X は, Unix 系だと 聞くので, 許容範囲内です。 h03s2048: emacs で文字列を打ち込んだ時に文字が色が変わるのにはどういう意味が あるんですか? M: どういう単語にどういう色がつくかから想像できませんか ? h03s2051: 先生は研究でFortranはどのように使われているのでしょうか?そして、 その研究で苦労する所はどこでしょうか? M: もちろんプログラムするのに使っています。結果が正しいかどうかの判断が ムズカシイですね。 h03s2055: fortranは無料で配布されているソフトなんですか? M: そういうものもあります。 h03s2056: 宮本先生の研究室ではfortran使うことが多いですか? M: 興味と能力と必要に応じて, いろいろですね。あたりまえか。 h03s2058: DO loopと同じことをWHILE loopでも言えるとex2.8にあったんですが、この 二つは具体的に何が違うのでしょうか? M: 表現が違うだけ。だって計算結果が違ったら, 「同じこと」にならない。 h03s2060: 先生は、高速であるがバグが発生する可能性が高くなるコードと、バグは 発生しにくいが速度が十分でないコードをどちらか選ばないといけないときは、どちら を選びますか? M: バグはプログラムが徐々に劣化して発生するのではありません。したがって, 特定のコードに対して, バグの発生する可能性を考えることは, ナンセンス。 h03s2064: プログラミングを本格的に学び始めたのはいつ頃ですか?また、きっかけは 何ですか? M: 特に学んだという意識はありません。きっかけは, 趣味で PC をいじって Z80 の マシン語でプログラムを少し作ったことでしょうか。 h03s2070: end do で、その後に続くプログラムがよく分からないのですが、教えて ください。 M: 2005-06-10 の h03s2071 を参照してください。 h03s2071: 先週の出席のメールを、アドレスを間違えていて、送れていませんでした。 自分では送ったつもりでした。こういう場合は欠席扱いになってしまうのでしょうか? M: h03s2030 の [] を参照してください。 h03s2072: Exercise2.6の「2次方程式の解を求めよ」という問題で、解の数や種類に 分類するだけでなく同時に解そのものも求めてみたいのですが、if文と演算の両方を 同時に行える実行形式、または2つのemacsのファイルに関係性を持たせる(例えば1つ のファイルで場合わけを行い、他方でその結果を反映させた演算を行い、正常に コンパイルさせる等といった)方法はありませんか?あればその方法を教えて ください(試してみたいので)。 M: 「if文と演算の両方を同時に行える実行形式」とか「2つのemacsのファイルに 関係性を持たせる」とかの意味がわかりません。複雑に考えすぎているのでは ? だって, 紙と鉛筆ではちゃんと計算できるんでしょ ? その手順を Fortran という コトバで書き表せば良いだけなのに。 h03s2073: 作成したソースファイルと実行結果と*説明の文章*とをメールで 提出せよとのことなので全てメール本文に書き込みましたが、ソースファイルや 出力結果は添付ファイル形式にしなくてもよかったのでしょうか? M: こうしなさいとの強制はしません。しかし, どういうレポートが読みやすいかという ことは, 執筆者/提出者が考えことの一つです。 h03s2075: 平均値を求める問題で、課題では23個の数値ですが、最大どのくらいまで 数値を入力し、平均を出すことができますか? M: 変数のとりうる値に依存する話ではありませんか ? h03s2077: 質問 fortranで自作したプログラムには著作権はあるのでしょうか? M: どういうものが著作物と考えられるかは, 法律の条文に書かれています。そちらを 参照してください。 h03s2080: 宮本先生の全4回の講義中で、全ての問題(Ex ○.○)について、実行し結果を 出して添付してメールすることが必須なのですか? M: 2005-06-10 の h03s2027 (2) を参照してください。 h03s2081: fortranではルートはどのように表せばいいんですか。 M: その「ルート」とは, 道のことですか ? 方程式の解 (根) のことですか ? それとも 平方根のことですか ? いずれにしても, 文法書を見てください。 h03s2082: Fortranではどのくらいのプログラムが実行されていますか? また、二次方程式のやりかたがわかりません M: 「どのくらいのプログラム」って, 何を想定した質問なのでしょうか ?