utokiteのrecord

その時書きたいことを書く

ファインマン物理学 Ⅰ 力学 #1

今更ファインマンを読もうと思うので勉強メモを付けていきます。

 

第 1 章 躍るアトム

- はじめに

- 物質は原子からできている

- 原子的現象

- 化学反応

 

一章はこんな感じの節からなっている。

なお、学生時代は教科書の「まえがき」を読むのが趣味だったのだが、これをやると勉強を始める前に力尽きるという問題があるので今回は飛ばして本文から読み始める。

 

- はじめに

科学におけるコンテンツ間の関係について考えてみようという導入。

-> 初めの 3 章では物理とその他の科学の間/諸科学間/科学の意義、などについて述べるとのこと。これはたるい。途中で飛ばして 4 章以降にジャンプするかもしれない。

 などと考えていたら、物理においては最初に公理を与えてそれを演繹して進めていくことは不可能とのありがたいお言葉。すなわち、人類はまだそのような公理を知り尽くしていないから。たしかに。あと、それ抜きにしてもどんどん進めちゃうとすぐ数学で詰まっちゃうでしょ、とのこと。確かに~!!

おとなしく読み進める。

 

「近似値・理論・実験」

我々の知っていることはおよそ何らかの近似値

知識はすべて実験によって検討される

物理では、理論屋と実験屋が分業体制をとっている

(※ 別に学会が完全に独立してるとかいうことではないです)

 

相対論の効果による質量の変化を引き合いに出し、それまで正しいと思われていた法則が見直される例を示す。

そんなわけで我々が正しいと思っている理論は全く全然間違っている可能性もある(例えよい近似であったとしても、理論のモデルとしてはすっかり見直さなければならない)という事はあるのだが、そのうえで、一足飛びに現代物理の話をするのもややこしいので、ここはやはり素朴な力学から始めて行こう的なことが書かれている。

で、上記の物理やその他の科学の関係に着目して、まずは我々の世界観について概観してみよう、とのこと。

 

- 物質は原子からできている

もし文明がリセットされることになって、次の世代にわずかな事実しか伝えてあげられないとしたら何を伝えるか?という面白いたとえ。

ファインマン曰く、原子仮説を伝えたい。

なめらかな水も、その実態はオングストローム (10^-10 [m]) スケールの原子/分子の集団である。この分子はよくあるポンチ絵のようにはっきり丸いわけでも 2 次元的に分布しているわけでもなく、3 次元的に動き、また引き合い、近づきすぎると斥けあっている。-> 分子間引力によって、液体の水は即座に雲散霧消することはない

しかし、よく知られているように、水を加熱することで分子は飛び散っていく、すなわち離れ離れになってしまう。

 

ここから、水蒸気をはじめとする気体について考察する。

100 個くらいのボールが飛び交っている部屋を想像する。このボールが部屋のある一面を構成する壁をかわるがわる押す(ぶつかることによって) ので、我々は外からその壁を押し返さなければ壁の位置を保てない。

この時ボール一つ一つの力を感じることはなく、平均して一つの押す力を感じるだろう。これを圧力とよぶ (ただし、実際に力の次元を持つ値は圧力×面積である。)

 

ここで、ボールが壁に当たった丁度その時に壁を部屋の内側方向に押し込むことを考える。この時、ボールはラケットで打ち返された時のように加速して跳ね返されることになる。

このことは、系全体で考えると圧力を加えることによって気体の温度が上昇する (また、逆に膨張させると温度が低下する) ことを意味する。

すっかり熱力学の話題だが、考えてみれば熱力学は確かに熱力学だ。

 

続いて、液体の水の温度を下げる/運動を衰えさせると、分子間引力が支配的となって水が固体となる点について述べられる。個体では、分子が結晶構造をなす。そのため形を保つことができる。また、雪の結晶が持つような対称性は、分子同士の配列のスケールですでに成り立っている。

ところで、氷の温度は (凝固点は常圧で 0 ℃ としても) 摂氏以下まで考えることができる。この温度とはなんだろう?->結晶構造をなしていても、各原子はそれぞれの位置で振動している。これが氷の温度の実態とのこと。

温度をさらに下げ、絶対零度にしてもこの振動はゼロではない最小値をとる。

また、ヘリウムは常圧下では絶対零度まで冷やしても固体にならない。

 

- 原子的現象

空気にさらされた水の表面では、水、酸素、窒素の分子が水と空気の間を出入りしている。ここでも考察を働かせると、水 (液体) から飛び出していく分子は周囲の分子が持つ平均的なエネルギーよりも大きなエネルギーを持っているという事になる。

すなわち、蒸発によって液体は冷えると考えられる。

一方で、空気中から水 (液体) に入った分子は液体表面で急に大きな引力を受けることになる->加速する->エネルギーが増加する。

このため、分子が水に入ってくる際には液体温度は上昇すると考えられる (分子が同数で入りすれば差し引きの温度変化はなしとなる)。

そこで、分子が出る一方の状況を作り出す、すなわち、スープを冷ますにはそれを吹け!ということである。

うーん。いかにもファインマン節という感じがする。

この文体が後の参考書に与えた影響は大きそうだ。

これに続いてもう一点、食塩を例に溶解や析出の減少についても原子仮説の観点から考察が加えられる。

 

- 化学反応

原子分子のスケールで起きる現象のうち、相手の原子の組み合わせが変わるものを化学反応、相手が変わらないものを物理的現象と (大雑把に) 区別している。

炭素の酸化->燃焼/爆発とエネルギーの放出、さらに一酸化炭素から二酸化炭素への化学反応。

 

 、、、丁寧に読んで書いてしていくといつまでたっても終わらないな。

次からは気になった部分だけ覚え書きするよう心がけよう。

 

 

 

Priori2のファームアップ&lolipop に OSアップデートをしたらAndroid Studioから認識できなくなったので解決した

大分間が開いてしまったけど、この間cocosをあきらめeclipseにさようならして

Android Studioで捗ったりしていました。

Android Studioの導入はめちゃくちゃ簡単だったので、

わざわざ記事にするほどでもないくらい。

 

で、手慰みレベルでもちょこちょこアプリを作っていると

やっぱりエミュレータではきついものがあり、安価な開発用 Android 端末として

Priori2を購入して細々と楽しんでいたんだけど、

タイトルのとおりファームアップ&OSアップデート (Android 5.0.2へ) 以降

どうもAndroid StudioからPriori2が認識できなくなってしまったんですよね。

lolipop 死すべし。

まぁアプリ熱も冷め気味だしそれより駅メモが楽しいので

別に問題ないといえばないんだけど、とりあえず解決できたのでメモ。

 

結論を言うと、USBドライバを手動認識させることでうまくいきました。

じゃあ以前はどうやって動いてたんだ?という疑問は

残るんだけど‥‥。

ともあれ、以下、今回行った手順などです。

 

 

■症状

Android SDK ManagerでExtrasのGoogle USB Driverが

Installedになっているにもかかわらず、Android Studio

実機を認識してくれない。

 

■解決策

Google USB Driverの設定ファイルに陽に利用端末の

VID・PIDを記載してドライバを更新。

 

■手順

1. デバイスマネージャーで利用端末の

     VID (Vendor ID)・PID (Product ID) を確認する。

スタート > コンピュータ(右クリック) > プロパティ > デバイスマネージャー

を開くと、USB接続したAndroid端末が "ほかのデバイス" とかなんとか

表示されているのでそれを見つける。

見つからなかったら、問題の端末を抜き差しして

消えたり出てきたりするデバイスがそれでしょう。

デバイスマネージャー上で対象デバイスを特定できたらそれを右クリック、

プロパティ > 詳細タブ > プロパティを "ハードウェアID" にセット。

"値" に表示された数値をメモ or 写真 or スクリーンショットなどなど。

 

2. Google USB Driver設定ファイルに1.で確認した値を追記。

SDKのインストールフォルダに

sdk\extras\google\usb_driver\android_winusb.inf

みたいな感じでandroid_winusb.infというファイルがあると思うので、

これを編集する。

[Google.NTx86] ディレクティブ (と呼ぶのかわからんが‥) と

[Google.NTamd64] ディレクティブがそれぞれ 32/64 bit 環境の設定

らしいんだが、とりあえず両方に書いちゃったらいいだろう。

実際、64 bit 環境では両方に書いておかないとうまく動かないらしい。

うちは32 bit なのでよくわかりません。

追記する内容はこんな感じ。

;Priori2
%SingleAdbInterface% = USB_Install, USB\VID_0E8D&PID_201D
%CompositeAdbInterface% = USB_Install, USB\VID_0E8D&PID_201D&MI_01

一応編集前のファイルはバックアップを取っておくのがよいでしょう。

;以下はコメントでしょうきっと。

他の端末をつかってて同じようなトラブルに見舞われてる方は、

VID・PIDの部分を1. 出確認した値に合わせてくださいね。

 

3. ドライバー (再?) インストール

デバイスマネージャーに戻って、問題の端末を右クリックして

"ドライバーソフトウェアの更新" を実行する。

 この時、 "コンピューターを参照してドライバーソフトウェアを検索します" 

を選択して、SDKインストールフォルダの\sdk\extras\google\usb_driver

を指定する。つまり、さっき書き換えたファイルがあるところ。

 

これがうまくいったら、Android Studioからも

端末が認識できるようになっているんじゃあないかと思います。

多分。

 

 

ちなみに、 Google USB Driver はデジタル署名がされていないようで、

Win7 では別にいいよって言ったらまぁいいかってインストールしてくれたんだけど、

Win8 では OSが結構ごねるらしいです。

この辺の記事

Windows8/8.1で署名なしドライバをインストールする方法/テストモードにする方法

が参考になるかもしれないけれど、いかんせん

手元で確認できていないので詳細は謎です。Win10 はもっと謎です。

なんというか、ご武運を。

Sugoku Iikanjini Chouga Ponkotsu

lambda式になりたいからSICP読むよ。

 

cocos?

よくわかんない。

 

いや、ほんとに、よくわかんないんですよ。

なんとまだworldにhelloできていないので、書くことないんです。

がんばります。

 

じゃあなんでSICPなのかっていうと、

全然関係ないんだけど、なんていうか、

この本の内容理解できたら人生が楽しくなりそうじゃないですか?

逆か?

 

まあ御託は置いといて1.1.5の作用的順序と正規順序ですが、

まず1.1.4の通りにfがdefineされているとして、(f 5)をそれぞれの順序で評価すると、まず、

(sum-of-squares (+ 5 1) (* 5 2))

まではどちらも一緒。

一緒というのは、どちらの順序でも"fってなに?"が解決したらその後すぐにaに5がはいるってこと?かな?って思ったけど、

そもそもここでのお話は解釈系の実際の働きを述べるものではないとのことなので、なんとなく流しておく。

ここで大事なのは、"被演算子に出会う度にそれを評価する(作用的順序)"評価の仕方だけじゃなくて、"基本的演算子だけになるまで演算子を評価しちゃってから、出てきた被演算子を全部評価する(正規順序)"やり方もあるよ、てことなのかな?

 

理解が追いついているかわからんが、実際に問題1.5で考えてみると、

・作用的順序

(test 0 (p))

(if  (= 0 0)

    0

    (p))

(if (= 0 0)

    0

    (p))

...

つまり、(p)の評価がループしてるのでifの評価にたどり着かないってことかな?

一方正規順序で考えてみると、

・正規順序

(test 0 (p))

(if  (= 0 0)

    0

    (p))

0

つまり、(p)とはなんぞや?という解釈が必要になる前にifの評価により0という出力が得られるため、

無限ループなんてなかったんや、ということになるのかな。

 

 

こんなペースで読んでたら絶対読み終わらないのぜ……!!!

 

あ、ちなみに僕が読んでるのはピアソンの日本語版初版です。

eclipseでerror logを見よう

いや、一度見えるようにしたと思うんだけど、なんか見えなくなっちゃってて。

で、これを見るには、ということなんだが、PDE (eclipse Plug-in Development Environment)

ってのが必要なので、eclipse

help > Install new softwareで開いたウインドウの中で、

Work with : Juno - http://download.eclipse.org/releases/juno

として、下にバーっとでてきたやつの中から

General Purpose toolsの左の三角をクリックして展開、

Eclipse Plug-in Development Environment を選んでNextとかやってると

スーっと入ってくる~。

eclipseの再インストール

SSDパーティション調整とかしてたらどうも

eclipseが調子悪くなったような。具体的にはエラーログが

表示できてなかったり、今までになかったエラーが多発しているような。

でももともとエラーでまくってたから何が原因かわからんような。。

 

と、いうことで、作業が軌道に乗る前に、一度インストールしなおしちゃおうかな、と思いました。

で、再インストール方法について調べたところ、

・アンインストール

  ->ディレクトリ削除

・再インストール

  ->普通に再インストール

ということで、らくちんだなー。

SDKもわんまりよくわからずとりあえず入れまくってしまってたので、

これを機会に一旦まるごと削除。

後で必要なものはインストールしなおそー。

 

[アンインストール]

本当に単純に、インストール時にzipから展開したフォルダを

shift+deleteでまるっと削除。しようとしたところ、中途半端に

いくつかのフォルダが残ってしまった。やっぱりなんか無茶だったかなぁ、

などと思いつつ、もう一度ディレクトリごとshift+delete。知らん。

 

[再インストール]

別バージョン探すとか深く考えるのも面倒なので、

残してあったzipファイルをもう一度展開。

テンカイナイト見てる?俺は時々見てる。

最初のインストール時に失敗したなーと思ってた点、

やたら長いフォルダ名をこのタイミングで"adt"に改名。

 

AVDが重い

あまりにも重い。

eclipseにしてもcocos code IDEにしても、デバッグとかのログの見方が

まだ良くわかってないってのは大いにあるんだけど、それにしても

コードやプロジェクトに問題があるのか環境設定に問題があるのか、

AVD自体がハングしてるのかがよくわからん。

それでなくてもAVDが立ち上がるのにいちいち時間がかかってストレスフルなので、

なんとか軽量化できないかな?と思い。

 

調べてみると、

1. スナップショットを使って起動を高速化

2. Intel Atom (x86) Android エミュレータを使ってCPUのエミュレートを回避する

というあたりがベタなtipsなのかな?

 

CPUについては

Intel x86 Atom System Image

Intel x86 Emulator Accelerator (HAXM)

SDKよりすでにインストール済みだったので、

その割には重いなーと思いつつスナップショットを有効にするために以下の操作。

 

eclipseを起動してwindow > AVD Manager

既存のAVDの設定を編集しようとEditってボタン押したら、

なぜか名前以外のほとんどの設定がリセットされた状態の

パラメータが表示されるんだけどなんで?

良くわかんないけど、まあ細かいことは気にしない。

 

AVD Name: MyAVD

Device: 5.1" WVGA (480 * 800: mdpi)

Target: Android 4.3 - API Level18

CPU/ABI: Android Wear Intel Atom (x86)

Keyboard: [check] Hardware keyboard present

Skin: Skin with dynamic hardware controls

Front Camera: None

Back Camera: None

Memory Options: RAM: 512, VM Heap: 16 (少ない?)

Internal Storage: 200 [MiB]

SD Card: -

Emulation Options: [check] Snapshot, [-]Use Host GPU (同時には有効にできない)

と、してみる。

 

とりあえず起動。今回はまだスナップショットがないはずなので、

いつもどおりのまったり起動。

と、思ったら、あれ、なんか、起動しませんよ‥‥?

 

つづく

 

つづき

 

起動時のメッセージにHAX的なあれがない的なあれが出ていたんだが、

どうやら Intel x86 Emulator Accelerator (HAXM) はSDKからインストール?

したあとに改めて手動でインストールしないといけないらしい。

インストールフォルダ内のintellhaxm.exeを実行、デフォルトでインストール。

なんかメモリのサイズっぽいのを指定するっぽいとこが512Mになってて、

これおっきくしたほうがいいのかもだが、AVDのメモリをあんまりおっきくすると

起動しないようなこともどっかで聞いた気がするのでそのままで。

これでよし。が、だめ。intell VTが使えない的なニュアンスでインストール失敗。

自PCのCPUがintell VTに対応してないか、無効になっているようだ。

BIOSで一度設定を確かめる。

果たして、VTは無効になっていた。これを有効にして、改めてインストール。

ちなみに、自分の環境ではBIOSのマスターパスワードみたいなのを

設定してあげないと、VTを有効にすることができなかった。

 

 で、改めて起動。

またもなんかごちゃごちゃいう。

どうも、AVDの設定をあれこれいじっては起動しなおしていたら、

一度作ったスナップショットといまから立ち上げようとしているAVDの

パラメータが全然矛盾してる、ということに怒っているらしい。

まぁそりゃそうか。

細かいのは面倒なので一旦AVD自体削除して作り直す。

 

で、やっと目的どおりの設定で運用開始。

おお。確かにちょっとましになりましたぞ。

 

あー、でもなんか、これは、素の状態のスナップショットから起動する分には

早くて結構だけど、迂闊に変なタイミングで終了してそのときの

スナップショットを取っちゃうと、次の起動時に面倒だったりもするのかも。

状況しだいで終了時にスナップショット取る設定ははずしちゃったほうが

いいのかも、しれませんね。

 

いや、もっといえばスナップショットあるとデバッグとかでAVD起動するときに

いちいち気使うこと増える?

CPUの設定だけでだいぶ早くなったから、スナップショットは

もういいかなー‥。そんな気もする。

 

参考: http://www.webtech.co.jp/blog/developer-news/5966/