雑感等

音楽,数学,語学,その他に関するメモを記す.

ビジュアル英文解釈で使われる囲み枠をLaTeXで再現

実行結果

f:id:kazmus:20190312234858p:plain

ソース

マクロの引用元
tex.stackexchange.com

\RequirePackage[l2tabu, orthodox]{nag}
\documentclass[12pt, a5j, uplatex]{jsarticle}

\usepackage{fancybox} %ovalbox
%以下,片方開いた囲み(one-side-opened fbox)の定義
%https://tex.stackexchange.com/questions/106285/boxed-equation-but-framed-only-some-sides
\makeatletter
\newcommand{\llboxed}[1]{{%
  \let\@frameb@x\l@frameb@x\fbox{#1}%
}}
\newcommand{\rrboxed}[1]{{%
  \let\@frameb@x\r@frameb@x\fbox{#1}%
}}

\def\l@frameb@x#1{%
  \@tempdima\fboxrule
  \advance\@tempdima\fboxsep
  \advance\@tempdima\dp\@tempboxa
  \hbox{%
    \lower\@tempdima\hbox{%
      \vbox{%
        \hrule\@height\fboxrule
        \hbox{%
          \vrule\@width\fboxrule
          #1%
          \vbox{%
            \vskip\fboxsep
            \box\@tempboxa
            \vskip\fboxsep}%
          #1%
          %\vrule\@width\fboxrule% Right \vrule removed
                    }%
        \hrule\@height\fboxrule}%
                          }%
        }%
}
\def\r@frameb@x#1{%
  \@tempdima\fboxrule
  \advance\@tempdima\fboxsep
  \advance\@tempdima\dp\@tempboxa
  \hbox{%
    \lower\@tempdima\hbox{%
      \vbox{%
        \hrule\@height\fboxrule
        \hbox{%
          %\vrule\@width\fboxrule% Left \vrule removed
          #1%
          \vbox{%
            \vskip\fboxsep
            \box\@tempboxa
            \vskip\fboxsep}%
          #1%
          \vrule\@width\fboxrule}%
        \hrule\@height\fboxrule}%
                          }%
        }%
}
\makeatother

\begin{document}
\rrboxed{That the man+V\ldots\ldots}\\
\\
\textbf{S} \ovalbox{\textbf{S}+\textbf{V}(\textbf{S}+\textbf{V})} \textbf{V}\\
\\
with$\rightarrow$\fbox{S'+形容詞}
\end{document}

検索ワード

  • tex frame opened box fbox

1次CRハイパスフィルタのデジタルフィルタ

f:id:kazmus:20190304121102j:plain
CRハイパスフィルタ

時定数 \tau=CR\,\left[\mathrm{s}\right]として,伝達関数 H(s)は,
 H(s)= \frac{s\tau}{1+s\tau}.

デジタルフィルタに変換するため双一次変換する.
 H(s)に下式を代入する.
 s = 2f_s \frac{1-z^{-1}}{1+z^{-1}}
ただし, f_s\, \left[\mathrm{Hz}\right]はデジタルフィルタを適用する信号のサンプリング周波数とする.

以上から,z領域における伝達関数 H(z)が求まり,下式で示される.
 H(z)=\frac{ 2\tau f_s - 2\tau f_s z^{-1} }{ (1+2\tau f_s) + (1-2\tau f_s)z^{-1} }.

出身スケール

  • メジャー
    • C 全 D 全 E 半 F 全 G 全 A 全 H 半 C
  • ロディックマイナー
    • C 全 D 半 Es 全 F 全 G 全 A 全 H 半 C
  • (コンビネーションオブ)ディミニッシュ
    • C 半 Des 全 Es 半 E 全 Fis 半 G 全 A 半 B 全 C
  • ホールトーン
    • C 全 D 全E 全 Fis 全 Gis 全 B 全 C
  • ハーモニックマイナー
    • C 全 D 半 Es 全 F 全 G 半 As 増2 H 半 C

TeX Live2018のセットアップ(Windows10)とソースの例

TeXWorksの設定(タイプセット)

  • 名前:MAIN_upLaTeX (ptex2pdf)
  • プログラム:C:/texlive/2018/bin/win32/ptex2pdf.exe
  • 引数
    • -l
    • -u
    • -ot
    • -kanji=utf8
    • $synctexoption -no-guess-input-enc -kanji=utf8
    • $fullname
  • 名前:CITE_upBibTeX
  • プログラム:C:/texlive/2018/bin/win32/upbibtex.exe
  • 引数
    • $basename

コンパイル順序

MAIN_upLaTeX (ptex2pdf)→CITE_upBibTeX→MAIN_upLaTeX (ptex2pdf)→MAIN_upLaTeX (ptex2pdf)

小塚フォントを有効にする

  • フォントのコピー
    • "C:\texlive\2018\texmf-dist\fonts\opentype"に"kozuka-pr6n"フォルダを作成
    • "C:\texlive\2018\texmf-dist\fonts\opentype\kozuka-pr6n"に"KozGoPr6N-Medium.otf"と"KozMinPr6N-Regular.otf"をコピー
  • cmdでフォントを有効にする
    • "updmap-sys --setoption kanjiEmbed kozuka"をcmd上で実行
    • "kanji-config-updmap-sys kozuka-pr6n"をcmd上で実行
    • "mktexlsr"をcmd上で実行

texファイルの例

\RequirePackage[l2tabu, orthodox]{nag}
\documentclass[12pt, a4j, uplatex]{jsarticle}
\bibliographystyle{junsrt} % 参考文献を引用された順で出力する
\usepackage[margin=15truemm,left=10truemm,right=10truemm,includehead,includefoot,dvipdfm]{geometry}
\usepackage[dvipdfmx]{graphicx,color}  % 図と文字色指定を有効にする
\usepackage[all, warning]{onlyamsmath}
\renewcommand{\figurename}{Fig.~}
\renewcommand{\tablename}{Table }
\usepackage{flushend}
\usepackage{type1ec}
\usepackage{fix-cm}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{comment} %begin{comment}等の複数行コメントを有効にする
\usepackage{setspace}
\usepackage{textcomp}
\usepackage{subfig}
\usepackage{amsmath,amssymb}
\usepackage{mathtools}
\mathtoolsset{showonlyrefs=true}
\usepackage{exscale}
\usepackage{bm}        %bm{}を有効にする
%\setstretch{1.2}
%\pagestyle{empty}
\usepackage[dvipdfmx]{hyperref}
\usepackage{pxjahyper} %図番号,式番号などのリンクを有効にする
\usepackage{float}        %図の配置でhere強制を有効にする
\usepackage{here}
\usepackage{dcolumn}
\usepackage{helvet} %英字のサンセリフ体をhelveticaにする
\usepackage{url} %urlのリンクを有効にする
\usepackage{multirow}
\usepackage{booktabs} %セルを結合した表を表示するために必要

%図表を最後にまとめる
\usepackage[nolists,nomarkers]{endfloat}
%まとめた図表を詰めて配置する
\renewcommand{\efloatseparator}{\medskip}

%pdfの図は''pdfcrop filename''でトリミング

\title{題名}
\author{所属\\所属 苗字 名前}
\date{2019/02/21}

\begin{document}
\maketitle


        \section{section 1}
\begin{enumerate}
\item 列挙1
\item 列挙2
\end{enumerate}

%\textcolor{red}{\huge{注意点}}

        \section{section 2}
本文

本文($\theta$帯域3-5\,Hz,$\alpha$帯域8-12\,Hz,$\beta$帯域18-24\,Hz)

1\,s(2049\,sample)なら$19\,\textrm{ch} \times 13\,\textrm{周波数点}=247\,次元$.

Fig.\,\ref{fig:figlabel1}で図の参照

\begin{figure}[h]
  \centering
  \includegraphics[width=0.6\linewidth]{figlabel1の図.png}
  \caption{figlabel1のキャプション}
  \label{fig:figlabel1}
\end{figure}

\begin{figure}[h]
  \centering
  \includegraphics[width=0.6\linewidth]{figlabel2の図.png}
  \caption{figlabel2のキャプション}
  \label{fig:figlabel2}
\end{figure}


        \section{section 3}
本文

Fig.\ref{fig:label}で図の参照.

○○によっては25\,Hz以上でもp値~~~~~,先行研究\cite{kenkyu}で用いられた~~~~~が期待できる.

\begin{figure}[h]
  \centering
  \includegraphics[width=1\linewidth]{picture.png}
  \caption{caption}
  \label{fig:label}
\end{figure}

        \section{section}
\begin{enumerate}
\item aaaa
\item bbbb
\end{enumerate}

\bibliography{cite} %このtexファイルと同一フォルダに"cite.bib"というbibファイルを配置すること.

\end{document}

bibファイルの例(cite.bib)

@book{
本,
author={authorname},
title={booktitle},
publisher={publisher},
year={2018}
}

@misc{
参照するときのラベル,
author={著者},
title={タイトル},
howpublished={\url{http://www.aaaaaaaaaaa.org/files/dir/filename.pdf}},
note={ページ名},
year={2009}
}

@book{
参照するときのラベル,
author={著者一 and 著者二 and 著者三},
title={タイトル},
publisher={○○株式会社},
year={2004}
}

@book{aaaabbbb-et-al-XXXX,
    title={title},
    author={Author Name andAuthor Name and Author Name},
    publisher={PUBL isher},
    note={\url{http://www.aaaaaaaaaaaa.org}},
    year={2016}
}

@MasterThesis{kenkyu,
title={○○についての研究},
author={著者名},
year={2015},
school={大学名}
}

pythonでレスラー方程式の解軌道を描画(ルンゲクッタ法)

pythonでルンゲクッタ法を実装した.
レスラー方程式を与えて描画する.

プログラム内関数のdxdt, dydt, dzdtを書き換えれば別の微分方程式も解ける.
下記プログラムはローレンツ方程式を解くようにも書き換えられる.

import numpy as np


def dxdt(a, b, c, x, y, z):  # 引数は,「関数のパラメータを並べたもの」,「変数を並べたもの」の順番で並べる.他の連立微分方程式と同じ形式で引数を並べる.
    return -y - z


def dydt(a, b, c, x, y, z):
    return x + a * y


def dzdt(a, b, c, x, y, z):
    return b + x * z - c * z


def _handler(func, *args):
    return func(*args)


pdelist = [dxdt, dydt, dzdt]  # 連立微分方程式を追加する場合は,関数名をこのlistにも追加すること.


def runge_kutta(funcs, param, vold, delta):
    """
    ルンゲクッタ法で時間を含まない微分方程式を解く
    :param funcs: 関数のlist.上記のpdelistのように並べる.
    :param param: パラメータを並べたndarray(np.array)
    :param vold: 現在時刻における未知関数の値を並べたndarray.pdelistに含まれる関数の引数のx, y, zに相当する.
    :param delta: 計算の1ステップあたりに進める時間
    :return: 計算を1ステップ進めた後の時刻における未知関数の値を並べたndarray.pdelistに含まれる関数の引数のx, y, zに相当する.
    """
    k1 = []
    k2 = []
    k3 = []
    k4 = []
    for fnc in funcs:
        k1.append(_handler(fnc, *param, *vold))

    k11 = vold + delta * 0.5 * np.array(k1)
    for fnc in funcs:
        k2.append(_handler(fnc, *param, *k11))

    k22 = vold + delta * 0.5 * np.array(k2)
    for fnc in funcs:
        k3.append(_handler(fnc, *param, *k22))

    k33 = vold + delta * np.array(k3)
    for fnc in funcs:
        k4.append(_handler(fnc, *param, *k33))
    return vold + (np.array(k1) + 2 * np.array(k2) + 2 * np.array(k3) +
                   np.array(k4)) * delta / 6


def main():
    import pickle
    import matplotlib.pyplot as plt
    param = np.array([0.2, 0.2, 7.1])  # レスラー方程式のパラメータ
    init = np.array([4, 4, 1])  # 微分方程式の初期値
    delta = 0.1  # 1ステップあたりの経過時間
    result = []
    vnew = init
    for i in range(1, 10000):
        result.append(vnew)
        vnew = runge_kutta(pdelist, param, vnew, delta)
    result.append(vnew)
    roessler = np.array(result)  # 解の変数.roessler[時刻(sample), 変数の番号]
    with open("signal_roessler.pickle", mode="wb") as f:  # 解の変数を保存
        pickle.dump(roessler, f)
    plt.plot(roessler[:, 0], roessler[:, 1])  # 解の変数の0番目(レスラー方程式のx)を横軸に,解の変数の1番目(レスラー方程式のy)を縦軸に取り,プロットする.
    plt.xlabel("x = roessler[:, 0]")
    plt.ylabel("y = roessler[:, 1]")


if __name__ == "__main__":
    import matplotlib.pyplot as plt

    main()
    plt.show()

上記プログラムを実行すると以下のグラフが表示される.

f:id:kazmus:20190218220859p:plain
レスラー方程式のx-y軌道.パラメータ(a,b,c)=(0.2, 0.2, 7.1)初期値(x,y,z)=(4, 4, 1).4次のルンゲクッタ法で1ステップの時間を0.1とし,1万ステップ計算した.