Welcome to MathSeminar.jl


Last Modified: 2021年3月21日 日曜日

About this page

日本語(Japanese)
  • 静的サイトジェネレータである Franklin.jl をベースに構築された Web ページです. Web ページの生成に使われたコードは全て MathSeminar.jl にて管理さてれています.
English(英語)

Before reading

Remark 1.1.1 (推奨ブラウザについて)

  • Google Chrome からの閲覧を推奨します.(It is recommended to view it from Google Chrome.)

  • iPad などから Safari で閲覧する場合, 設定(ホーム画面の歯車アイコン) -> Safari -> デスクトップ用Webサイト まで進み「全てのWebサイト」を無効にします.(When using Safari from an iPad or other device, go to Settings (gear icon on the home screen) -> Safari -> Desktop Web Sites and disable "All Web Sites".)

Check Julia version

Deprecated as of 10.7.0. highlight(lang, code, ...args) has been deprecated. Deprecated as of 10.7.0. Please use highlight(code, options) instead. https://github.com/highlightjs/highlight.js/issues/2277

using InteractiveUtils
versioninfo()
Deprecated as of 10.7.0. highlight(lang, code, ...args) has been deprecated. Deprecated as of 10.7.0. Please use highlight(code, options) instead. https://github.com/highlightjs/highlight.js/issues/2277
Julia Version 1.6.0-rc3
Commit 23267f0d46 (2021-03-16 17:04 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, broadwell)
Environment:
  JULIA_PATH = /usr/local/julia
  JULIA_GPG = 3673DF529D9049477F76B37566E3C7DC03D6E495
  JULIA_VERSION = 1.6.0-rc3
  JULIA_NUM_THREADS = 8
  JULIA_PROJECT = /work

Introduction to Franklin

Definition 2.0.1 (Franklin.jl について)
Franklin.jl は Julia で記述された静的サイトの生成を行うパッケージである.コーディング,数学などの技術ブログの作成をサポートする. 公式ドキュメントは https://franklinjl.org/ を参照せよ. なお,公式ドキュメントも Franklin.jl で作成されており, https://github.com/tlienart/franklindocs にてソースが公開されている.

Proposition 2.0.2 (特徴)
Franklin.jl では次の機能を持っている

  • マークダウンで記述することができる.

  • 数式のレンダリングは KaTeX を用いている. $ マークで挟むことで数式を表現できる.

  • 記述した Julia のコードを記述し, 対応する出力を自動で表示することができる.

  • グラフ描画結果を表示することができ, 数学の概念を可視化することができる.

  • HTML, CSS, JavaScript の知識があれば,ページの表示を変更することができる.

Example 2.0.3 (事後分布の定義)
真の分布 q(x)q(x) に従う nn 個の確率変数の組 Xn=(X1,,Xn)X^n = (X_1,\dots,X_n), パラメータ wWRdw \in W \subset \mathbb R^d を持つ確率モデル p(xw)p(x|w), パラメータの事前分布 φ(w)\varphi(w) から定まる逆温度 β\beta 付きの ww の事後分布 p(wXn)p(w|X^n) を次で定義する:

p(wXn)=i=1np(Xiw)βφ(w)Zn(β). p(w|X^n) = \frac{\displaystyle\prod_{i=1}^n p(X_i|w)^\beta \varphi(w)}{Z_n(\beta)}.

ここで Zn(β)Z_n(\beta)p(wXn)p(w|X^n) の事後分布の正規化定数であり具体的には下記のように定義する:

Zn(β)=Wi=1np(Xiw)βφ(w)dw. Z_n(\beta) = \int_W \prod_{i=1}^n p(X_i|w)^\beta \varphi(w) dw .

Lemma 2.0.4
次のようにJuliaのコードを記述することができる:


Deprecated as of 10.7.0. highlight(lang, code, ...args) has been deprecated. Deprecated as of 10.7.0. Please use highlight(code, options) instead. https://github.com/highlightjs/highlight.js/issues/2277
x = 3.141592
y = sin(x)
@show y

このとき, y の値は評価され次の出力を得ることができる: Deprecated as of 10.7.0. highlight(lang, code, ...args) has been deprecated. Deprecated as of 10.7.0. Please use highlight(code, options) instead. https://github.com/highlightjs/highlight.js/issues/2277

y = 6.535897930762419e-7


Remark 2.0.5 (通し番号について)
通し番号は Franklin ではデフォルトでサポートしていない. CSS でカウンタを定義しておく必要がある.

newcommand によるタイピングの簡略化

config.md は文章を記述する上での設定を記述するために用いる. LaTeX\LaTeX\newcommand と同様に数式を記述するコマンドを簡略化できる.

Example 3.0.1 (R\mathbb{R} の例)
config.md に次を追加しておく:

Deprecated as of 10.7.0. highlight(lang, code, ...args) has been deprecated. Deprecated as of 10.7.0. Please use highlight(code, options) instead. https://github.com/highlightjs/highlight.js/issues/2277
\newcommand{\R}{\mathbb R}

これで \RR\mathbb R を表記できる.

グラフの描画

PyPlot, gr,pyplot,plotlyjs をバックエンドとする Plots.jl, PlotlyJS.jl を用いた場合で確認している.

PyPlot

Deprecated as of 10.7.0. highlight(lang, code, ...args) has been deprecated. Deprecated as of 10.7.0. Please use highlight(code, options) instead. https://github.com/highlightjs/highlight.js/issues/2277
import PyPlot
PyPlot.figure(figsize=(8, 6))
x = range(-2, 2, length=500)
for α in 1:5
    PyPlot.plot(x, sinc.(α .* x))
end

Plots (GR Backend)

Deprecated as of 10.7.0. highlight(lang, code, ...args) has been deprecated. Deprecated as of 10.7.0. Please use highlight(code, options) instead. https://github.com/highlightjs/highlight.js/issues/2277
using Plots
gr()
using LaTeXStrings
Plots.plot(rand(10), title=L"\alpha", xlabel=L"x", ylabel=L"y")

Plots (PyPlot Backend)

Deprecated as of 10.7.0. highlight(lang, code, ...args) has been deprecated. Deprecated as of 10.7.0. Please use highlight(code, options) instead. https://github.com/highlightjs/highlight.js/issues/2277
using Plots
pyplot()
Plots.plot(sin, title=L"y=\sin x")
gr()

Remark 4.0.1 (Plotly/PlotlyJS について)
Plotly, または PlotlyJS による例はサイドメニューのページを参照

Python のコードの実行結果の表示

config.md のコマンドを定義しておく.

Deprecated as of 10.7.0. highlight(lang, code, ...args) has been deprecated. Deprecated as of 10.7.0. Please use highlight(code, options) instead. https://github.com/highlightjs/highlight.js/issues/2277
\newcommand{\pycode}[2]{
```julia:!#1
#hideall
using PyCall
lines = replace("""!#2""", r"(^|\n)([^\n]+)\n?$" => s"\1res = \2")
py"""
$$lines
"""
println(py"res")
```
```python
#2
```
\codeoutput{!#1}
}

そして該当する Markdown ファイルに例えば下記のように \pycode コマンドと組み合わせたものを記述しておく.

Proposition 5.0.1 (ソースコードの表示)
Pythonのコードの実行結果を貼り付けることができる.
Deprecated as of 10.7.0. highlight(lang, code, ...args) has been deprecated. Deprecated as of 10.7.0. Please use highlight(code, options) instead. https://github.com/highlightjs/highlight.js/issues/2277
\pycode{py1}{
import numpy as np
np.random.seed(2)
x = np.random.randn(5)
r = np.linalg.norm(x) / len(x)
np.round(r, 2)
}

と記述することで下記のようになる:

Deprecated as of 10.7.0. highlight(lang, code, ...args) has been deprecated. Deprecated as of 10.7.0. Please use highlight(code, options) instead. https://github.com/highlightjs/highlight.js/issues/2277
import numpy as np
np.random.seed(2)
x = np.random.randn(5)
r = np.linalg.norm(x) / len(x)
np.round(r, 2)

Deprecated as of 10.7.0. highlight(lang, code, ...args) has been deprecated. Deprecated as of 10.7.0. Please use highlight(code, options) instead. https://github.com/highlightjs/highlight.js/issues/2277

0.65

C のコードの実行結果を表示

Proposition 6.0.1 (ソースコードの表示)
つぎのように C のコードを貼り付けることができる.

Deprecated as of 10.7.0. highlight(lang, code, ...args) has been deprecated. Deprecated as of 10.7.0. Please use highlight(code, options) instead. https://github.com/highlightjs/highlight.js/issues/2277

#include <stdio.h>
int main(){
    printf("Hello Pika\n");
    return 0;
}

まず, config.md に次を記述しておく:

Deprecated as of 10.7.0. highlight(lang, code, ...args) has been deprecated. Deprecated as of 10.7.0. Please use highlight(code, options) instead. https://github.com/highlightjs/highlight.js/issues/2277
<!-- display C code with syntax highlight-->
\newcommand{\Ccode}[2]{
```julia:!#1
#hideall
using Markdown

mdC_code = Markdown.htmlesc(raw"""!#2""")

mdfile = joinpath(dirname(@OUTPUT), "!#1.md")
open(mdfile,"w") do f
    print(f, mdC_code)
end

C_code=raw"""
!#2
"""

exefile = tempname()

#=
This trick is taken from

https://discourse.julialang.org/t/how-to-make-a-c-function-compiled-by-myself-available-to-ccall/7972/26
=#

open(`gcc -Wall -O2 -march=native -xc -o $exefile -`, "w") do f
    print(f, C_code)
end

run(`$exefile`)
```

\input{c}{!#1.md}
}

<!-- run C code and display code and its result -->
\newcommand{\Cexec}[2]{
\Ccode{!#1}{!#2}

\codeoutput{!#1}

}

そして次のようにタイプする

Deprecated as of 10.7.0. highlight(lang, code, ...args) has been deprecated. Deprecated as of 10.7.0. Please use highlight(code, options) instead. https://github.com/highlightjs/highlight.js/issues/2277
\Cexec{how2embeddC}{
#include <stdio.h>
int main(){
    printf("Hello Pikachu\n");
    return 0;
}
}

出力結果は次のようになる.コードはハイライトされ,対応する main 関数のコードの実行結果を出力する:

Deprecated as of 10.7.0. highlight(lang, code, ...args) has been deprecated. Deprecated as of 10.7.0. Please use highlight(code, options) instead. https://github.com/highlightjs/highlight.js/issues/2277

#include <stdio.h>
int main(){
    printf("Hello World\n");
    return 0;
}

Deprecated as of 10.7.0. highlight(lang, code, ...args) has been deprecated. Deprecated as of 10.7.0. Please use highlight(code, options) instead. https://github.com/highlightjs/highlight.js/issues/2277

Hello World

Remark 6.0.2 (Cのコードのハイライト)
Getting hightlight.js から ハイライトしたい言語を選択した後 highlight.pack.js_lib/hightlight にコピーする. もともと _lib/highlight/highlight.pack.js が配置されているが、Julia,Python,R、Markdownのみをハイライトするようになっている。

コードの挿入

Deprecated as of 10.7.0. highlight(lang, code, ...args) has been deprecated. Deprecated as of 10.7.0. Please use highlight(code, options) instead. https://github.com/highlightjs/highlight.js/issues/2277
\input{julia}{hello.jl}

と記述しておく. 結果は次のようになる.

Deprecated as of 10.7.0. highlight(lang, code, ...args) has been deprecated. Deprecated as of 10.7.0. Please use highlight(code, options) instead. https://github.com/highlightjs/highlight.js/issues/2277
println("Hello")

hello.jl の実態はソースコードの _assets/index/code/hello.jl に存在する.