2025年2月20日木曜日

Σsinkx/k の求め方で苦戦

 ルベーグ積分 理論と計算手法 P183 例8.9(1)で、


Σsinkx/k=(π-x)/2  (2π>x>0)になる理由がわからず、苦戦。

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となる。

PC用CW発振器(ツインT型)作成

 peanutでは、PCでCW交信ができるようになっているが、そのための発振器を作ってみた。最初、2SC1815と2SA1015を組み合わせた簡易的なものを試したが、周波数がうまく変えられなかったので、ツインT型を試したらうまくいった。入力はUSBへの変換アダプタを使うことにしている。

以前作成したPICによるキーヤーのコレクタ部分に上記回路のアースを接続することで、うまく動作させることができた。

追記:送信練習用に、以前作ったモールスデコーダにもつなげるようにしてみた。ただ、音量が不足していたので、こちらのサイトを参考させていただき、一石のアンプを追加した。マイクを通さず、デコーダにつなぐと、雑音の影響がなくなり、ほぼ100%の認識率になるようです。送信練習にはとても役立ちます。


2025年2月10日月曜日

圏論の「積の定義」について考える

 Youtubeの圏論勉強会1回目で対(積)の定義が最初に出てくる。正しいのかどうか、いまいち自信はないが、自分なりに少し考えてみた。

 型A,Bの対とは、型P , 関数first:P→A , second:P→B からなり、任意の型Xと任意の関数f:X→A , g:X→B に対して , 以下の図式が可換となるような u:X→Pが 唯一つ存在するものである。 というのが定義らしい。

             X
                       f↙        ↓ u       ↘ g
        A  ←   P →   B
                           first         second

public class Pair<T, U>
{
    public T First { get; set; }
    public U Second { get; set; }
 
    public Pair(T first, U second) {
        this.First = first;
        this.Second = second;
    }
.............   こんな感じで、プログラミング言語でP(x,y)などpairはよく使うが。

 単に、1つめか、2つめか指定すればそれを取り出せるような仕組みのことだけれど、それを圏論的に定義すると上記のようなことになるらしい。

PはA,B型のデータを得る特定の関数を備えていて 図式で表現すると(中身を詳しく説明せず、矢印と対象だけで表現するのが圏論)
        A  ←   P →   B
                           first         second
しかし、これだけでは、A,B型への関数をもつデータ型は、Pair以外にもいろいろある(何らかの計算や処理が入っている場合もこの定義を満たす)ので、十分とはいえない。関数もいろいろある。

そこで、上記のような可換図式を使う。
 合成関数で考えると frist 〇 u = f       second 〇 u = g ① だが、定義がこれだけでは不足している。uの唯一性というのがポイントらしい。

 例えば、uが余分なデータを付け足してfirst,secondがそれを捨てる場合などでも、可換にできるが、それでは、first,secondの働きを正しく表していない。(あくまで、first,secondの働きはただ取り出すだけ、というふうに定義したいわけなので)

  余分なデータをつけたす(first,secondがそれを捨てる)→uは唯一に定まらない
対偶は  uが唯一 → 余分なデータはつけたさない(first,secondはただ取り出すのみ)
 ということで、uの唯一性があると、うまくPairを定義できたことになるということらしい。 こういうのを、普遍性による定義というらしい。

 ここのところが、非常にわかりにくい。uが一意に定まると、自動的に射影しかありえなくなるのはなぜか?  射影だと、どんなX,f,gであっても、唯一u(x)=(f(x),g(x))というものさえあればいいわけだから、これでいいような気はする。
 どんなX,f,gであっても、唯一決まるパターンとは、first,secondが射影の場合とu(x)=(f(x),g(x))の組み合わせしかないということ?だろうか。射影のところになんらかの別の射の要素が入り込むと、u(x)=(f(x),g(x))とは違うものが必要になってくる。定義の文章をよく読むと、u(x)は任意のX,f,gに対してきまるとしており、first,secondからも影響を受けることは想定してないということなのかもしれない。