PDF file
数値解析法: 出席メールの質問と回答一覧 (6/1)

h98s2003:
1000 FORMAT('# A = ',F8.4, ', X0 = ',F8.4) は何をしているのですか? F8.4とは?
REPLY:
下記 (i) を参照。


h98s2009:
今日もしっかり出席していました。コンパイルに成功していても、動作でエラーとなる場合が存在する事が良くわかりました。プログラムって結構、融通がきかないですね〜。質問 とくにありません。今回はこれでかんべんしてください。
REPLY:
提出物 (メール) が要件 (質問を含むこと) を満たしていません。


h98s2068:
fortranは衰退していく運命ですか?
REPLY:
数値計算の分野では膨大なプログラムやライブラリの蓄積があり, またコンパイラの作成技術の蓄積もあります。さらに文法的にも少しづつ改訂されて新しい要素を取り込んで進化しています。そういう状況ですから, 無くなることはないでしょう。


h99s2003:
繰り返し計算での3ページの isum = 0 と isum = isum + i**2 の関わり合いがよくわかりません。意味合いを教えてください。
REPLY:
「関わり合い」と「意味合い」の関わりがよくわかりません。下記 (ii) も参照。


h99s2006:
質問は、DOループのところで、テキスト(プリント)には書かれていなかったのですが、 ``write(6,9000)’isum=’,isum // 9000 formal (1x, A,15)'' と、スライドのほうには書かれてあって、2行目のformal (1x, A,15)の意味がわかりません。
REPLY:
下記 (i) を参照。なお formal ではなくて format です。


h99s2011:
今日やってみて思いましたがマスマテイカなど数値を扱うソフトがあるのですが一番良いものと言えるものはありますか?
REPLY:
プログラムによって得て不得手がありますね。Mathematica は数式処理やグラフィック表示などもできますが, 計算は遅いですね。


h99s2013:
Doループの使い方が良くわかりません。 do i=1,100 というのは、どういう意味ですか?
REPLY:
下記 (iii) 参照。


h99s2014:
今回はなにをやっても、エラーばかりでぜんぜん意味がわからなかった。わけわかめ
REPLY:
提出物 (メール) が要件 (質問を含むこと) を満たしていません。エラーメッセージにヒントが含まれているはずです。


h99s2015:
プログラムを作成する上で便利な(ショートカット)キーがあったら教えてください。
REPLY:
emacs/mule は, 機能をプログラムして追加できるエディタですから, 自分で作ればどんなショートカットキーも実現できます。emacs/mule の本を見てください。


h99s2018:
テキストのP4に、「6桁目は別の用途に使われるので、文番号を用いてはいけない。」と、書いてあり、p5には「6桁目には何か文字を書くと継続行とみなされる。」とありますが、これは、本当に何の文字でもよいのですか?
REPLY:
下記 (iv) 参照。
:
あと、これは一種の機械語というものなのでしょうか?
REPLY:
「これ」の指すものが何であるのか, 意味がとれません。普通コンピュータの世界で ``機械語'' と言えば, マシンが直接実行できる二進数で表現される電気の ON/OFF の羅列のことです。そんな言葉を使って人間がコンピュータのプログラムを書くのはタイヘンなので, 人間が理解しやすい言語 (例えば fortran) が開発されました。これなら数学で書く数式どおりの記述でプログラムが書けます。


h99s2019:
前回のDOループで計算した場合小数点以下が切捨てられていたことについてですが有効数字がなければ計算としては間違いではないのですか?
REPLY:
「DOループで計算した場合小数点以下が切捨てられていたこと」って, どんなことですか ?


h99s2020:
openする時なぜ9番としてやるのですか?
REPLY:
予約されているもの (5: 標準入力, キーボード; 6: 標準出力, ディスプレイ) 以外なら何でもいいので, たまたま 9 を使っただけで特別な意味はありません。


h99s2022:
数値解析法のテキストの5ページに「6桁目に何か文字を書くと、継続行とみなされる。」とあるが、継続行とみなされない文字は存在するのですか。
REPLY:
下記 (iv) 参照。


h99s2024:
今回から、授業の内容がわからなくなり、ついていけなくなった気がします。でも、大学院の人などに聞いてついていけるようにがんばりたいです。申し訳ないのですが、何がわからないのか、わかんないです。
REPLY:
提出物 (メール) が要件 (何らかの質問であること) を満たしていません。申し訳なく思っていただいて恐縮ですが, あなたがわからなくても今のところ私は困りません。また, わからないところを特定していただかないと対処のしようがありません。


h99s2025:
打ち込んでいる最中に行をあけたりしているのは意味がこめられているのですか、それとも見やすくするためなのですか?
REPLY:
Fortran プログラム/コンパイラの実行には何の影響も与えません。もっぱらプログラムを読む人間のために, 見易くするのが目的です。
:
問題4でプリントでは答えが0.32から始まっています。出てきた値ではXjが85くらいから表示されていたのですがすべて0.5でした。これは0.5に近づいているため、すべてそうなるのですか?
REPLY:
下記 (v) 参照。


h99s2026:
sumupや isumなどプリントがなければプログラムをうちこむのがたいへんなものがおおいですが意味があればおぼえやすそうですが意味がありますか
REPLY:
プログラム名や変数名には意味のある名前をつけると, 人が見てわかりやすくなります。sumup は sum up (足す) ですし, isum は i を足したものの意味でしょう。


h99s2035:
1行が長くなる文章の場合は継続行を使うといってましたが何行まで使えるのでしょうか?
REPLY:
一つの文は最高で 20 行使って書くことができることになっているようです。文法書を参照してください。


h99s2039:
問題4のプログラムは打ったんですけど、なんでそうなるかわかりません。
REPLY:
下記 (ii) を参照。


h99s2040:
今日emacsを使っていて、どこをいじったか分からないのですがミニバッファに漢字が現れて、戻らなくなりました。TAの人に聞いても分からないと言われました。これは一体何物なのか、またどうすれば元に戻るのかなど教えてください。
REPLY:
書かれている情報だけからでは, どうなったのかわかりません。どうなったかわからないので, どうしたらいいかも答えられません。


h99s2041:
x2 = a*x1*(1-x1) は入力してないのに、x1とx2とどうして区別されるんですか?
REPLY:
文字通りであれば, x1 と x2 は違う変数ですから区別されていますよ。もし ``x = a * x * (1 - x)'' という文の意味でしたら, 等号 ``='' は両辺が等しいという意味ではなくて, 左辺の値を右辺の変数に代入するという意味であることを指摘しておきます。下記 (ii) も参照。


h99s2043:
1、継続行を使うさい6行目に書く文字は、$じゃなくてもいいんですか?
REPLY:
下記 (iv) 参照。


h99s2045:
テキスト 4ページの1.4のプログラムを書き込むと、エラーになると書かれてあったが、自分が作ったプログラムで操作を行ったら、コンパイルできた。原因は、7桁目から書きこむところを、私のものは8桁目から、write以降は9桁目から、continueは常に8桁目から書かれている状態であると思われる。なぜ、7桁目からではなく、8桁目からプログラムを書きこんでもコンパイルできるのですか?
REPLY:
7-72 桁目に命令文を書きますが, 空白文字は無視されます。文法書を参照してください。


h99s2048:
プリント1.4の倍数度実数は使わなくてもいいのですか?
REPLY:
必要ならば使います。あなたが行ないたい計算に必要な数値の大きさの範囲と精度によって決めます。倍精度実数の方が単精度実数よりも計算機資源 (メモリ, 計算時間) をたくさん消費します。


h99s2049:
いろんなプログラムを作り、実行させられてますが、目的もわからずただただやっています。もっとプログラムの説明をわかりやすくしてほしいです。先生方にとっては当たり前のことも、私たち生徒にはチンプンカンプンなことが多いです。
REPLY:
わからないことがあったら, 質問してください。また自らの努力 (調べる, 考える, 試す) も必要です。
:
院生の人が「emacsとmuleは同じものだよ。」と言っていたのですが、同じものなのになんで名前が違うんですか?emacsとmuleの違いは何ですか?
REPLY:
本来は違うもので, 一方が他方の派生物です (バージョンによって違う)。派生物の方が機能が少し拡張されていますが, 基本的な使い方は同じです。しかしセンター演習室のマシンでは, 同一のプログラムに複数の名前をつけています。emacs と mule のタイプしやすい方 (5 文字と 4 文字) を使ってください。


h99s2051:
問題4で、aやxoの値をいろいろ変えて計算をした時に同じ値がたくさんでてきたのはどうしてですか?
REPLY:
下記 (v) を参照。


h98s2052:
今日の授業はプログラムを使って最終的に漸化式の計算を行うという授業でした。今回も前回と同様に途中でつまずいて結局うまく授業内容を進めることができませんでした。手順は正確に実行できてると思うのですが、なぜかうまくプログラムを機能できません。次回こそはきちんとできるようにしたいと思います。 それとお願いですが、もう少し授業内容に具体性を加えてもらえるともっと授業がわかりやすくなるとおもうのですが・・・。まだパソコンになじみの少ない私としては、何がどうなるといった具体的な例を説明の中で話してもらえないと何をやってるかすらわからないままで授業が始まってしまうので非常につらいです。
REPLY:
提出物 (メール) が要件 (質問を含むこと) を満たしていません。今は Fortran 言語のやさしい文法的なところをやっているので, それ以上の具体性はありません。英文法の習いはじめもそうだったでしょ。プログラムの動作の理解には, 下記 (ii) も参照, 自分の頭で考えてね。


h99s2053:
講義の最初の方はなんとかわかっていたが、DOグループの途中からわからなくなってきました。
REPLY:
提出物 (メール) が要件 (質問を含むこと) を満たしていません。


h99s2055:
今日の感想:全体的に難しかったです。まだ、自分の中で理解しきれていないので、質問もでてきません。
REPLY:
どこがどう難しかったのでしょうか ? なお提出物 (メール) が要件 (質問を含むこと) を満たしていません。


h99s2057:
漸化式のプログラムで他の例もできれば教えてください
REPLY:
教科書を見てください。数学の教科書にはいろんな漸化式が出てくるでしょう。また物理で使う関数のなかにも漸化式で定義されているものがあるかも。


h99s2059:
数列の添え字が異なる変数xが、おなじxで表示されるのはどうしてですか?
REPLY:
そういうアルゴリズムを採用したからです。また下記 (ii) も参照。


h99s2061:
1行が長くなり6桁目に何か文字を書くとき、何でもいいと言いましたが、使ってはいけない文字はありますか?
REPLY:
下記 (iv) 参照。


h99s2065:
4ページでpurogram sumupの五行目の10は、DOループの範囲を示すと書いてありますが、意味がわかりません。DOループの範囲とは何ですか?
REPLY:
下記 (iii) 参照。それから purogram ではなくて program ですね。


h99s2069:
DOループの『DO』の意味を教えてください。
REPLY:
英語の辞書を調べてください。プログラム言語は自然言語を基に作られていますので, 日常語の意味と全く違う意味を持たせることはありません。


h99s2073:
出席のメールがちゃんと送れているか心配なので、返信がほしいと思いました。
REPLY:
質問と回答の一覧表を公開しています。ここに掲載されていない学籍番号の人からの出席・質問メールは受け取っていないということです。


h99s2074:
doループを終わるとき教科書では、end doで終わったほうがよいとかいていたのですが、先生は、10continueで、終わっていたような気がします。どちらで終わったほうがよいとおもいますか?
REPLY:
歴史的経緯から, 現在では複数の書き方が存在します。End do は fortran 77 の範囲を越えた新しい規格ですから, 古い処理系では実行できない可能性があります。しかし現在では fortran 90 が普及してきているし, fortran 77 準拠の処理系でも独自の拡張で end do が使えることが多いので, どちらを使うかは趣味の問題でしょう。


h99s2076:
毎日パソコンを扱っていればそのうちうまく使えるようになるのですか?
REPLY:
扱い方によると思われます。ゲームやワープロを毎日やっていても, プログラムが作れるようにはならないでしょう。


h99s2083:
以前に授業で出たのかもしれませんがプログラムの最初の方に書かれている implict none とはどうのような意味でしょうか?
REPLY:
変数の型について, 暗黙の型宣言に従わないことを意味します。これを書くと, 使用するすべての変数について型宣言をしなければいけません。逆に宣言漏れによる意図しない動作を未然に防ぐ効果が期待できます。




複数の人から共通に質問されたこと
  1. FORMAT 文について:

    入出力の書式の指定です。詳細は文法書を参照してください。 例えば F8.4 については, F は実数を意味し, 8.4 は数値を 8 桁使って表示して, そのうち小数点以下は 4 桁になるような形式という意味 (さらにそのうち 1 桁は符号, 1 桁は小数点に使われる)。結局のところ実数を ``符号 - 2 桁整数部分 - 小数点 - 4 桁小数点以下の部分'' の形式で入出力するための書式指定文です。 A は文字を意味し, 一行のメッセージなどの文字列を入出力します。 (ここではすべて出力側で用いています。) 詳細は文法書を参照してください。


  2. 何をやっているプログラムなのかがわからない:

    プログラムの動作を理解するには, 自分がコンピュータになったつもりで一文づつ逐次実行していくと, 変数の値がどうなるかを考えれば良いでしょう。 例えば ``x = a * x * (1 - x)'' の文を実行するときには以下のような処理が逐次おこなわれます。まず右辺を評価するときには x にはある値が入っていますね, その値を使って右辺を評価します。そして結果の値が最終的に x に代入されます。すなわち新しい値で書き換えられることになります。これでおわり。


  3. DO ループについて:

    DO 文についての詳細は, 文法書を参照してください。決められた回数だけ処理を繰り返すような場合に, DO ループによる繰り返し処理でプログラムを記述します。この ``DO'' というキーワードは, まさに英語の動詞 do (実行する) から来ていると思われます。そして ``何を'', ``何回'' 繰り返し実行するのかを指示しなければいけません。前者が繰り返しの範囲で, ``DO 行番号 - 行番号のついた端末文'' や ``DO - END DO'' で表わします。後者は例えば ``i = 1, 10'' で, 変数 i を 1 から順に一つづつ増やしていきながら 10 まで都合 10 回繰り返す, と表現します。


  4. 継続行について, 6 桁目の継続の印の文字は何でもいいのか ?:

    詳しくは文法書を見てください。継続を意味するためには, ゼロ ``0'' と空白 `` '' 以外の文字を書くことになっています。したがってその他の fortran で使える文字であれば, 何でもいいことになります。さらに文字コード表を見ると, fortran で使えると定義されていない文字もあります。これを使ったときの動作は処理系依存と思われます。


  5. 問題 4 のロジスティック写像について:

    係数 (a = 2 としたもの) や初期値 (x0 = 0.2 としたもの) によって数列の挙動は異なります。いわゆる ``カオス (chaos)'' です。決定論的な規則に従っているにもかかわらず, 初期値のわずかな違いによって結果が全く変わってしまい, しかもどうなるかが予想できない。



Ryo MIYAMOTO 2001年6月1日