数値解析法 (数値計算 編), 2004-07-16 質問と回答, M は宮本による回答。 h02s2002: これから企業に就職したら何処に行っても数値解析法でやったような プログラムが作れないとやっていけないのでしょうか? M: (個別の)企業・部署・業務に依存する話です。当然ですが。 h02s2007: コンピューターの中で数字はなぜ二進法で表されるんですか? M: 論理(ブール代数)としては充分だからでは ? h02s2009: Unix と Linux の違いがよくわからないのですが、大きな違いは何ですか? M: 名前が違う。着眼点によっては, その程度の差しかない。 h02s2010: ハードが2進数処理をしている以上、10進数計算との誤差は絶対にでて しまうものなのですか? M: テキストに記載済みです。 h02s2014: プログラムのコマンドでFORMATというのがあるのですが、どういうコマンド なのですか? M: 文法書を参照してください。 h02s2015: 数値解析法はどんなことに応用できますか。 M: 設計段階では欠かせない。自動車・航空機・建造物, 構造物から化学プラントでの 原料や製品の収支, 企業の経営戦略立案, その他もろもろ。今時, 定量的にきっちり やらなくても済むことなど, ほとんど無い。世の中を何だと思ってるん ? h02s2016: Example3.2 で (5,*) というのがありますが、これはどういう意味ですか? M: 既出です。文法書を参照してください。 h02s2018: 今授業で使用しているLinuxを使用していますが、現在企業で使われている 既製品ソフトを教えてください。 M: (個別の)企業・部署・業務に依存する話です。当然ですが。 h02s2019: 今日の授業アンケートの結果はどのように反映されるのですか? たとえば授業内容が変更になるとか、講師が変更になるとか・・・あるんですか? M: いつも通りでしょう。それともこの数値解析法の講師を交代して欲しいという意味 ? h02s2020: 円の面積を求めるときに 1/4 円を基準として最後にそれを4倍して円の面積 を求めますが なぜこのように回りくどい方法をとるのでしょうか? また、分割円を最後に纏め上げる円の面積を求める方式で角度(ラジアン)を利用した 円の面積の計算方法もありますが、円の面積を求める上で機械計算上、どちらの精度が 上なのでしょうか? 少なくとも, fortran ではラジアンを用いてないということは、1/4 円を基準とした 求め方の方が精度が高いということなのでしょうか、もしくは、1/4 円を基準とした 計算方法のほうが他の計算に応用が利くということなのでしょうか? 質問攻めで申し訳ありません(平伏 M: 質問攻めでも良いんだけど, 何を聞きたいのかわかるように聞いてくれ。 h02s2021: 今、モンテカルロ法のところをやっているのですが、ここで使われている 乱数が説明を読んでもどのような働きをしているのか、いまいちつかめません。 いったい乱数はどのような働きをしているのでしょうか。 M: 一体何がわからないのか, ちっともわかりません。乱数は乱数でしょ ? h02s2024: 今回の授業で扱っている Fortran 言語のことをパソコンは理解しているよう ですが、このようなプログラミング言語を理解させるために、何らかのプログラムが 必要だと思います。これを繰り返していくと、本当の根っこはどこにあるのですか? M: おぉ, この問いは次の二つのうちのどっちの意味かな ? (i) コンパイラをどう やって作るのか ? (ii) 認知科学的に「機械が理解する」とはどういう事か ? h02s2028: listing 21 に乱数の作り方のプログラムが示されていますが、その中で使わ れているパラメータは先生が作った(入れた)値なんですか ? それとも一般的にその 数字を使うということになっているのでしょうか。条件からいえば別にその値にしな ければならないということはないですよね。 M: いいえ。もちろん L や C が異なれば別の系列の乱数になりますが, *良い* 乱数か どうかは, 知りません。T30 と mu は, 扱える整数の範囲に関するもので, 整数の オーバーフローの修正をしている。 h02s2029: ふと思ったんですが、先生方も自分の求める解析結果がほしい場合、自分で プログラムをつくるということですか? 自分は見本をみて自分で考えるだけでえらい 大変なんですが M: 必要な道具がなけりゃ, 自分で作るもんでしょ ? プログラムだけじゃなくて, 測定装置だっておんなじ。 h02s2031: プログラムの表記方法には一つの意味について一種類しか無いのでしょう か? あと7月9日分の出席メールが受け取られていなかったのですが・・・ M: 複数の書き方があるという例をテキストには示していますし, 異なるアルゴリズムを 採用すれば, 違うプログラムになるのは当然だと思いますが ? h02s2032: ニュートン・コーツの求め方では得られる解の精度をあげるため区間を 細かくすると、多重積分の場合時間かかかるということでモンテカルロ法の点を増や して精度の良い解を得るほうが時間がかからない、ということなのですが、確率論で 点を使うというところからどうも精度はずば抜けてよいとは思えないのです。 宮本先生はどちらの方法がお好きですか ? 私はプロセスがわかりやすいニュートン・ コーツの方式が好きです。また時代的にはどちらが先なのでしょう。 M: その通りですね, 「ずば抜けてよい」ことにはならないでしょう。なにせ区分求積を やっているだけですから。また乱数とはいっても充分な数を取れば, 積分区間を一様に 埋め尽くすと期待できませんか ? h02s2034: 数値解析の授業で使うホームページにプログラムで使われている語句の 意味を説明しているところはないのですか。語句の意味がわからないときは本などで 調べるしかないのですか。 M: 信頼できる結果が得られる調べ方に, それぼどバリエーションがあるとは思えま せんが。ちなみにどの語句がわからないのでしょうか ? こういうことをこのメールで 質問するって, 非常に効率が悪いと思いませんか ?? h02s2036: WINDOWS で FORTRAN を使うことはできないのでしょうか? できるとしたら、なぜ LINUX で演習しているのでしょうか? M: できるけど, 逆にどうして Windows でやらなくちゃいけないんですか ? h02s2039: 数値解析法において注目すべき研究分野は何ですか? M: 「数値解析法」という分野は, かなり枯れてるんじゃないかな ? あぁ, 分散処理 とか並列処理とか, あるいは最適化とかは, まだこれからかも。 h02s2040: プログラムの中で c−−−−−−−−−− で行を変えるときがあります よね。なんとなくプログラムを作っていて意味はだいたい理解しているのですが、 なんで c−−−−−−−−−− と表記するんですか? 「−」の数は10個と 決まってるんですか? M: 意味を理解しているのなら, 10 個の時と 9 または 11 個の時との違いを考えれば わかるんじゃないの ? h02s2042: FreeBSD はなんと読むのですか?「フリービーエスディー」ですか? M: だいたいそんな感じだと思われます。 h02s2045: 高級言語は、幅広く使われていることと言ってもいいのですか? M: 質問の意味が良くわかりませんが, 今どきわざわざ低級言語を使うことは, めったに ないでしょう。 h02s2046: WINDOWS 上で FORTRAN は使用できるのですか。 M: 可能です。既出ですが。 h02s2048: プログラムの参考書やインターネットなどプログラムについて見てみると プログラム中にローマ字でなく日本語(漢字やひらながなど)がつかわれていることが あるんですが、プログラム中に漢字などを書くことができるんですか? M: 処理系に依存した話です。g77 @ Vine Linux については, 知りません。せっかく だから試してみたら ? h02s2049: Fortran 等で計算した場合(計算機も同じだと思うのですが)、方法に よって精度が違うとは思いますが誤差が必ず出ますね。学生実験などでは有効数字で 切っていますが、実際の研究ではPCなどによる誤差をどのように扱っておられる のですか? M: そういう意味で, ちゃんとした数値計算では, 計算誤差がどの程度であるかの 見積もりも重要です。 h02s2050: fortran の他にも C とかいろいろあるようですが、そのへんも知っておいた ほうがいいのでしょうか。 M: 知っていて困ることはないでしょう。 h02s2051: 物質理工学実験Aで「マイコン機械語」という実験を行い、8ビットの マイコンについて学びました。現在のパソコンには何ビットのものが使用されている のですか? M: Pentium 4 なんかは 32 bit と称しているのじゃないかな。 h02s2052: ニュートンラフソン法はどんな方程式の解を求めるのに使ったらいいの ですか? M: たいていのものは可能と, テキストに記載済み。 h02s2053: 弘前大学の学生についてどう思っていますか?またメールの内容も成績に 関係あるのですか? M: 前半については, ここではノーコメント。後半については,「質問の内容は採点の 対象とします。」と Web ページに記載しています。 h02s2054: Exercise3.3〜3.8 から 3 つ以上レポートを出せば良いという事でしたが、 4つとか5つ出した場合成績はどのようにつくのでしょうか? M: 一つの課題のできぐあいが同程度の場合, 三つ出した人と五つ出した人を同点に するのに, あなたはナットクできますか ? 学生さんがやったことは, きちんとそれ なりに評価してあげないとネ。 h02s2055: 弘前大学理工学部設計分子工学講座の宮元量研究室の研究室・卒業研究紹介 をしているところからダウンロードできる「謎のzipファイル(パスワードつき)」の 中身は何ですか? M: あの「宮本量」なんですけど。教えてしまっては謎じゃなくなっちゃう。 h02s2057: 算術演算子や文字演算子、関係演算子、論理演算子では優先順位は決まって いますか。また、角度はラジアンのほかに度を使って表示することができますか。 M: 演算順序が決まっていなければ, コンピュータは計算できませんね。詳細は 文法書を参照してください。後半の質問についても, 文法書が役に立つでしょう。 h02s2059: 積分を行う際、台形公式よりシンプソン法のほうが精度がよいということが わかりました。そこで思ったのですがシンプソン法より精度の高い方法はあるので しょうか。 M: もちろんあることでしょう。詳しくは数値計算法に関する専門書を見てください。 h02s2062: 宮元先生はどのような研究を行っているのですか。そして実用されると したらどのように僕たちの生活に関わってくるのですか。その研究に fortran はどの ように活用されているのでしょうか。やはり計算ですか。計算以外の活用について お願いします。 M: あの「宮本」なんですけど。生活に関わらない「実用」って何でしょうか ? またプログラム言語がプログラム以外にどう使われると期待しているのだろうか ? h02s2064: いろいろ試しているのですが、どうしてもうまい具合に近似処理が修了 しません。コメントで「惜しかったね」とありましたが、なにかうまい方法があるん でしょうか? M: もちろん。二つの実数値が同じかどうかを比べることは, 計算誤差を考えると非常に 危険です, 一致することはほとんどあり得ないでしょう ... という主旨のことを どこかに書いておかなかったかなぁ。 h02s2065: オイラー法とルンゲ-クッタ法では、実際 Fortran でよく使われるのは どちらですか?また、具体的に何に使われますか? M: 時と場合によるこたぁないか, これだけ差が歴然としてるんじゃぁね。物理現象を 微分方程式として記述するのは, ごく普通に行なわれていると思いますが ? h02s2067: FORTRAN 66, FORTRAN 77, FORTRAN 90/95 って全部内容が同じですか? この授業で使っているのはどんな FORTRAN ですか? M: もちろん, 違います。だから異なる名前がついている。Fortran 77 の範囲でやると テキストに書いておきました。またコンパイルコマンド g77 から推測できたのでは ありませんか ? h02s2068: Example3.4 のところに繰り返しの収束判定は、ε=1.0*10^-5 を用いると ありますが、10^-5 にする理由はなぜですか。10^-7 や 10^-10 などとしてもいいの ですか。 M: いいかどうか, どうして試してみないのでしょうか ? せっかく演習の機会がある のにね。 h02s2069: OSにもいろいろありますが、現在の主要 OS である Windows、MacOS、UNIX に対して、得意分野・不得意分野・利点・欠点などを宮本先生が感じられている限りで 教えてください。 M: これらが主要かどうかは謎ですが, Web 上や雑誌などに色々書いてあると思います。 h02s2071: 最近の映画は、いろいろなスタントアクションをパソコン上で計算したり、 CGだけで映画を作ったりなど、パソコンの役割は非常に大きいが、あぁいうものを 作っている人たちはOSを使っているのですか?Linuxとか使っているんですか? もしくは先生が使っている FreeBSD とか使っているんですか? M: OS なしでどうやってコンピュータを操作するのでしょうか ? 日本語ではなぜか 「基本ソフト」ですが, OS って Operating System (操作系) でしょ。ちなみに 映画のタイタニックは Linux マシンで, マトリックスは FreeBSD マシンで, CG が 作成されたそうです。 h02s2074: 質問がどうしても思い浮かばない場合どのようにしたらよいのでしょうか? M: すごいですね, 全知の神ですか ? h02s2083: 構造化プログラミングは fotran90 に導入されたのは、先進的でそれが 現在のオブジェクト指向のプログラミングに影響与えたとどっかのプログラムの本で 読んだんですか本当でしょうか ? また,fortran は IBM が開発しましたが、今も IBM が開発および規格を行ってるんでしょうか Linux みたいに多くの人がプログラミングに かかわるものではでしょうか ? M: 日本語の文章が破綻しています。ここで私が Yes/No を言うことにどんな意味がある のでしょうか ? 根拠を示さずにただ言うだけなら, コイン・トスとおんなじだ。なお Fortran 言語の規格は, 今ではそれなりの団体 (ISO かな ?) で行なわれているはず。 日本では JIS。 h00s2071: 1つ気になったことがありまして… Linux 上でプログラムを組んでいて 日本語表記をさせられなかったので WINDOWS 上で該当箇所を日本語に直して保存し、 Linux 上でコンパイル→実行したところ、わけのわからない文字列が出まして… Lunix 上でソースを見たところ日本語の箇所が記号と数字で構成されたものにに置換 されていました (WINDOWS 上では漢字コードは SHIFT-JIS を用いました) これは現状ではFORTRANで日本語表記をさせられないということを表しているのでしょう か? また、FORTRAN で日本語表記をするための方法はありますか? (そういえば 9 日 の回答 h02s2042 さんへの回答に対する質問なのですが Lunix 上ではどうやって漢字 コード等を調べれば良いのでしょうか?) M: 勝手にソースが改変されることは考えにくいので, 単に表示の問題では ? 表示する ツール (エディタやビュワー) の許す漢字コード, 表示する端末の許すコード, などの 設定がいろいろ絡んでくることでしょう。また Unix 上では漢字コードのコンバータが いろいろとありますよ。「man -k kanji」してはいかが ?