Haskell入門 を久しぶりに読み直してみた。P168にMaybeモナドについて少し復習してみた。
subMenu <- lookup category menu
price <- lookup name subMenu
return (category,name,price)
これを、手続き型言語で、実現しようとすると条件分岐に頼らざるを得ないけど、その必要もない。
このへんが、関数型言語のモナドの強みなのかもしれない。
Haskell入門 を久しぶりに読み直してみた。P168にMaybeモナドについて少し復習してみた。
補題9.13(2)でまた、つまづいてしまった。仕方なく、だめもとでChatGPTに頼ってみたら、きちんと回答してくれた。AIの力も凄いものだと驚きました。ここ何か月間の間にパワーアップした?
質問は 「ルベーグファトウの定理を使い、∫A max k≦n fk μ ≦ ν(A) から ∫ sup n∈N fn μ ≦ ν(A)をいえますか?」としました。 回答に少し補足を入れてまとめてみた。
∵) gm=max k≦n fk (これは増加列 ①)として 定理を適用すると
∫A lim inf n→∞ gn μ ≦ lim inf n→∞ ∫A gn μ
左辺は ∫A sup n∈N fn μ ② ↓ここで①を使う
また sup n∈N inf k≧n gn = lim n→∞ inf gn=lim n→∞ gn =sup n∈N fn これが②の理由
∫A gn μ ≦ ν(A) で n→∞ ならば lim inf n→∞ ∫A gn μ≦ ν(A)
ゆえに 結論 ∫A sup n∈N fn μ ≦ ν(A)
定理に必要な優関数がないので、質問したら、優関数はf1(x)という回答。専任の家庭教師がついているような感覚になる。
ルベーグ積分 理論と計算手法 P183 例8.9(1)で、
log(1-z)を微分し -1/(1-z) = Σz^n なので
積分して log(1-z)=-∫Σz^n dz =-Σ∫z^n dz = - Σ z^(n+1)/(n+z)
= - Σ z^n/n (Σが n=0からとなっていたのをn=1からとすることで変形)
これを使うと
Im(log(1-e^ix))=-ΣIm(e^ixk)/k = -Σ sin kx /k
これは arg(1-e^ix)=-(π-x)/2 (0<x<2π) でもある
∵)log(re^ix)=logr+log(e^ix)=logr+ix
∵) 1-e^ix=(1-cosx)-isinx r=√((1-cosx)^2+sin^2x =2sin(x/2)
-sinx / 2sin(x/2)=sinΘ なら Θ=-(π-x)/2になる。
∵) 2sin(x/2)sin((π-x)/2) = sinx このへんは地道に三角関数の計算を確認すると
確かにそうなる。それにしても計算が大変だった。
フーリエ級数使うともう少し楽に計算する方法もありそうなので、そちらも試してみたい。
追記(2/22):その後、ディリクレージョルダンの定理(P182)を使うと、計算できることが確認できた。
f(x)=-x/(2π)+1/2*sgn(x) として bk=1/kとできるので、これを定理に適用するといいようだ。最初うまくいかなかったのは、ちょっとした計算ミスのためだった。だいぶ遠回りしてしまった。
ついでに、(2)も解いていみた。
x∈(-2π,2π)を x'=x/2∈(-π,π)とすると 2Σsin2kx'/2k=Σsin2kx'/k=-x'+π/2*sgnx'
(1)より 2(-x/2+π/2*sgnx)=2Σsinkx/k=2( Σsink2x/2k + Σsin(2k-1)x/(2k-1) )
=-x+π/2*sgnx + 2*(求めたい式)となるが、これを整理すると
求めたい式= Σsin(2k-1)x/(2k-1)=π/4*sgnxとなる。
peanutでは、PCでCW交信ができるようになっているが、そのための発振器を作ってみた。最初、2SC1815と2SA1015を組み合わせた簡易的なものを試したが、周波数がうまく変えられなかったので、ツインT型を試したらうまくいった。入力はUSBへの変換アダプタを使うことにしている。
無料の大学講座JMoocに興味を持ち、少し勉強してみた。修了証もらうまで行く人が1割ということらしい(無料ということとも影響している?)。単元テストは計算力を必要とされる問題が多く時間がかかった。
抵抗2つ、コンデンサ2つを並列や直列組み合わせた回路で、抵抗値が流れる電流に影響しなくなる条件を求めよという問題や、交流回路の複素計算など、ちょっとしたミスがあるとなかなか解けなかったりする。久しぶりに、繁分数の式を変数に置き換えたり、〇.〇×10^△の形にして、少しでも計算が楽にならないか考えたり、LTSPiceなどPCの便利な計算に慣れてしまった昨今、逆に脳にはいい刺激になるかもしれないと思った。後半の三相交流の話になってくると、電力なども含めて考えると複雑になってきた。
電気回路に続いて、電子回路も受講、電気回路が物理に近い内容で計算中心だったが、電子回路のほうほ工学的内容だった。後半は集積回路に組み込むために容量の大きなコンデンサを使わない回路の工夫について説明があった。MosFETなどHFリニアアンプの製作にもいろいろと役立つ情報があった。とりあえず、2つの講座ともなんとか修了できた。
以前から、歩くと靴の中に小石があるような痛みがあり、でも確かめると何もないという症状ががあり気になっていたが、よく調べると中足骨骨頭痛という症状らしい。足のアーチが弱くなるのが原因らしい。歩き方も踵に重心が来るように歩くといいらしい(足を前に出そうとするのでなく、上にあげてそのまま真下に落とすという感覚)。この症状が出ているときは、ウオーキングもほどほどにしたほうがいいようだ。
以前から気になっていたけれど、デスクトップPCのバスパワーUSBハブが電力不足のためか、マウス以外つなげない状態。試しに、ケーブルの途中に三又状態にして、余ったUSB充電アダプタとUSBプラグを使って5Vを追加できるようにしてみたらうまくいった(若干コネクタ部分の接触が気になる感じはあったが、PCからの経路すべてに接点復活材をスプレーしたらだいぶ改善された)。
本来であれば、セルフパワーのUSBハブを購入すればいいのだろうけど、数千円はするので、余り物でなんとかできたので、少し節約はできたかもしれません。(というか、これ以上、5V電源アダプタは増やしたくなかったというのもありますが)
ルベーグ積分理論と計算手法P159の計算をChatGPTに聞いてみたが、書籍の答えと一致しない。
∫(0,+∞) (y/(y^x+1) - y/(y+1)^2) λ(dy) が確かlog2と答えた。
正しくは、たぶん
[ log(y^2+1) /2 - ( y/(y+1) - ∫1/(y+1)λ(dy) ) ] (0,∞) かと思う。
↑部分積分
上記で計算すると確かに1になるので。
ChatGPTも、人間と同じようにまだ間違うこともあるようだ。
ChatGPTはLLMなので、どちらかというと帰納的推論?なのかもしれない。対して、wolframなどは、演繹的推論らしいけれど。。
それにしても、AIで、プログラミングもそうですが、いろんな独学もだいぶやりやすくなったと思う。
ブレッドボードでの実験はなんとかうまくいきそうなので、実装してみた。これからケースに収める予定。静電容量計測のケーブルもコネクタで取り外しできるようにしてみた。
PCの電源Onは、USB、内部タイマー、キーボード等々いろいろあるけれど、スリープ状態にするため、夜間勝手にアップデートなどでOnなるのも気になるので、完全にraspiで操作できるようにしてみた。
PCの電源は、導通でOnなので、例によってトランジスタ2sc1815を使った。raspiのGPIOは出力が3.3Vで、前回ブルーレイな場合と同じ回路(raspiのGPIOからトランジスタ経由でPCスイッチへ)にしてみたらうまくいった。最初、マザボピンの分岐コネクタに手持ちのピンでつないだが、接触不良起こしやすいようだったので、はんだ付けにする。PCの余分な穴にDC電源用のソケットをグルーガンで固定して、raspiとの接続ケーブルを取り外しできるようにした。(raspi側にも同様にソケットをつける。)
ルベーグ積分理論と計算手法P152 あたりで、ちょっとした極限の計算が分からない。最近は、どうにも解決できそうにないときChatGPTに聞くことにしている。
1<α<3 lim x→0 (sinyx-yx/(1+x^2))/αx^α が、さらっと0になることが書いてあるが、理由がわからなかった。
こういうときは、いろいろ展開を使うといいらしい。
sin yx = sin0 +yx*cos0 -(yx)^2*sin0/2! -(yx)^3*cos0/3!.....
=yx-(yx)^3/6 ①
1/(1+x^2)=1+(-x^2)+(-x^2)^2+(-x^2)^3+.....
なので yx/(1+x^2)=yx(1-x^2+x^4...)=yx-yx^3+yx^5..... ②
与式=(①-②)/αx^α=(y-y^3/6)x^3... /αx^α だが
α<3より 3-α>0 で x→0なら 確かに x^(3-α) → 0がいえるようだ。(最初、ChatGPTも途中の計算間違っていたので、再度、確認したら正しい説明をしてくれた。やはり、ChatGPTにとっても少し難しくなるとミスもしやすくなるんだろうか?)
学生時代にこういった勉強も多少はやったはずだけど、ほとんど記憶に残っていない、やはり使わないと忘れてしまうようです。
raspiにSSRを組み合わせてタイムスイッチつくってみた。
秋月電子のSSRキット(ゼロクロス、25A)を使った。100Vなので絶縁には細心の注意が必要。たまたま、先日、分解廃棄したDVDレコーダの中からヒートシンクを取り出していたので、早速活用。
フォトカプラを使っているようで、入力で15mmA消費とあったので、raspiのGPIOでも許容範囲であり、そのままつなげている。
ChatGPTに助けてもらい、以下のようなスクリプトを使ってうまく動作させることができた。(rapiでは、OSの中にすでに以下のようなスクリプトが使える環境がある)
長く使っていた温度計が突然壊れた。最初表示されないので、電池接触かと思い、確認したら液漏れしかけた電池があったので、交換。それでもだめなので、接点復活材を使う。今度は表示されたが、操作ボタンが反応しない。操作ボタンの接触不良を疑い、裏ブタを外して、接点復活材を使う。これで、ようやく使えるようになった。電池で使うようなものは、ほとんど酸化被膜が原因の接触不良が多いので、部品交換せずに修理できるようだ。
便利なものがあれば、それなりに故障もあるので、メンテナンスで手間はかかる。買い替えよりは、修理のほうが、環境にもやさしいかもしれない。
これまで、回路はQucsを使ってきたが、少し部品数が多くなると計算に時間がかかるので、LTspiceにしてみたら、使いやすくしかも速度もだいぶ早くなった。
1Aに電流を制限する回路を、書籍を参考にシミュレートしてみた。最初、うまくいかなかったが、電圧を1 0Vと数値と数値の間に空白を入れてご入力したのが原因だった。エラーをもとに、line番号から設定ファイルをよくチェックするといいようだ。
負荷の抵抗が正常だとI=E/Rで計算した電流が流れるが、数Ω程度にすると、オームの法則で計算した値より抑えられほぼ1A程度に制限されることが確かめられた。QucsでDC回路のシミュレーションできないか試してみた。
・電流計は、すでに導線がつながっているところに、電流計をのせるようにしておかないとだめだった。実物では、いったん線をはずして、電流計につなぐので、ここを勘違いして、最初はなぜだろうと不思議に思ったが、何のことはない、はずさないとうまくいった。
・シミュレーションとして「DCシミュレーション」を回路図上にもってくる。
・メニューのシミュレーション>DCバイアス計算 とすることで、回路図上に各点の電位や電流計の電流が表示された。
実際に回路を配線しなくても、事前にいろいろ試せるので便利である。