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

h98s2003:
INTEGER NONE とは何ですか?
REPLY:
字義どおりであれば, NONE という変数を整数型として宣言したことになります。


h98s2009:
本講義では、講義の履修によって到達し得るレベルはどの程度の習熟度を想定しているのでしょうか。(もしや本人の頑張り次第?)
REPLY:
私自身がこの講義を担当するのが初めてですし, 予想よりも受講者が多いのでレベルの低下は避けられない。しかし希望としては, 研究で必要になった場合に 50 行程度のプログラムなら特別の抵抗もなく作成して計算してみることができるくらいかな。


h98s2068:
数値解析法の講義より 'implicit none 'の意味を聞き逃しました。
REPLY:
下記 (i) 参照。


h99s2002:
emacsでsave バッファ と save バッファ as は何がちがうのですか。
REPLY:
もとファイルと同じ名前で保存するか, 新たに別の名前で保存するかの違い。


h99s2003:
1、繰り返し計算の場合 impricit none // real ( ? ) ・・( )部分には何を入力すればよいのでしょうか?(isumじゃないっすよね?)
REPLY:
暗黙の型宣言を用いないようにした (implicit none) ので, 用いる変数 (i, isum) はすべて型宣言しなければいけません。
:
2、10 continueの意味は10行目という意味ですか?
REPLY:
下記 (ii) 参照。ただし ``10 行目'' は序数であって基数ではありません。質問に対する直接の答は ``いいえ''。


h99s2006:
今日はFORTRANという言語でプログラムをつくりましたが、プログラム言語では、他にC言語やVisual Vasicなどを聞いたことがあります。同じプログラム言語でも、どんな違いがあるのですか?また、その働きやそれぞれどんな場面で使われているのか、教えてほしいです。
REPLY:
コンピュータにやらせたい仕事の目的に応じていろんなプログラム言語が開発されています。Fortran は formula translation に由来する名前で, 数式の記述が簡単で数値計算に適しています。C は B という言語の次につくられた言語で, コンピュータシステムを制御するための記述に優れていますが, 最近ではもっと汎用的に使われています。Visual Basic は米マイクロソフト社の製品名で, BASIC (Beginner's all-purpose symbolic instruction code, 初心者向け汎用記号的指示符号) 言語を同社の製品である MS Windows 用のグラフィカルなアプリケーションを作りやすいように拡張して実装した製品です。


h99s2011:
説明書を読んだのですがコンパイルの意味がまだよくわかりません。
REPLY:
ソースプログラムはただのテキストファイルであって, 内容は人間に理解しやすくなっています。これをコンピュータが理解して実行できる機械語に翻訳するのがコンパイル作業です。
:
あとパソコン上達法があれば教えてほしいです。
REPLY:
逆に質問します。``パソコン (が, に, を, ... ?) 上達'' するとはどういう意味ですか ? ``鉛筆が上達する'' などと同じく意味がわかりません。


h99s2013:
繰り返し計算で10continueの意味が良くわかりませんでした。
REPLY:
下記 (ii) 参照。


h99s2014:
質問はこの数値解析は将来どんなことに応用されるのですか?
REPLY:
日本語の文として変です。主語と述語のつじつまがあっていません。世の中では多くの数値計算がおこなわれています。地球大気の動きをシミュレートして天気予報, 自動車や飛行機の設計 (機械強度と空気抵抗など) などは日常的に想像できるでしょう。また電子や原子の挙動を計算することで, 物質の物性予想や分子設計も可能になりつつあります (予想できるということは, 性質の理解につながります)。


h99s2018:
今日の授業中にやったDOループの所なんですが一番はじめにやった手順と同じように行ったのにできませんでした。テキストと同じ様に入力し、進めたのですができなかった理由がよく分かりませんでした。
REPLY:
もし本当にテキストどおりであれば, ちゃんとできるはずです。できなかったのは, 自分ではテキストどおりのつもりであったが, 実際にやった操作は違っていたからでしょう。あなたの記述だけからでは, 実際にやった操作が何であるかは推定できません。


h99s2019:
前回までのemacsとfortranではどちらのほうが使いがってがよいのでしょうか?
REPLY:
emacs はエディタであり, fortran はプログラム言語です。次元の違うものは比較できません。


h99s2020:
何故.fを付けないとFORTRANとして出来ないのですか?
REPLY:
日本語の文として意味不明です。``FORTRAN として出来る'' とはどういう意味ですか ? コンパイラがファイル名のサフィックス .f の有無で入力ファイルが fortran プログラムであるかどうかを判断しているようです。


h99s2022:
UNIXでのメールの送り方がわからない。
REPLY:
逆に質問です。わからないと困りますか ? Windows の AL-mail を使うことに不都合がありますか ? 弘前大学総合情報処理センターの教育用システムに標準的に用意されている道具を用いないことは個人の自由ですが, その結果として負うことになる苦労は個人の責任です。なおこのシステムでは Unix におけるメールソフトとして mnews が用意されているようです。


h99s2024:
先生の話は後ろの席にいるとあまり聞こえなかった。わからなかったところは学院生に聞いて大体理解しました。でも実際のところは何
REPLY:
文が未完のようです。ところで, 提出物 (メール) が要件 (何らかの質問であること) を満たしていません。


h99s2025:
繰り返し計算で、新しくプログラムを作ったときに、muleからコンパイルできなくなってしまいました。
REPLY:
質問になっていません。それはさておき, あなたの文面から状況がどうなっているのかを推定することは, 私にはできませんので「あっ, そう」としか返事のしようがありません。
:
もうひとつ、endのあとに、スペースキーをおしたり、何か入力して消したりすると、それは何かがはいっているとみなされるのですか?
REPLY:
``*だれに* みなされる'' というのでしょうか ? ``みなされる'' と困りますか ? 実際に入力したのであれば, みなされるどころかまさしく存在しているはずです。


h99s2026:
組み込んだプログラムはどんな関数にも応用は可能なのですか
REPLY:
日本語の文法的には正しそうですが, 質問の意味はわかりません。何にプログラムを組み込むのか, そしてそれを関数に応用するとはどういう意味なのでしょうか ?


h99s2029:
テキストの問題3で1から10000までの計算をすると正しい値がでてきませんでした。原因がわかりません。
REPLY:
下記 (iii) 参照。


h99s2034:
質問その1muleとemacsの違いが良くわかんないんだけど鈴木先生の時に使ってたemacsとmuleの違いってなんなの?
REPLY:
GNU Emacs は英語圏の人が作成したもので, そのほかの言語を扱えませんでした。そこで emacs バージョン 19 を基に多言語拡張した mule が開発されました。Emacs 20, 21 には mule の機能が取り込まれているので, 多言語が使えるようになっています。センターの教育システムでは emacs バージョン 19.34.3 がインストールされているようですが, これは日本語も扱えるようですね。このシステムにおける mule は emacs へのリンクになっているので, 実体としては同じものですね。(which コマンド, ls の -l オプション, emacs と mule の -version オプションなどを活用のこと)
:
質問その2このメールはTAの人に聞いてmnewsと打って書きました。mnewsのメールのだし方はわかりましたがめーるの読み方がわかりません教えてください。
REPLY:
普通に Windows の AL-mail で読めばいいのでは ?
:
質問その3僕はあまり打つスピードが早くないのでよくコピー&ペーストを使っていますだけどwindows98ではできるのですがこのOSでは出来ません。そのし方を教えてください
REPLY:
Unix の X11 での標準的な操作としては, マウスの左ボタンを押しながらコピーしたい領域をなぞる (ドラッグする) と表示が反転するなどして領域が 選択されます。ここでマウスの中ボタンを押すと, カーソルのある位置にペーストされます。
:
送れたかな?
REPLY:
受け取れましたので, 送れたようですね。


h99s2035:
5/25日9,10時間目の数値解析法の内容について。1.1プログラム作成の手順 1.2大事な約束事:暗黙の型宣言を行いました。特に質問はありません。
REPLY:
提出物 (メール) が要件 (何らかの質問であること) を満たしていません。


h99s2036:
テキストの問題3で 10 continue とかいてあったが、このプログラムをかいた意味がわからないです。おしえてください!10回続けるという意味なんですか?
REPLY:
下記 (ii) 参照。続ける回数が 10 というわけではありません。


h99s2039:
問題3の1〜10000までを2乗してたしていくのに、−が出てきました。変です。なぜでしょう??
REPLY:
下記 (iii) 参照。コンピュータでの数値計算で気をつけなければいけない点の一つです。


h99s2040:
1.Emacsでファイルを作ったとき 「****~」のようなファイルができてしまうのはなぜでしょう。
REPLY:
emacs (mule) では, 編集前のファイルを *~ という形で残しています。emacs での編集を間違えたり, 編集の結果を無効にしたい場合には, このバックアップファイルを用いて編集前の状態に戻ることができます。
:
2.Doループのところのプログラムで 10 continue のところの「10」を一番左端のところから打ち込もうと思ったのですがどうしても一マス分空いてしまいました。これはなんなんでしょうか?
REPLY:
Fortran では行の 1 桁目に C を書くことで, その行をコメント行にします。また行番号は 2 から 5 桁目に書くことになっています。emacs の fortran モードがプログラム入力支援の一環として, 行番号の 10 を規定の桁に入るように直してくれたのでしょう。


h99s2041:
write(*,*)の(*,*)の意味は、どういった意味があるのでしょうか?
REPLY:
下記 (v) を参照。


h99s2043:
1、ユニクッスで、メールは、どう送るのですか?
REPLY:
h99s2022 の質問に対する回答を参照してください。
:
2、プログラムを打つ際、7行以上の場所(8行や9行など)から打ち込んでも大丈夫ですか?
REPLY:
行 (row) と桁 (column) を取り違えているようですね。7 から 72 桁のプログラム本文を記述するところでは, 空白は無視され計算式や文の実行に影響を与えません。


h99s2044:
今日のわからなかったところは、暗黙の型宣言の意味がよくわからなかった。
REPLY:
質問になっていません。下記 (iv) を参照のこと。


h99s2045:
暗黙の型宣言に従わないようにした後、実数で計算させた値の、小数点以下の桁数も、暗黙の型宣言になっているのですか?そうであれば、やはり、従わないようにするプログラムの存在があるのですか?
REPLY:
暗黙であるか明示的であるかにかかわらず, 変数の型が整数であるか実数であるかが型宣言で指定されます。整数とは小数点以下を持たない数のことであり, 実数は小数点以下を持つこともある数ですね (有効桁数については下記 (iii) 参照)。それとも何か違うことを聞いてるのかな ?


h99s2048:
繰り返し計算のプログラムをしたが、どうもうまくいかなかったのでもうすこし説明してください。暗黙の型宣言もいまいちよく解りませんでした。
REPLY:
日本語の文として変です。``プログラムをする'' とはどういう意味ですか ? それがうまくいかないことともう少し説明が必要なこととの関係もわかりません。また, 質問にもなっていません。


h99s2049:
sumupのやり方の説明が難しかった。説明をもっとわかりやすくしてほしかったです。
REPLY:
希望はわかりましたが, 提出物が要件を満たしていません。


h99s2051:
プリントの3ページの問題2のやり方がわかりません。どうすれば解けますか?
REPLY:
文法を理解して, 少し考えれば解けます。


h98s2052:
今日の授業でわかったことはプログラム作成の手順である。その内容はbokuを2.5とおきkanojoを0とおいてbokuとkanojoをかけた時にでてくる回答loveとして、掛け算を行うというものでした。その後、kanojoの数値をかえてプログラムを実行したが、私はなぜかうまく実行することができなっかった。次回はがんばろうと思う。
REPLY:
残念ながら, 提出物が要件を満たしていません。


h99s2053:
最初はほとんどの事が分からなかったけど、ATの人たちに質問しまくって特に疑問という疑問はなくなってきました。少しずつでも、理解していくことが楽しくなってきました。
REPLY:
それは良かったですね。なお AT は TA (Teaching Assistant) のことでしょうか ?


h99s2055:
        program sumup
        isum = 0←これにどういう意味があるのかわかりません。
        do 10 i = 1, 10
        isum = isum + i**2
    10  continue
        write(*,*)
        stop
        end
REPLY:
文字通り, 変数 isum にゼロを代入しています。もしこれが無ければ, 二行後の isum = isum + i**2 が初めて実行されるときに, この右辺ではどんな計算が行なわれるでしょうか ?


h99s2057:
プリントのp3で、integer seisuuとありますが、これはi,j,k,l,m,n以外の文字で入力した時に整数を用いたい場合に使うのという意味なのでしょうか?
REPLY:
質問文 (らしきもの) の意味がとれません。


h99s2058:
おはよーございます。ぼくからの質問は、どうして、コンピューターは、自分のことばを持つのですか。
REPLY:
日本語の文が変です。主語と述語が対応しているようには見えません。``質問は'' と ``コンピュータは'' のどちらが主語でしょうか ? そして一方が主語だとすると, 他方はいったい何だろう ? もし ``どうして、コンピューターは、自分のことばを持つのですか。'' という質問ならば, その答えは ``そういう風に作られているから'' ではいかが ?


h99s2059:
問題3でnが1から10000の時に計算結果が負の値になりました。どうしてですか?
REPLY:
下記 (iii) 参照。


h99s2061:
自分が打ち込んだプログラムにミスがありコンパイルできないとき、どのようにしてチェックすればいいのですか?
REPLY:
コンパイルできないのは文法エラーの場合です。たいていはエラーのあった行とエラーの内容がメッセージとして表示されますので, それを手がかりにプログラムを見直すことになります。コンパイルに成功しても計算結果が正しいとは限りません。誤った答を出力するプログラムのミスを見つけて直すのは, また別の話になります。


h99s2064:
新しいプログラムをつくるたびに、ディレクトリも作らなければならないのですか?
REPLY:
そんな必要はありません。しかしまとまった仕事の単位ごとにディレクトリを作ってファイルを整理した方が良いでしょう。
:
あと、異なるディレクトリでemacsを開いてファイルを作って、ほかのディレクトリでそれを使うことはできるのですか?
REPLY:
できます。ディレクトリを含めてファイルを指定すればいいことです。


h99s2065:
DOループのプログラミングを書き込んだつもりでしたが、endの前に「文字列の書き込みがありません」のようなエラーが出たのですが?何故ですか?
REPLY:
あなたがやったつもりのことと, 実際に行なわれたこととの間に食違いがあったのでしょう。ここであなたの文面からだけでは実際に何が行なわれたのかを推定することは不可能です。
:
あと、五列目にもプリントに書かれた文字しか書いてないつもりでしたが、後ろに不必要な文字がありますというエラーがありました。結局原因がわかりませんでした。
REPLY:
「あっ, そう」
:
また、文字列がわかりません。どうして六列空けるのですか?
REPLY:
ここで ``文字列'' の言葉が出てくる論理がわかりません。行の先頭 6 桁を空白にするのは, その必要があるからでしょう。


h99s2069:
プログラム[write(*,*)]意味を教えてください。
REPLY:
下記 (v) 参照。


h99s2072:
説明の時間と打つ時間を分けてほしい。
REPLY:
希望はわかりましたが, 提出物が要件を満たしていません。


h99s2073:
進みが早いのでゆっくり講義して欲しいです
REPLY:
希望はわかりましたが, 提出物が要件を満たしていません。


h99s2074:
問題3のときにnが10000までのとき答えがなぜかマイナスになっていました。これはなにがいけなかったのでしょうか?
REPLY:
下記 (iii) 参照。


h99s2076:
組んだプログラムをほかのソフトでフィードバックは可能なのですか?
REPLY:
質問の意味がわかりません。``他のソフトでフィードバックする'' とは何を意味しているのでしょうか ?


h99s2083:
ループ文のdoの後の10という数字の意味がわかりません
REPLY:
繰り返す範囲を指定します。ここでは行番号 10 の行までの範囲を繰り返すという意味です。



複数の人から共通に質問されたこと
  1. ``implicit none'' について:

    変数の型 (整数型, 実数型) について, 暗黙の型宣言に従わないという指定です。また implicit の使い方として ``implicit integer a, b'' とすると, a または b で始まる名前を持つ変数は全て整数型になります。詳しくは文法書を参照のこと。


  2. 繰り返し計算のサンプルプログラムの ``10 continue'' について:

    ``10'' は行番号で, この行に ``10'' という名前をつけています。``continue'' は何ら特別な実行内容を持たない文で, ただ存在しているだけの文です。Do ループで繰り返しの範囲を指定するときの末端の行としてよく使われます。詳しくは文法書や入門書を参照のこと。


  3. テキスト問題 3 で, 1 から 10000 までの計算について:

    次ページ以降にも説明がありますが, コンピュータは有限のメモリを用いて計算をするので, 無限に大きい数や無限桁の有効数字を扱うことはできません。整数は 9 桁 (-2147483648 から 2147483647), 実数は有効数字 7 桁 (絶対値は 0 または 1e-78 から 1e75 の範囲), 倍精度実数は有効数字 16 桁まで (絶対値のとりうる範囲は実数と同じ) しかあつかえません。詳しくは文法書を参照のこと。 特に整数について, 規定の範囲を越えた場合にどうなるかを説明します。コンピュータ内部では二進数で数値は表現されています。今 8 bit で整数を表現する場合を考えると, とりうるビットパターンは 00000000, 00000001, 00000010, ..., 11111110, 11111111 の 256 通りです。これを用いると -128 から 127 までの整数を次のように表現することができます。10000000 (-128), 10000001 (-127), ..., 11111111 (-1), 00000000 (0), 00000001 (1), 00000010 (2), ..., 01111110 (126), 01111111 (127)。 この様な表現を用いると, 十進整数の加法が二進数の加法に置き換えられます。例えば 1 + (-1) = 0 は 00000001 + 11111111 = 100000000 ですが, 最上位の 1 は桁あふれしてしまうので, 計算結果として残るのは 00000000 です。さてこの系で規定範囲を越えた整数を扱おうとするとどうなるでしょうか ? 例えば 127 + 1 = 128 について考えてみましょう。これは 8 bit の二進数では 01111111 + 00000001 = 10000000 となります。しかしこれは意図した 128 ではなくて -127 の意味ですね。コンピュータでの数値計算で気をつけなければいけない点の一つです。


  4. 暗黙の型宣言について:

    プリント 1.2 の二つ目, 上の (i), および文法書を参照のこと。


  5. write(*,*) について:

    write 文は括弧書きの制御情報並びで出力装置番号の指定と書式の指定を行ないますが, これを * とすることで, 出力装置は標準出力装置 (unix では コンソール画面) に, 書式は出力変数に応じて適切な形にしていされたものとして動作します。詳しくは文法書を参照のこと。



Ryo MIYAMOTO 2001年5月28日