Surface Science and Solid State Theory Laboratory

@surface


Archive for the ‘講義情報’


数値計算2013/7/2 0

Posted on 7月 01, 2013 by kimi

7月2日分の講義資料をアップロードしておきました。今回は行列の固有値・固有ベクトルについて説明します。

電子物性の基礎でお話しした時間に依存しないシュレディンガー方程式の解(定常状態)や導波管や光ファイバーの中のマイクロ波や光のモード解析などは最初の問題は微分方程式の顔をしていますが、フーリエ展開などように適当な基底関数を使って展開することによって行列の固有値と固有ベクトルを求める問題に焼き直すことができます。これ以外にも電気電子工学で重要になる問題のほとんどが実対称行列で表現される、もしくは適当な相似変換によって実対称行列の対角化に帰着出来る問題であり、ヤコビ法などの方法により固有値、固有ベクトルを求めることができます。

全ての固有値・固有ベクトルを求めるのではなく最大固有値(もしくは最小固有値)からいくつかの固有値・固有ベクトルを求めるだけで足ることも多く、最近では冪乗法と呼ばれる方法やその変形もよく使用されます。みなさんがこのような方法のコーディングをすることは滅多に無いかもしれませんが、数値計算ライブラリの中の適切なライブラリ関数を適切に使用するにはその中で何が起こっているかという知識が不可欠です。

また、高速フーリエ変換でも余談で説明したように、FFTのルーティンとjacobi法のルーティンを自分で組むことができるようになれば、数値計算法としては免許皆伝です。(残念ながらこの半期の講義だけでは、達成目標がオイラー法とその仲間までで、初伝といったところですが。)ぜひ挑戦してみて欲しいと思います。正式な最終レポートの課題の発表と今後の講義計画についての説明も行います。

数値計算2013/6/25 0

Posted on 6月 24, 2013 by kimi

6月25日分の講義資料をアップロードしておきました。今回はフーリエ変換ついて説明します。

フーリエ展開は最も汎用的に用いられる直交関数展開であり、信号処理や画像処理にも欠かせない数学的な技法です。フーリエ展開、フーリエ積分、フーリエ変換、逆フーリエ変換と応用数学II(フーリエ解析)の時間にはいろいろ微妙に異なる定義になっていましたが、「連続」とか「無限」とかを原理的に扱うことができない計算機でこれを扱おうとすると実は一種類の離散フーリエ変換とその逆変換だけになってしまいます。計算自体は単純な定積分ですから、数値積分法を用いれば容易に計算することが可能ですが、似たような三角関数の計算と積和の計算を大量に実行する必要があります。そこでできるだけ計算すべき三角関数と積和の量を減らした高速フーリエ変換と呼ばれる技法が知られており、信号解析から量子力学の計算まで広く応用されています。口さがない人の中には「数値計算で有用なのは高速フーリエ変換だけだ」という人もいるぐらいです。
意欲のある人は是非最終課題の題材に選んでみてください。

数値計算2013/6/22 0

Posted on 6月 20, 2013 by kimi

6月22日分の講義資料をアップロードしておきました。世の中は土曜日だというのにこの空間だけ火曜日だぜ。今回は偏微分方程式の陽解法について説明します。

マクスウェル方程式からシュレディンガー方程式まで電気電子工学分野のほとんどの現象を記述するのに使われる偏微分方程式ですが、意外にこれを直接的に解くことはほとんどなくて、だいたいは変数分離して常微分方程式にして解いたり、適当な基底で展開して連立一次方程式や行列の固有値問題に書き直してから解いたりするのが主流です。そこで、今回はあまり顧みられることの無い陽解法について説明します。といっても結局のところ微分方程式を差分方程式化した時点でやっぱり数列の問題か連立一次方程式の問題になってしまうわけですが。

今回はレポートの問題は出ませんし、レポートの返却もありませんが、偏微分方程式というのは最終レポートのネタにするには恰好の題材です。まず第一に難しそうに見えるので競争相手がいない。所詮絵に描けるような問題は2変数関数で、2変数の問題は講義でやってしまっている(プログラムが流用できる!)にもかかわらず境界条件が変わると答えもがらりと変わるのでバリエーションが出せる。つまり問題としての考察もし易い。など、いいとこばっかりです。是非出席してください

その後の時間、普段なら皆さんは学生実験、私は卒研ゼミですが、午後3時を過ぎたあたりから徐々に土曜日になります。質問に来るには絶好の機会です。なお、質問の際には自分でつくったプログラムをUSBメモリに入れてくるのを忘れずに。

数値計算2013/6/18 0

Posted on 6月 17, 2013 by kimi

6月18日分の講義資料をアップロードしておきました。今回はこの講義のメインイベント、常微分方程式です。

シラバスの達成目標にも掲げられていますが、オイラー法のプログラムくらいはサクッと組んでパッと答えを出せるようになってください。実際には微分方程式を連立一次方程式か行列の固有値問題にして解くことの方が多いのですが、オイラー法は基本中の基本です。

レポートの課題も出ます。第二回目のレポートの返却もします。レポートの締切も続々来ます。なお、質問の際には自分でつくったプログラムをUSBメモリに入れてくると便利です。もちろん「講義資料」の印刷したものも忘れずに。

数値計算2013/6/11 0

Posted on 6月 10, 2013 by kimi

6月11日分の講義資料をアップロードしておきました。今回は連立一次方程式の数値解法です。数学(線形代数)の講義で吐き出し法などをやるのが定番ですが、うちの応用数学I(線形代数)では一切そういった具体的な解法については触れていません。これは行列式の計算とそれ以外の行(列)変形とを混同しないためで、案の定講義をちゃんと聴いて余因子をつかって逆行列を計算している人はほとんど合格ですが、教科書だけを読んで吐き出し法を使って逆行列を求めようとしたいる人でちゃんと逆行列を計算できた人はいません。(つまり、合格もできてない)

はっきり言って、吐き出し法やガウス・ジョルダン法などの解法は所詮答えを求めるためだけの計算法でしかなく、計算間違いをしてもいったいどこで間違えたのかさっぱりわからないと言うのがその理由です。そこで大量の退屈な計算を文句も言わずにしかも計算間違いをすることなく行ってくれる計算機の出番です。

ところが、吐き出し法やガウス・ジョルダン法は昔から知られており、どの教科書にも載っていますが、変数の数が増えるとまともな時間では計算が終了しないことが起こります。そこでこの講義ではもっともアルゴリズムが簡単でしかも利用価値の高いガウス・ザイデル法について主に時間を割くことにします。個別のレポート課題にはしませんが是非自分でもコーディングして実行してみてください。

数値計算2013/6/4 0

Posted on 6月 03, 2013 by kimi

6月4日分の講義資料をアップロードしておきました。今回は数値積分法です。嘗てはガウス積分法などの凝った技法も紹介していましたが、計算機のメモリ容量とCPUの演算速度とに不自由しなくなった今となっては、台形公式などのシンプルな方法を使いこなし、どのように精度を上げていくかを理解しておく方が有用です。特に台形公式のプログラムについては新しいプログラミング言語を習得したときなどにすぐに書けるようにアルゴリズムを体に刻み込んでおいてください。今回もまた、レポートの課題が出ます。いやー、我ながら鬼だねえ。

数値計算2013/5/28 0

Posted on 5月 27, 2013 by kimi

5月28日分の講義資料をアップロードしておきました。今回は代数方程式の数値解法について講義します。中学校のころから一次方程式や二次方程式、三角方程式や対数方程式となじみ深い代数方程式ですが、これまで扱ってきたものは所詮手で解ける、すなわち解を《知ってる》ものだけを扱ってきました。しかしながら実際にはほとんどの方程式はその解を数式で表現できません。もう少し正確には方程式の解のかたちで必要な量が定義されていると言ってもいいでしょう。今回は、そのような方程式を計算機を使って解く方法について説明します。今回もまた、レポートの課題が出ます。締切設定が他の講義のレポートとはちょっと違いますから必ず出席してください。

数値計算2013/5/14 0

Posted on 5月 20, 2013 by kimi

5月21日分の講義資料をアップロードしておきました。

前回は結構積み残しがあったので、今回はそいつらを片付けた後、LCR回路の過渡現象を例にとり関数の計算や数値微分について説明します。簡単におさらいはしますが、この講義はあくまで数値計算法の講義で電気回路の講義ではありませんから各自電気回路の教科書を掘り起こして「LCR直列回路の過渡現象」の項をよく復習しておいてください。この例は今後もよく使います。

また、初回のレポート課題も出ます。問題については既にリンクされていますので目を通しておいてください。同時にレポートの書き方についても説明しますので必ず出席してください。

数値計算2013/5/14 0

Posted on 5月 13, 2013 by kimi

5月14日分の講義資料をアップロードしておきました。今回はc言語の復習の最後として関数(外部手続)について話をしたあと、「数の表現と誤差」と「単位と次元」について話をします。

プログラミング言語の変数の概念を理解するためには、

  • 変数
  • 変数名
  • 変数の記号
  • 変数の値

を混乱なく使いこなすことが重要です。

特に物理学、電気・電子回路、制御工学、など数学を多用する科目では、物理量、物理量の名前、物理量の記号、物理量の値などがしばしば同一の文字記号(代数/変数)で表されるなど混乱を誘いがちで、尚かつ意図的にその混乱を利用していろいろな概念を見導き出したりすることまであります。こういうことを意識しながらプログラムを作成するようにしてみてください。

数値計算2013/5/7 0

Posted on 5月 02, 2013 by kimi

5/7日分の講義資料を用意しておきました。c言語の復習第三回目です。やっぱりスケジュールが遅れていますが、今回は「アルゴリズムをどう表現するか」について数値計算でよく使われる総和やベクトルの内積、行列の積などの具体例をもちいて説明します。資料にはいけるかどうかわかりませんが「関数」の部分を用意しておきました。もし、今回やれなかった場合はc言語の復習第四回目を5/14にもやることにします。



↑ Top