PDF file
数値解析法: 出席メールの質問と回答一覧 (6/8)
h98s2003:
4回終了後に提出する課題は、一週間以内に提出と言う事ですが、時間の期限はあるのでしょうか?一週間後だと6/22だと思うのですが、22日の何時までに提出すればよろしいのでしょうか?
REPLY:
時間の期限は ``一週間以内'' ですから, 締切日は 6/22 ということになりますね。一日は普通 (閏秒などがなければ) 0 時から 23 時 59 分 59 秒の 1 秒後 (これを便宜的に 24 時という) までですね (ただし 0 時ちょうどは含み, 24 時ちょうどは含まない)。


h98s2052:
おそらく作成したプログラムを保存する際に何か間違いが生じたものとおもわれます。そこで質問ですが、ファイル名を決める際に使ってはいけない文字などはあるのですか?
REPLY:
プラットホームである Unix の仕様に依存します。たいていの Unix ではスラッシュ ``/'' をファイル名に含めることはできません。ディレクトリ名の区切りだからです。また実用上は, コマンドラインに端末から入力するのに困難な文字 (マルチバイト文字) や端末表示の制御に使われる制御文字 (タブ, ベル, 改行, 復帰, など) は, ファイル名として使用することを避けたほうが無難です。
ところで「プログラムを保存する際に何か間違いが生じた」と判断した理由は何でしょうか ?


h98s2068:
円周率πを求めてパソコンの能力を測れるようなプログラムが、作れるようになれますか?
REPLY:
努力しだい。パソコンの能力を測れるような円周率計算ということは, 数万桁以上の桁数で求めるということかな。すると多倍長計算をしなければいけなくて, そのためには通常の倍精度程度の数値計算とは違った工夫が必要となるでしょう。
:
同じ目的で作ったプログラムでも短い方が点数高いですか?
REPLY:
点数が高いかどうかはわかりませんが, 一般には次のような基準を満たすものが ``良い'' プログラムであると言えるでしょう。(a) 省資源 (メモリ, 外部記憶装置), (b) 計算時間が短い, (c) 保守しやすい (読みやすい, 論理が明快) ((順不同)) しかし一般にはこれらを同時に満たすことは困難で, 要求レベルにあった妥協点に納まる/納めるのが普通です。


h98s3064:
文字を打っている途中に文字変換の文字が下に出て、止まってしまうのですが、どうやって元に戻すのですか?
REPLY:
下記 (iii) を参照。「止まる」とは ? 「元に戻す」とは ?
:
(*、*)と、かっこの中に二つある意味がわかりません。
REPLY:
詳しくは文法書を見てください。write 文は括弧の中に, 出力装置番号や制御情報並びを書きます。


h99s2002:
netscapeを移動したり、消したり、拡大したりできません、それについてくる広告のページを消すこともできません。なぜでしょう。
REPLY:
原因は私にもわかりません。


h99s2003:
授業にあまりついて行ってないような・・・。プログラム作成してまれにコンパイルできないことがあります。そのまま泥沼にはまっていくことがしばしば。単純なミスだと思うのですが。
REPLY:
下記 (i), (iii) を参照。ところで, 提出物 (メール) が要件 (何らかの質問であること) を満たしていません。


h99s2006:
コンピュータで行う行列式の計算は、具体的にどんな分野の計算を行うときに利用するのですか?コンピュータで行うと、どんな面で便利なのでしょうか?
REPLY:
同じ式を使って, しかし値は違うものを, 繰り返し繰り返し計算することは, コンピュータのもっとも得意とすることです。行列の計算は各行列要素に関する計算の繰り返しですから, 計算機の得意とするところです。この強みを生かすために, 解こうとしている問題を行列の形で表現することができれば, これに勝るものはありません。量子力学もシュレディンガーの波動方程式による表現と等価なものとして, ハイゼンベルグの行列力学による表現がありますね。分子の電子状態を理論的に計算してその性質を予測する分子軌道計算などでは, 数百次の行列計算を行なうこともあります。


h99s2013:
行列式のコマンドの使い方がよくわかりません。invaと打つと’行列式が0だぞ’とでるのですが、これでいいのですか?
REPLY:
下記 (v) を参照。


h99s2014:
writeとはどういう意味なのですか?
REPLY:
Fortran の文法的な意味でしたら, 文法書を調べてください。それとも一般的な英単語としての意味ならば, 英和辞典を調べてください。


h99s2015:
二次方程式の解の公式を計算する際に分子の±を処理する方法がわかりません。
REPLY:
下記 (i-d) を参照。


h99s2018:
今日の授業で《行列式が0だぞ》と、日本語で入力した箇所がありました。今までこの様に日本語で入力した事がなかったのですが、コンピューターへの命令を今後もこの様な形で入力する事ができるのでしょうか?又、英語など各国の言葉で入力も可能なのでしょうか?
REPLY:
文の論理がよくわかりません。「《行列式が0だぞ》と、日本語で入力した」とは, 何の目的でどこへ入力したことを言っているのでしょうか ? 「コンピューターへの命令を今後もこの様な形で入力する」や「英語など各国の言葉で入力も」と対応した事項なのでしょうか ?


h99s2019:
先週のdoのプログラムでテキストにあるように打ち込んだのですがどうしても14行で’,のところにエラーがでるのですがどのように直せばよいのですか?
REPLY:
下記 (iii) を参照。


h99s2020:
今日は初めに行列をやったがなぜgoto999とやっているのがよくわかりません。
REPLY:
下記 (vi) を参照。


h99s2022:
テキスト7ページの行列のプログラムの10行めのgoto 999とは何ですか。
REPLY:
下記 (vi) を参照。


h99s2024:
前回と前ぜん回の分の出席のメールをおくったはずなのに届いていなくてがっかりびっくりした。 だんだん内容がわからなくなってきたと思うのでついていくようがんばります。 今は何がわからないのかわからなくてこまっています。
REPLY:
メールサーバに接続していなかったためにパソコン上にメールのデータが残っていたようです, 5/25 と 6/1 発信分のメールは今日届いていました。ところで, 提出物 (メール) が要件 (何らかの質問であること) を満たしていません。


h99s2029:
2次方程式のプログラミングうまく行かない。何が悪いのかわからない。
REPLY:
下記 (iii) を参照。
:
また、FORTRUNからのメールのだしかたがわからない。
REPLY:
「FORTRUN」とは何ですか ? もしかして Fortran のことでしょうか ? もしそうだとしたら, Fortran という言語処理系からメールを出す方法は, 普通はそんな事しないので, 私にもわかりません。Unix でメールをあつかう方法を聞いているのならば, 下記 (ii) を参照。


h99s2034:
先週風邪ひいちゃって授業を出てないんです。だから、先週の授業何したのかがわかんないので教えてください。
REPLY:
おおむねプリントの通りにやっています。補足情報は Web page に掲載しています。前々回やったことのおしまいの所と今回始まったところとの間にあることが, 前回やったことであると推定できませんか ?


h99s2035:
数値入力の際に、数値以外(例えば、AやBなどの文字)を入力した際にエラーを出したいのですが、IF文に、どのような構文をつけるとよろしいのか教えてください。
REPLY:
いくつかの方法があると思われます。(a) ライブラリに手を加えてエラートラップして処理する, (b) すべてを文字列として入力して字句解析をして数値を読み取る, (c) 入力の format をきちんと指定する, 他にもあるかも。(a) はライブラリのソースがなくちゃできない, (b) は C 言語ならやるけど Fortran で文字列処理は難しい (不可能ではないとは思うが), (c) は format 文をちゃんと使う (文法書参照)。


h99s2036:
なんとなくわかってきましたが、自分でプログラムを作ることになると、できなくなりそうです。よい参考書などはないのですか?
REPLY:
下記 (i) を参照。


h99s2038:
この授業とても難しいです。なにか親切に細かいことも教えてくれるテキストはないですか?
REPLY:
私の教え方が不親切だと言われているような気がしますが (^_^;; それはさておき, どこが難しいのでしょうか ? また下記 (i) も参照。


h99s2039:
今日やったinvaなんですけど、行列式0だぞ!とやった意味がわかりません。その後、どうすればいういんでしょう?行列式が0だぞってでてきたんですけど、それで?って感じです
REPLY:
下記 (v) を参照。


h99s2041:
if構文では、if (det .eq. b) (det .le. a)のように条件は、2つ以上付けることはできるんですか?
REPLY:
if 文の定義では論理式を一つだけとることになっています。文法書を参照してください。もちろん複数の条件を組み合わせて一つの論理式を作ることが可能なことはご存じですよね ?


h99s2043:
コンパイルするさいプログラムは、実行できるのに「プログラム単位に注釈行しかない」と表示されるは何でですか?
REPLY:
下記 (iii), (vii) を参照。


h99s2044:
今日のわからなかったことは、コンパイルのときにエラーが多いのだけれどもなんのエラーかがよくわからないです。
REPLY:
下記 (iii) を参照。ところで, 提出物 (メール) が要件 (何らかの質問であること) を満たしていません。


h99s2045:
プログラム中のwrite(*,1000)〜の1000の意味は何ですか?繰り返しの意味(do)なんですか?
REPLY:
詳しくは文法書を見てください。1000 とラベルされた行の書式 (format) にしたがって出力するという意味で, 繰り返しの意味ではありません。


h99s2048:
行列のプログラムを書いてコンパイルまでしたのですが、invaと打ち込んでも計算結果がでません。
REPLY:
下記 (iii), (v) を参照。ところで, 提出物 (メール) が要件 (何らかの質問であること) を満たしていません。


h99s2049:
なぜネットスケープは日本語にならないんですか?ページの下にあった「Japan」をクリックしたのに、日本語表示にならなかったのはどうしてですか?
REPLY:
「日本語になる」とはどういう意味ですか ? Web ページの日本語文字が文字化けして意図した通りに表示されないという意味であれば, 文字コードセットを「日本語(自動検出)」にすればいいでしょう。また「ページの下」とだけ言われても, 世界中にページはたくさんあるので, どのページのことかわかりません。
:
このコンピューターを使いこなせるには独学しないとだめですか?何か良い参考書とかありますか?
REPLY:
下記 (i) を参照。


h99s2051:
Unixのままでメールを送る方法を教えて下さい。あと、届いたメールを読む方法も教えて下さい。
REPLY:
下記 (ii) を参照。


h99s2053:
今日はmuleでコンパイルしたはずですが、次回になるとそのやりかたが曖昧になるのが心配です。
REPLY:
そうですか。ところで, 提出物 (メール) が要件 (何らかの質問であること) を満たしていません。


h99s2055:
’行列式が0だぞ’というふう日本語を入力するにはどうすればいいのですか?
REPLY:
プログラムの論理上, 日本語である必然性はないと思われますが。センター演習室では mule (emacs) + canna なので, Control + O で日本語入力モードになります。もう一度押すと元に戻ります。


h99s2057:
行列式detAも逆行列と一緒に表示するには、単にwrite det〜と入力すればよいのですか?それとも他にやりかたがあるのでしょうか?
REPLY:
試してみなかったのでしょうか ? そういう疑問を持ったときに, すかさず自分でやってみるために, この授業は演習室でやっているのですが。また, ある処理をする手段は一通りとは限りません。複数の手法がある可能性は常にあります。もっとも Fortran で write 文以外を用いて計算結果を出力する手段を, 私は知りませんが。


h99s2059:
関数の係数の定義域が示されていないにも関わらず使用されている、と出てきたのですが。その意味がわかりません。
REPLY:
下記 (iii) を参照。ところで, 提出物 (メール) が要件 (何らかの質問であること) を満たしていません。


h99s2061:
テキスト7ページにあるプログラムの18行目のformatはどのような意味があるのですか?
REPLY:
下記 (iv) を参照。


h99s2064:
UNIXを使ったメールの送り方や、メールの見方がわかりません。どうすればよいのですか?
REPLY:
下記 (ii) を参照。


h99s2065:
数列を表すときにある、format(1x,2f8.4)は何を表しているのですか?
REPLY:
下記 (iv) を参照。


h99s2069:
コマンド『format(1x, 2f8.4)』の役割を教えてください。
REPLY:
下記 (iv) を参照。


h99s2073:
今日の授業はわかりやすかったので、特に質問はありません。
REPLY:
提出物 (メール) が要件 (何らかの質問であること) を満たしていません。受動的で居ては質問は浮かびません。もっと好奇心旺盛に, 積極的に考えましょう。


h99s2074:
√はどのように表せばいいのでしょうか?
REPLY:
平方根の記号自体を表わすのは, その文字を write すればいいのでは。ある数の平方根を求めるのには, いろいろな方法があると思うが, もっとも簡単と思われるのは Fortran 組み込みの関数を用いることで, 変数 x の平方根は sqrt(x) とすればよい。


h99s2083:
format文の括弧のなかのf8.4の意味するところは何でしょうか?
REPLY:
下記 (iv) を参照。




複数の人から共通に質問されたこと
  1. なにか親切に細かいことも教えてくれるテキストはないですか ?:
    1. Fortran 文法についてならば, fortran 言語の入門書を読んでください。それ以外のことについてなのであれば, まず何について知りたいのかを明確にしましょう。そして, それに関する入門書を探しましょう。
    2. 「コンピュータを使いこなす」とはどういう意味でしょうか ? 問題をきちんと定義しないと, 具体的な解決法を考えることができません。
    3. 英語の文法を完璧に身につけただけでは, 米大統領のようなすばらしい演説をすることはできませんよね。Fortran の文法を身につけただけでは, 今日の練習問題のような「二次方程式の解を計算する」プログラムを作成することはできません。二次方程式に関する知識が必要です。
    4. 例えば ``x^2 + 3x + 1 = 0'' を満たす x を求めようとするとき, あなたはどういう計算をどういう手順で行ないますか ? そういった「仕事の段取り・手順」を記したものがプログラムです。こういうことってどの様なところに書いてあるのでしょうか ?


  2. Unix でのメールのやりとり:

    センター演習室では Windows の AL-Mail でのメールのやり取りをお勧めします。Unix で読んだメールは別のところに保存されるので, 後で AL-Mail で読み直すことはできませんよ。メールのデータを分散させるよりは, 一つところにまとめて保管し, 管理した法がいいのではありませんか ? 以上のリスクを充分理解した上で unix 上でメールのやり取りをしたいというのでしたら, センター演習室では mnews というツールを使うのが便利でしょう。使い方などについては

    URL:http://www.stu.hirosaki-u.ac.jp/

    の下の方に ``mnews ってなあに ?'' があるので参照してください。


  3. テキストどおりにやったのに, コンパイルまたは実行時にエラーになった。原因がわからない:

    コンピュータは, 意図した通りに動作するのではなく, プログラムされた通り・操作された通りに動作します。あなたがやったと考えていることと, 実際に行なったこととの間に食違いがあるから, エラーが出る原因がわからないのでしょう。それ以上のことはあなたのメールの文面だけからでは判断できません。 正しく診察しないと正しく治療できないことはおわかりですね。あなたのメールには正しい診察に足る情報が含まれていません。


  4. format(1x, 2f8.4) の意味:

    詳しくは文法書を参照してください。 まず ``1x'' について, 空白を一文字出力します。x が空白を出力する意味で, その前の 1 が繰り返しの数です。出力行の先頭が空白の場合には, Fortran は改行してから内容を出力します。また出力行の先頭が ``0'' であれば前の行と重ね打ちで, ``1'' であれば改ページします。 次に ``2f8.4'' について, このうちの ``f8.4'' については単精度実数を 8 桁で表示し, そのうち小数点以下には 4 桁使うという意味です。小数点そのものと符号用に一桁づつ使いますから, 結果として整数部 2 桁・小数部 4 桁で実数を表記することを意味しています。そしてその前に 2 の数字があるので, f8.4 を二回繰り返して使うことを意味します。今回の場合には, 行列の一列目の数値と二列目の数値の二つを出力していますね。


  5. プログラム inva.f の動作について:

    このプログラムが何をするためのものであるのかを, きちんと厳密に考えましょう。そうすれば, これがある特定の一つの仕事だけをするためのプログラムであり, その結果を正直に示しているだけであることがわかるでしょう。次にこのプログラムで (類似ではあるが) 別の仕事をするためにはどう改良すればいいか考えましょう。


  6. 1.7 節のプログラム中の ``goto 999'' について:

    文字通りの意味は 999 とラベルされた行に飛ぶという意味です。しかし今回のサンプルプログラムでは不必要な実行文ですね。


  7. 「プログラム単位に注釈行しかない」というエラーについて:

    詳しくは文法書を見てください。Fortran プログラムは, 複数のプログラム単位からできています。program 文から end 文までが一つの単位です。Fortran コンパイラは end 文が現われたので, 一つのプログラム単位が終了して次のプログラム単位が始まるものと期待しています。しかしここで空白行 (注釈行に相当) だけしか現われなかったので, 頭書のエラーとなったのでしょう。



Ryo MIYAMOTO 2001年6月9日