#author("2021-06-07T14:23:19+09:00","","")
#author("2021-07-05T10:05:41+09:00","","")
* BMP280による演習 [#f80e660a]

arduinoUnoが何台かあるので演習を行います。BME280のほうが湿度もはかれていいのですが、とりあえず練習ということで湿度が測れないほうで行います。

https://www.denshi.club/cookbook/arduino/spresense/spresensel-24-wire.html

* gnuplotのchocolateryによるインストール [#o40327d6]

News2019にしたがってchocolateryというパッケージ管理ソフトを入れた。それを使ってgnuplotをコマンド形式で使えるようにした。授業中にインストールしそこなったgnuplotはソースコードだった。コンパイルしないといけないがいろいろツールがいる。面倒なのでchokolateryを使うことにした。

* 2種の誘電体を挟んだ電極の数値計算 [#d45c223b]

理論的には電束で見積もれば簡単な問題だが、昔作ったrelax2.fをその問題向けに書き換えてみた。

#ref(relax3.f)

 gfortran -o lelax3 relax3.f
 ./relax3 > relax3.dat
 gnuplot //ここで splot 'relax3.dat' with pm3d

上側と下側が比誘電率で2と4のとき電場は上側が4で下側が2。貯まる電荷は全部比誘電率が1のときの8/3倍。

* 磁場のpythonを使った表示法 [#m13d53cf]

最初にあるのが超新星のデータ表示。その後、磁場の描き方。

 conda activate base 
 conda search urllib
 conda install urllib3

https://casaguides.nrao.edu/index.php/PlotBasics

python 3.7でやるとエラーになる。コードは2.7用みたい。python3では、urllib.requestにしたりcontinueの前に改行。赤方偏移と距離指数のデータ。

 import urllib.request
 f = urllib.request.urlopen('http://supernova.lbl.gov/Union/figures/SCPUnion2_mu_vs_z.txt')
 for line in f:
    if line[0] == '#':
        continue

それにしても、点状の磁荷の作る磁場の式は教科書にない式だけど、もっともらしくなる。なぜか。気持ちが悪いので普通の式に直した。

#ref(Magnetic_Needle_Example2.py)

* 電磁波の利用が歴史を変える [#a4768b9d]

https://en.wikipedia.org/wiki/CXAM_radar

* poisson方程式はどちらかというとここかな [#i6d4966e]

https://qiita.com/sci_Haru/items/6b80c7eb8d4754fb5c2d

* caltechの学生さんの電場計算プログラム [#z1a7bd8d]

ポアッソン方程式で検索すると出てくるプログラムを動かしてみた。py27ではcython関連のモジュールが入ってこないので、pyhton 3.7でやってみるとエラーになる。どうもnumpyの型があってないようなのでintをdoubleにしたら動作した。alphaやnxでだいぶ違ってくる。

 python poisson.py --alpha=1.9 --nt=200 --nx=100
 python poisson.py --alpha=1.9 --nt=200

#ref(poisson.py)

#ref(tridiagonal.pyx)

* jupyter-notebookの使い方 [#v225e1da]

仮想環境ができてしまえばパッケージの管理はanaconda-navigatorでできます。つまりコマンドプロンプトで

 conda create --name tf tensorflow

のようにして仮想環境を作ってから、作業開始となります。後はnavigatorで選択して、jupyter-notebookをinstall, launchします。matplotlibが入っていないと思うので、navigatorでまずsearchして、チェックを入れてinstallします。

* pythonのturtle graphicsで電場、電位の勉強 [#v12f5e6a]

授業ではほぼ「はじめてのニューラルネットワーク」の演習をしていたが、電磁気学の授業であるので以下のコードを作ってみた。メカニカルユニバースの課題3のビデオの球体コンデンサーの電場計算は以下のプログラムの応用でも描ける。導体上の電場がゼロになるのは難しい問題。

#ref(mirror.py)
* windowsのanaconda3でpygame [#v6814065]



コマンド端末(Anacondaプロンプト)とIDLEのPython プロンプト、そこから開くエディタについて区別がついいていない人が多いです。Linuxの端末に当たるコマンド端末にも慣れておきましょう。プロンプトというのはコマンドを入れるところです。通常はコマンドプロンプトでライブラリのインストールを行います。Python プロンプトは主にpythonのプリント命令の結果を見るために使います。

pygameを使うとき外部機器のドライバーがpython 2.7向けの場合、以下のようにしてやってみましょう。

 
 conda create -n py27 python=2.7 anaconda

失敗して終わったが再実行すると成功した。python2.7で作業するときは以下のようだが、python2.7環境の作成は異様に時間がかかる。大量にライブラリを入れている模様。

 mkdir py27
 cd py27
 source activate py27
 conda install git
 git clone https://github.com/dji-sdk/Tello-Python.git

などとすると、python 2.7で動作するライブラリが入ってくる。とりあえずジョイスティックの動作試験をする場合、pygameがcondaのレポジトリにないようなので、pipで入れることになるが、エラーになる。ググると以下のようにすればよいとなる。文字化けを我慢して待つと、pygameが入るようです。
 set PYTHONIOENCODING=utf-8
 pip install pygame
condaとのマッチングが良くないのでwindowsではビデオの受信は難しそう。H264というのがネックかも。なのでjoystckだけに絞るのがよさそう。


* 開講までの課題4 [#f73d1320]

京都で前期対面授業は京都教育だけみたいです。リモートの最後になります。アナウンスでは電気双極子の部分を言っていたので教科書を見てみると結構数式があり、texの利用を考えましたがいまいち図の作成が面倒です。大昔に使っていたTgifとかtex用のBeamerというスタイルを使ってpdfの作成にチャレンジしています。tgifはメンテされていないので絵は書いたものの保存ができないという最悪の事態に。ファイル名を指定して新たに別に立ち上げてコピペする羽目になりました。UbuntuのKileでtexを使ったところ更に悲惨な目にあってしまった。Kileのせいか、Beamerが関係しているのか。結局viで編集して、platex, dvipdfmxをたたいてokularで確認してます。原始的。

#ref(kadai4beamer.pdf)
* 開講までの課題3 [#b0af5552]

 今回は電位のビデオです。一番不思議なのは負の仕事という説明ですね。実際には試験電荷が加速されて運動エネルギーを得るわけです。または仕事が外に取り出されたりします。なぜ、外部の仕事の式に負の符号をつけるかは、内積が開き角が90度を超えると負になることを考えると納得できるはずです。

http://natsci.kyokyo-u.ac.jp/~takasima/BMU/PotentialAndCapacitace.avi
* 開講までの課題2 [#oc4a3a46]

電磁気学で重要なマックスウェル方程式のうち二つの式がガウスの法則。逆二乗の法則、電気力線、足場などの英語が聞き取れれば大体わかるはず。

http://natsci.kyokyo-u.ac.jp/~takasima/BMU/TheElectricField.avi

* 開講までの課題1 [#c05daf77]

カルテックのグッドスタイン教授の「力学の世界を越えて」のビデオの「静電気」、英語で大変ですが。キャプションのファイルは単なるテキスト(ElectroStatic.txt)ですが[[MechanicalUniverse]]にあります。かつらをのっけるところとか、契約がどうのこうのとかのギャグが聞き取りにくいはず。

http://natsci.kyokyo-u.ac.jp/~takasima/BMU/StaticElectricity.avi

* F11室の電子黒板 [#bfd5c219]

シャープのPN-L702BのHDMIの入力はCH-501TX/RXのレシーバー側のHDMIがつながっている。もともと3大学の通信の画像出力用だったがイーサネットのケーブルが抜いてある状態。たぶん3大学システムにトランシーバーがついてる。なので、音声入りで使うとするとHDMIにパソコンをつないでリモコンの音量つまみで切り替える。謎が解けました。

* 電気容量で地球を使ってることについて [#qac88059]

大気、電場で検索すると以下のページがあった。これについて考察する。

https://ci.nii.ac.jp/els/contentscinii_20180604095507.pdf?id=ART0000564810



* キルヒホッフの法則 [#zfa3864e]

「物理の鍵としっぽ」というページがあり連立方程式の解き方が載っている。キルヒホッフの法則について具体的に解くときには便利。非線形素子が入ったりするとLTSpiceを使いましょう。

http://hooktail.org/computer/index.php?%CF%A2%CE%A9%B0%EC%BC%A1%CA%FD%C4%F8%BC%B0%A4%F2%B2%F2%A4%AF
* Cygwinのjavaの使い方 [#n6394a89]

 export JAVA_HOME=/cygdrive/c/Program\ Files/Java/jdk1.8.0_121
 export PATH=$JAVA_HOME/bin:$PATH
* 高圧回路の実験 [#xd40b906]

使い捨てカメラの高圧発生回路はブロッキング回路というものらしい。ネットにある例ではトランジスタの抵抗が大きめで発振しなかった。試しに2Kにしたところ、これでトランジスタが壊れないか心配だが、とりあえずアップする。元は研究室の学生が書いたものを動くようにコイルをカップルさせた。22kに戻しても動いた。2sc4081(?)にしたからか?

#ref(blockingOsc.asc)

* Javaを使った説明付きの「よくわかる電磁気学」という本がある [#a75f1ad5]

Javaはセキュリティの問題があるらしくIPCでは使えるようになっていません。どうやれば使えるかは力学基礎のページをみてください。PCではコントロールパネル->ユーザー->環境変数の設定でjdkのbinにパスを通します。ただし電源を消すと再設定する必要があります。Cygwinで設定ファイルを作っておくのがよさそうですね。unix, macでは環境変数にパスを通したりCLASSPATHにj3dなどextention的なものがあればそこを書いておきます。j3dはopenGLが使えるようになってないので動きませんけど。

http://irobutsu.a.la9.jp/mybook/ykwkrEM/

 nkf -g denba.java //漢字コードを確認
 nkf -s denba.java > denbaS.java //shift-JISに変換
 emacs -nw denbaS.java  // クラス名を一致させる 初めの一行のみ変更 Ctl-XS Ctl-XC
 javac denbaS.java
 appletviewer denbaS.html  //ウェブのhtmlのソースをコピーして作成 denbaS.classに変更
* フリップフロップを作ってみる [#b953db99]


これは30%に縮小した画像。添付のところに元の画像あり。

#ref(HC_flipFlop-2.jpg)

*電磁気学では光速度が重要 [#t58ae39d]

http://fnorio.com/0131Foucault_1850_1862/Foucault_1850_1862.html

* アナログ回路はSPICEで [#u200b741]

LTSPICEが便利

発振回路を試してみよう。

http://netlog.jpn.org/r271-635/2012/12/cr-oscillator-ltspice.html

高圧回路も試してみよう。

http://www.makisima.jp/engineering-lab/wiki.cgi?CockcroftWaltonMultiplier

* 電子回路の設計はHDLで行う [#fb5a00ba]

Dフリップフロップでレジスターを作って、計数を行うのが基本。基本クロックを計数して違うクロックを作成する例をシミュレートしてHDLについて勉強してみよう。

#ref(clktest.zip)

* 電磁気学をツールで勉強 [#t45fcab2]

windows利用者の場合、rootはroot.cern.chのバイナリでよい。VC++は自動で入っているので気にしない。通常のWindowsのコマンドのrootプロンプトでTBrowser bとタイプしてブラウザーを起動して、マクロを実行する。
gnuplotは慣れているのはCygwinで利用するのがよさそう。データファイルを作る必要があるので、developのc++, fortranを入れておくのがよい。X11をdefautで入れる。そうしてxlauchを一度やっておいて、config(xtermのみONがおすすめ)をDocumentに保存しておけば、次はそれをダブルクリックする。

勉強のツールはいまいちパソコンで十分。vmwareだと64bitが必須だったりする。Ubuntuも結構パソコンを選んでしまう。

#ref(myroot.zip)

* 磁石 [#iec0ceb5]

強磁性体としては鉄があるが、温度を高くすると磁化しなくなる。

太陽や地球にも磁場がある。黒点は磁場と関係がある。以下のページからjpegファイルをダウンロードして黒点の変化のアニメーションを作成する。

http://swc.nict.go.jp/sunspot/

http://sohowww.nascom.nasa.gov/sunspots/

図の下のlist of all available imagesをクリックすると以下のページに飛ぶ。

http://sohowww.nascom.nasa.gov/data/synoptic/sunspots_earth/

#ref(sunAnime100.gif)

* 過渡現象の微分方程式解法 [#d8df7cdb]

過渡現象は抵抗、コンデンサー、コイルが登場する。直列に接続すると、線形方程式となる。コイルは起電力とするので電圧降下と反対の場所に配置する。

#math(-L\frac{dI}{dt}=IR+\frac{Q}{C})

#ref(rlc_runge.f)

このプログラムで&math(x1=Q);で&math(x2=\frac{dQ}{dt});である。またdeff_eq1は&math(x1);の微分が&math(x2);であることを示す関数となることを記述している。またdeff_eq2は&math(x2);の微分が&math(-(RC\times x2 + x1)/(LC));となることを記述している。

ちょっとこれでは複雑なので、ルンゲクッタ法は時間発展を記述し、より簡単なオイラー法を発展させたものであることを理解する。まずはコンデンサーの放電を記述する式から見てみる。

#ref(rc_runge.f)

ただしこのプログラムはそのままではgnuplotで描画出来ない。rlc_runge.fと同じように変更する。

* 誘電体を補色で表現 [#z2a25df5]

誘電体の正電荷部分を赤、負電荷部分をシアンで表現すると重なったところが白になって、中性を表現するのはどうか。同じ大きさの長方形を描き、赤をマウスの位置に合わせて移動できるようにする。楽にプログラムできるのはjavaも良さそうだが、いまやコード配布やjavascriptしかないかも。

* 誘電体の影響 [#a4c03216]

#ref(relax2.f)

電束が真電荷なしでは変化しない。よって境界で誘電率と電場の積は変化しないことを境界条件とする。これは二つの誘電体のコンデンサーにも応用できる。

 set contour
 splot 'relax2.dat' with pm3d

* 鏡像法による金属面に誘起する反対電荷分布 [#oaba3c6f]

 set pm3d
 set samples 30
 set isosamples 30
 splot [-2:2] [-2:2] 1/(1+x**2+y**2)**1.5 with pm3d

さらに一様電場の中に金属球を置いた場合の電位分布の表示。金属球は半径1

 pr(x,y)=sqrt(x*x+y*y)
 splot [-2:2][-2:2] pr(x,y) >1. ? -5.*x+5.*x/pr(x,y)**3 : 0. with pm3d

また、一様に帯電した原子核の周りの電位分布。やはり半径1を原子核の大きさとする。このモデルでは電子は半径4と1の間に分布しています。最大の電場強度は何処になるでしょう。また原子核を相対的に小さくしていくと電位や電場強度はどうなるか?

 splot [-4:4][-4:4] pr(x,y) >1. ? -1./8.+1/(3*pr(x,y))+pr(x,y)**2/384. : 3./8.-63.*pr(x,y)**2/384.  with pm3d

* 正と負の帯電した導体球のまわりの電位 [#k5c0dc3b]

#ref(potential.f)

* poisson方程式をover lelaxation法で解く場合 [#e705bf82]

高橋・早野著の計算物理にあったものの出力をgnuplot用に変更した。

#ref(relax1.f)

g77でコンパイルしてrelax1.exeを作成
 gnuplot
 set pm3d
 splot 'relax1.dat' with pm3d

* 電子回路への応用 [#qf220d83]

電磁気学を勉強したら、実際のデジタル回路設計をやってみよう。デジタル回路の要素はAND,OR,NOTから組み合わせ回路ができる。Dフリップフロップと呼ばれる要素から時間順序回路ができる。通常はクロックにD-Flip-Flopが同期するのでエッジの手前のD入力が出力されることに注意する。信号もクロックに同期していて遅延がある時は注意が必要。

これから複雑な加算器、計数器ができるが、これを電子回路で実現するには回路接続を計算機から制御できるFPGAやCPLDを使い、作成されたビット列をFPGAやCPLDに送る。

そのビット列を作るには、HDL(Hardware Description Language)で電子回路を記述する。HDLを使い、電子回路を記述し、各電極の電圧変化をシミュレーションしてみよう。ツールとしてはiverilog(icarus)を使う。

IPCの環境でインストールを行った。容量が心配な人は自分のノートPCのCygwinに入れたらよいでしょう。

 tar zxvf ../Downloads/verilog-0.9.5.tar.gz
 cd verilog-0.9.5
 ./configure --prefix=/cygdrive/z/cygwin/iverilog
 make
 make install

Macにも入れてみた

 tar zxvf ../Downloads/verilog-20120501.tar.gz
 cd verilog-20120501/
 ./configure
 make
 sudo make install
 cd ../
 tar zxvf ../Downloads/gtkwave-3.3.36.tar.gz
 cd gtkwave-3.3.36/
 /usr/bin/ruby -e "$(/usr/bin/curl -fsSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)"
 brew install xz
 ...
 brew install gtk+
 make
 sudo make install
 
実用入門 デジタル回路とverilog-HDLの例ではTSTのプログラムのincludeをコメントアウトする。またMacとWindowsで改行が違うせいで、最終行でエラーが出る時がある。最後の文字を消して書き直すなどが必要?

#ref(MORGAN1-TST.V)
#ref(MORGAN1.V)

 iverilog -o morgan1 MORGAN1.V MORGAN1-TST.V
 vvp morgan1
 gtkwave morgan1.vcd

とかでシミュレーションまで行くはずです。MacでもLionにしたら動きました。でも下記の例ではvcdファイルがなぜかvvpでできません。不思議。

windows用のバイナリインストールでは問題ないです。

http://hw001.spaaqs.ne.jp/k-okada/design/verilog/verilog_free.html

#ref(test_ins.v)

#ref(test_tb2.v)

 export PATH=/cygdrive/z/cygwin/iverilog/bin:${PATH}
 export LD_LIBRARY_PATH=/cygdrive/z/cygwin/iverilog/lib
 iverilog -o test test_ins.v test_tb2.v
 vvp test
 gtkwave test.vcd

信号をinsert やappendで入れて、マイナスボタンを押して、時間スケールを変更します。GTKWaveを授業で使えるように、Cygwinでコンパイルしてます。どうもできそうです。configureのところでxzが入らないときは--disable-xzを入れましょう。大学のcygwinではtclに問題があり動かない。

* Gaussの法則を問題作成で実習 [#bb9f77cd]

点対称、線対称、面対称をつかってガウス面を定義する方法を作図することによって示せ。作図はAdobe illustratorを利用する。はさみツールを利用して隠れ線をカットすること。

* 電気力線の描画 [#v4c114f4]

高橋、早野著の計算物理のコード例のプロットコマンドをコメントにした。

#ref(denka.f)
 mkdir -p cygwin/denka
 cd cygwin/denka
 // cygwin/denkaのフォルダーにdenka.fをWebブラウザーでコピー
 ls  // denka.fがあるか確認
 gfortran -o denka denka.f
 ./denka.exe > denka.dat
 gnuplot
 plot 'denka.dat'

** 誘電率が高いと電場が弱くなる [#a1488fc5]

電圧が高いところに誘電率の高い物体を配置

#ref(poissonDi.cc)

gnuplotでプロットを作成する簡単なスクリプト

#ref(poissonDi.gnu)

以上のファイルを自分のcygwin\poissonに入れる。

 mkdir -p cygwin/poisson
 cd cygwin/poisson
 emacs -nw poissonDi.cc //ここでコピペ Ctl-s,Ctl-xで書いて出る。
 g++ -o poissonDi poissonDi.cc
 ./poissonDi > poisson.dat
 gnuplot
 load 'poisson.gnu'


** mathcadが欲しくなるような図 [#v4102615]

http://homepage2.nifty.com/ysc/rikisen.pdf

** 立体表示の例 [#ve8a41af]

gnuplotで媒介変数を使った3次元での立体の表示をしてみた。x-y平面の円をy軸の周りに回転する行列をかけて、10枚のファイルを作る。これをImageMagickを使って、アニメのファイルに変換する。

#ref(circle-anime.gnu)

#ref(circle-anime.gif)

** 直線電流の周りに磁場 [#v3855b6d]

上の例では、線分となっているが、トーラスを使ってもよい。レンジを変えていけば、円弧がのびていくアニメーションもできる。密度が減少する様子は半径の2乗のところに描いていくといいだろう。

メカニカルユニバースでみている通り。電場は少し難しいができないことはないはず。

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS