量子統計力学とMaple V

ヒューリスティック(英: heuristic, 独: Heuristik[1])とは、必ず正しい答えを導けるわけではないが、ある程度のレベルで正解に近い解を得ることができる方法である。ヒューリスティックスでは、答えの精度が保証されない代わりに、回答に至るまでの時間が少ないという特徴がある。主に計算機科学と心理学の分野で使用される言葉であり、どちらの分野での用法も根本的な意味は同じであるが、指示対象が異なる。すなわち、計算機科学ではプログラミングの方法を指すが、心理学では人間の思考方法を指すものとして使われる。なお、論理学では仮説形成法と呼ばれている。

計算機科学では、コンピューターに計算やシミュレーションを実行させるときに、ヒューリスティックを用いることがある。たいていの計算は、計算結果の正しさが保証されるアルゴリズムか、または計算結果が間違っているかもしれないが誤差がある範囲内に収まっていることが保証されている近似アルゴリズムを用いて計算する。しかし、そのような方法だと、計算時間が爆発的に増加してしまうようなことがある。そのような場合に、妥協策としてヒューリスティックを用いる。ヒューリスティックは、精度の保証はないが、平均的には近似アルゴリズムより解の精度が高い。また、ヒューリスティックの中でも、任意の問題に対応するように設計されたものは、メタヒューリスティックという。

アルゴリズムの近似精度や実行時間を評価したいが、真面目に評価するのが困難な場合、アドホックな仮定(妥当な仮定に見えるものの、その正しさを証明できないような、その場しのぎの仮定)をおいて評価を行うことが多い。こうした仮定のことを「ヒューリスティックな仮定」と呼ぶ。

近年のアンチウイルスソフトウェアでは、ヒューリスティックエンジンを搭載したものが増加してきている。また、フリーソフトにも搭載されており、その進展を見せている。ただし、個々のソフトのヒューリスティック機能は同じでも、その仕組みは異なっているものが多い。

心理学におけるヒューリスティックは、人が複雑な問題解決などのために、何らかの意思決定を行うときに、暗黙のうちに用いている簡便な解法や法則のことを指す。これらは、経験に基づくため、経験則と同義で扱われる。判断に至る時間は早いが、必ずしもそれが正しいわけではなく、判断結果に一定の偏り(バイアス)を含んでいることが多い。なお、ヒューリスティックの使用によって生まれている認識上の偏りを、「認知バイアス」と呼ぶ。

利用可能性ヒューリスティック(availability heuristic)、想起ヒューリスティック
想起しやすい事柄や事項を優先して評価しやすい意思決定プロセスのことをいう。
英語の訳語である検索容易性という言葉の示す通りのヒューリスティックである。
代表性ヒューリスティック(representative heuristic)
特定のカテゴリーに典型的と思われる事項の確率を過大に評価しやすい意思決定プロセスをいう。
代表的な例として、「リンダ問題」がある。
係留と調整(anchoring and adjustment)
最初に与えられた情報を基準として、それに調整を加えることで判断し、最初の情報に現れた特定の特徴を極端に重視しやすい意思決定プロセスをいう。

ボルツマン分布(ボルツマンぶんぷ、英語: Boltzmann distribution)は、一つのエネルギー準位にある粒子の数(占有数)の分布を与える理論式の一つである。ギブス分布とも呼ばれる。気体分子の速度の分布を与えるマクスウェル分布をより一般化したものに相当する。

量子統計力学においては、占有数の分布がフェルミ分布に従うフェルミ粒子と、ボース分布に従うボース粒子の二種類の粒子に大別できる。ボルツマン分布はこの二種類の粒子の違いが現れないような条件におけるフェルミ分布とボーズ分布の近似形(古典近似)である。ボルツマン分布に従う粒子は古典的粒子とも呼ばれる。

核磁気共鳴および電子スピン共鳴などにおいても、磁場の中で分裂した2つの準位の占有率はボルツマン分布に従う。

ボルツマン分布に従う系において、エネルギーが ε に等しい一つの準位にある粒子の数は

f
(
ϵ
)
=
λ
e

β
ϵ
=
e

β
(
ϵ

μ
)
f(\epsilon )=\lambda \,{\mathrm {e}}^{{-\beta \epsilon }}={\mathrm {e}}^{{-\beta (\epsilon -\mu )}}

で与えられる。分布関数を特徴付けるパラメータ β は系の温度と解釈され、熱力学温度 T と β=1/kT で関係付けられ、逆温度と呼ばれる。比例係数 λ は活量で、μ は化学ポテンシャルである。比例係数を除いた e−βε=e−ε/kT の項は、エネルギー ε をもつ粒子の割合を表し、ボルツマン因子と呼ばれる。エネルギーが ε の準位の占有数と ε+Δε の準位の占有数の比は

f
(
ϵ
+
Δ
ϵ
)
f
(
ϵ
)
=
e

β
Δ
ϵ
{\frac {f(\epsilon +\Delta \epsilon )}{f(\epsilon )}}={\mathrm {e}}^{{-\beta \Delta \epsilon }}

となる[1]。同じ温度では、高いエネルギー(大きな ε)の準位の方が一つの準位あたりの粒子数が小さくなる。また、同じエネルギーの準位でも、高い温度(小さな β、大きな T)の条件では一つの準位あたりの粒子数が大きくなる。

複雑な粒子間相互作用がなく、エネルギー準位の分布が占有数によって変化しないことを仮定する。エネルギーが ε と ε+dε の範囲にある準位の数を g(ε)dε とすれば、この範囲にある粒子の数は f(ε)g(ε)dε で与えられる。系の全粒子数は、全てのエネルギーの範囲で積分して

N
=




f
(
ϵ
)
g
(
ϵ
)
d
ϵ
=
λ




e

β
ϵ
g
(
ϵ
)
d
ϵ
N=\int _{{-\infty }}^{\infty }f(\epsilon )\,g(\epsilon )\,d\epsilon =\lambda \int _{{-\infty }}^{\infty }{\mathrm {e}}^{{-\beta \epsilon }}g(\epsilon )\,d\epsilon

で与えられる。また、系の全エネルギーは

E
=




ϵ
f
(
ϵ
)
g
(
ϵ
)
d
ϵ
=
λ




ϵ
e

β
ϵ
g
(
ϵ
)
d
ϵ
E=\int _{{-\infty }}^{\infty }\epsilon \,f(\epsilon )\,g(\epsilon )\,d\epsilon =\lambda \int _{{-\infty }}^{\infty }\epsilon \,{\mathrm {e}}^{{-\beta \epsilon }}g(\epsilon )\,d\epsilon

で与えられる。

エネルギー準位の分布が離散的な場合は、エネルギーが εi に等しい準位の数を gi として、エネルギーが εi である粒子の数 ni は

n
i
=
f
i
g
i
=
λ
e

β
ϵ
i
g
i
n_{i}=f_{i}g_{i}=\lambda \,{\mathrm {e}}^{{-\beta \epsilon _{i}}}g_{i}

となり、系の全粒子数と全エネルギーは

N
=

i
n
i
=
λ

i
e

β
ϵ
i
g
i
,
E
=

i
ϵ
i
n
i
=
λ

i
ϵ
i
e

β
ϵ
i
g
i
N=\sum _{i}n_{i}=\lambda \sum _{i}{\mathrm {e}}^{{-\beta \epsilon _{i}}}g_{i},\quad E=\sum _{i}\epsilon _{i}\,n_{i}=\lambda \sum _{i}\epsilon _{i}\,{\mathrm {e}}^{{-\beta \epsilon _{i}}}g_{i}

で与えられる。

ボルツマン分布は気体の温度が充分に高く、密度が充分に低く、かつ量子効果が無視されるような系において適用される。βε=ε/kT が大きな値を取るような場合、もしくは状態密度が小さい場合のように古典的粒子として扱うには限界が生じ、かつ粒子の波動関数が実質的に重複していない場合は、ボース=アインシュタイン分布およびフェルミ=ディラック分布の両方がボルツマン分布になる。

ボース分布関数(英: Bose distribution function)は、相互作用のないボース粒子の系において、一つのエネルギー準位に入る粒子の数(占有数)を与える理論式である。ボース–アインシュタイン分布関数 (Bose–Einstein distribution function) とも呼ばれる。

エネルギーが ε に等しい準位の占有数を与えるボース分布関数は

f
(
ϵ
)
=
1
e
β
(
ϵ

μ
)

1
{\displaystyle f(\epsilon )={\frac {1}{\mathrm {e} ^{\beta (\epsilon -\mu )}-1}}}

で表される。パラメータ β は逆温度で、熱力学温度 T と β=1/kT で関係付けられる。μ は系の化学ポテンシャルである。

μ≤0 である。μ=0 となるのは生成および消滅が起こる光子やフォノンなどの粒子系か、ボース–アインシュタイン凝縮を起こしている粒子系である。

量子数 ν で指定される準位のエネルギーを εν とすれば、このエネルギー準位の占有数 nν の統計的期待値は


n
ν

=
f
(
ϵ
ν
)
{\displaystyle \langle n_{\nu }\rangle =f(\epsilon _{\nu })}

で与えられる。

フェルミ分布関数(フェルミぶんぷかんすう、英: Fermi distribution function)とは、相互作用のないフェルミ粒子の系において、一つのエネルギー準位にある粒子の数(占有数)の分布を与える理論式である[1]。フェルミディラック分布とも呼ばれる。

エネルギーが ε に等しい準位の占有数を与えるフェルミ分布関数は

f
(
ϵ
)
=
1
e
β
(
ϵ

μ
)
+
1
f(\epsilon) = \frac{1}{\mathrm{e}^{\beta(\epsilon-\mu)} +1}

で表される。パラメータ β は逆温度で、熱力学温度 T と β=1/kT で関係付けられる。μ は系の化学ポテンシャルである。

絶対零度(T→0, β→∞)の極限では、フェルミ分布関数はヘヴィサイドの階段関数を用いて

lim
β


f
(
ϵ
)
=
θ
(
μ

ϵ
)
=
{
1 (ϵ<μ) 0 (ϵ>μ)
\lim_{\beta\to\infty}f(\epsilon) =\theta(\mu -\epsilon) =
\begin{cases}
1 & (\epsilon < \mu) \\
0 & (\epsilon > \mu) \\
\end{cases}

となる。このときの化学ポテンシャルはフェルミエネルギーに等しい。

量子数 ν で指定される準位のエネルギーを εν とすれば、このエネルギー準位の占有数 nν の統計的期待値は


n
ν

=
f
(
ϵ
ν
)
\langle n_\nu \rangle =f(\epsilon_\nu)

で与えられる[2]。フェルミ分布関数は 0 から 1 の間の値をとる。これはパウリの排他原理によりフェルミ粒子が一つの準位には一つまでしか入らないことを反映している。

ヘヴィサイドの階段関数(ヘヴィサイドのかいだんかんすう、英: Heaviside step function)は、正負の引数に対しそれぞれ 1, 0 を返す階段関数

H
(
x
)
=
{
1 (x>0) 0 (x<0)
{\displaystyle H(x)={\begin{cases}1&(x>0)\\0&(x<0)\end{cases}}}

である。名称はオリヴァー・ヘヴィサイドにちなむ。ヘヴィサイド関数と呼ばれることもある。通常、H(x) や Y(x) などで表されることが多い。

単位ステップ関数と似ているが、こちらは

U
(
x
)
=
{
1 (x≥0) 0 (x<0)
{\displaystyle U(x)={\begin{cases}1&(x\geq 0)\\0&(x<0)\end{cases}}}

と x = 0 の時も1の値を持つものとして定義される。切断冪関数の0乗。

階段関数は、x < 0 または x > 0 の範囲で連続であるが, x = 0 で値 c をとるものとして階段関数

H
c
(
x
)
=
{
0 (x<0) c (x=0) 1 (x>0)
H_{c}(x)={\begin{cases}0&(x<0)\\c&(x=0)\\1&(x>0)\end{cases}}

を実数全体の集合
R
{\mathbb R} 上の関数
H
c
:
R

R
H_{c}:{\mathbb R}\to {\mathbb R} と考えるならば、c をどのように定めても原点 x = 0 で不連続である。c の値は必要に応じて都合のよい値を選ぶことができるが、c = 0, 1/2 などがしばしば用いられ、それぞれ

H
0
(
x
)
=
{
0 (x≤0) 1 (x>0)
H_{0}(x)={\begin{cases}0&(x\leq 0)\\1&(x>0)\end{cases}}
H
1
/
2
(
x
)
=
{
0 (x<0) 1
/
2 (x=0) 1 (x>0)
H_{{1/2}}(x)={\begin{cases}0&(x<0)\\1/2&(x=0)\\1&(x>0)\end{cases}}

である。また、

H
1
(
x
)
=
U
(
x
)
H_{1}(x)=U(x)\,
H
0
(
x
)
=
1

U
(

x
)
=
lim
t

x

0
U
(
t
)
H_{0}(x)=1-U(-x)=\lim _{{t\to x-0}}U(t)
H
c
(
x
)
=
c
H
1
(
x
)
+
(
1

c
)
H
0
(
x
)
H_{c}(x)=cH_{1}(x)+(1-c)H_{0}(x)\,
H
1
/
2
(
x
)
=
1
+
sgn

(
x
)
2
H_{{1/2}}(x)={\frac {1+\operatorname{sgn}(x)}{2}}

と表すことができる。関数 sgn は符号関数である。

ディラックデルタ関数 δと区間
(


,
x
]
(-\infty ,x] の定義関数
χ
(


,
x
]
\chi _{{(-\infty ,x]}} に対し




x
δ
(
t
)
d
t
:=




χ
(


,
x
]
(
t
)
δ
(
t
)
d
t
=
χ
(


,
x
]
(
0
)
\int _{{-\infty }}^{x}\delta (t)dt:=\int _{{-\infty }}^{{\infty }}\chi _{{(-\infty ,x]}}(t)\delta (t)dt=\chi _{{(-\infty ,x]}}(0)

とおくと、これは x < 0 のとき区間
(


,
x
]
(-\infty ,x] は 0 を含まず、x ≥ 0 のとき区間
(


,
x
]
(-\infty ,x] が 0 を含むことから

χ
(


,
x
]
(
0
)
=
{
0 (x<0) 1 (x≥0)
\chi _{{(-\infty ,x]}}(0)={\begin{cases}0&(x<0)\\1&(x\geq 0)\end{cases}}

となる。つまり

H
0
(
x
)
=



x
δ
(
ξ
)
d
ξ
H_{0}(x)=\int _{{-\infty }}^{{x}}\delta (\xi )d\xi

と表される。この意味でヘヴィサイドの階段関数はディラックデルタ関数を密度関数とするときの分布関数に相当する。

符号関数 (sign function, signum function) は、実数に対しその符号に応じて1、-1、0のいずれかを返す関数

sgn

x
=
{
1 : x>0 0 : x=0 −1 : x<0
{\displaystyle \operatorname {sgn} x={\begin{cases}1&:\ x>0\\0&:\ x=0\\-1&:\ x<0\end{cases}}}
およびそれを拡張した複素関数

記号は
sgn

x
{\displaystyle \operatorname {sgn} x\,} のほかに、
sgn

(
x
)
{\displaystyle \operatorname {sgn}(x)\,} 、
Sgn
x
{\displaystyle \operatorname {Sgn} \,x} 、
sign
x
{\displaystyle \operatorname {sign} \,x} なども使われる。

英語から「サイン関数」とも呼ぶが、この名は正弦関数
sin
\sin と非常に紛らわしい。区別するためにsignのラテン語形のsignum(シグヌム、英語読みはシグナム)から「シグナム関数」 (signum function) と呼ぶことがある。英語以外でもドイツ語などいくつかの言語でsignum系の名前で呼ばれる。

実数に対する符号関数は

sgn

x
=
{
x
/
|
x
|
: x≠0 0 : x=0
{\displaystyle \operatorname {sgn} x={\begin{cases}{x}/{|x|}&:\ x\neq 0\\0&:\ x=0\end{cases}}}
と書くこともできる。符号関数の複素数への拡張は、この式を複素数へも適用することで得られる。複素数に対する符号関数は、複素数平面上でベクトルに対し同方向の単位ベクトルを求める操作と同等である(ただし零ベクトル以外のとき)。

なおこのほかに、gnuplotでは、複素数に対し符号関数を

sgn

x
=
sgn

Re
x
{\displaystyle \operatorname {sgn} x=\operatorname {sgn} \operatorname {Re} \,x}
と定義している。またMaple Vでは

csgn
x
=
{
sgn⁡Rex : Rex≠0 sgn⁡Imx : Rex=0
{\displaystyle \operatorname {csgn} \,x={\begin{cases}\operatorname {sgn} \operatorname {Re} \,x&:\ \operatorname {Re} \,x\neq 0\\\operatorname {sgn} \operatorname {Im} \,x&:\ \operatorname {Re} \,x=0\end{cases}}}
という関数を定義している(
Re
{\displaystyle \operatorname {Re} } と
Im
{\displaystyle \operatorname {Im} } はそれぞれ複素数の実部と虚部)。しかしこれ以降は、これらの定義は使わず、最初の定義の符号関数について述べる。

符号関数は、以下のような性質を持つ(これらは複素数に対し成り立つ)。

極形式との関係:

|
sgn

x
|
=
{
1 : x≠0 0 : x=0
{\displaystyle |\operatorname {sgn} x|={\begin{cases}1&:\ x\neq 0\\0&:\ x=0\end{cases}}}
arg

sgn

x
=
arg

x
{\displaystyle \arg \operatorname {sgn} x=\arg x\,} 、ただし
arg
{\displaystyle \arg } は偏角
x
=
(
sgn

x
)
|
x
|
{\displaystyle x=(\operatorname {sgn} x)|x|\,}
sgn

x
=
e
i
arg

x
(
x

0
)
{\displaystyle \operatorname {sgn} x=e^{i\arg x}\quad (x\neq 0)}
符号の演算:

sgn

x
=

sgn

x
{\displaystyle \operatorname {sgn} -x=-\operatorname {sgn} x\,}
sgn

1
x
=
1
sgn

x
(
x

0
)
{\displaystyle \operatorname {sgn} {\frac {1}{x}}={\frac {1}{\operatorname {sgn} x}}\quad (x\neq 0)}
sgn

x
y
=
sgn

x
sgn

y
{\displaystyle \operatorname {sgn} xy=\operatorname {sgn} x\operatorname {sgn} y\,}
sgn

x
y
=
sgn

x
sgn

y
(
y

0
)
{\displaystyle \operatorname {sgn} {\frac {x}{y}}={\frac {\operatorname {sgn} x}{\operatorname {sgn} y}}\quad (y\neq 0)}
sgn

x
y
=
(
sgn

x
)
y
{\displaystyle \operatorname {sgn} x^{y}=(\operatorname {sgn} x)^{y}\,}
実数に対しては、加えて次のような性質を持つ。

d
d
x
sgn

x
=
2
δ

(
x
)
{\displaystyle {\frac {d}{dx}}\operatorname {sgn} x=2\operatorname {\delta } (x)} 、ただし
δ
{\displaystyle \operatorname {\delta } } はディラックデルタ関数
sgn

x
=
d
d
x
|
x
|
(
x

0
)
{\displaystyle \operatorname {sgn} x={\frac {d}{dx}}|x|\quad (x\neq 0)}
sgn

x
=
2
H
1
/
2

(
x
)

1
{\displaystyle \operatorname {sgn} x=2\operatorname {H} _{1/2}(x)-1\,} 、ただし
H
1
/
2
{\displaystyle \operatorname {H_{1/2}} } はヘヴィサイドの階段関数
sgn

x
=
[
x
>
0
]

[
x
<
0
]
{\displaystyle \operatorname {sgn} x=[x>0]-[x<0]\,} 、ただし
[
]
{\displaystyle [\,]} はアイヴァーソンのブラケット
lim
k


tanh

k
x
=
π
2
sgn

x

アイバーソンの記法はケネス・アイバーソンにちなんで名づけられた記法。Pが真ならば1で偽ならば0である。

[
P
]
=
{
1
if
P
is true;
0
otherwise.
[P]={\begin{cases}1&{\mbox{if }}P{\mbox{ is true;}}\\0&{\mbox{otherwise.}}\end{cases}}
gnuplot(ニュープロット しばしばグニュープロットとも)は、2次元もしくは3次元のグラフを作成するためのアプリケーションソフトウェアである。インターネットにおいて無料で配布されているフリーウェアである。1986年に最初のバージョンが開発された。現在では、LinuxUNIXWindowsmacOSなどの多くのオペレーティングシステム (OS) に対応したバージョンが開発されている。

オープンソースソフトウェアとして公開されており、高機能・高精度であることから、特に学術研究に広く利用されている。また、使い方を解説したWebサイトも数多く存在する。過去にはGNU Octaveのプロットエンジンとしても利用されていた。

入力したデータや数式等を元に、画面もしくは画像ファイルへグラフを生成する。画像ファイルのフォーマットは、PNG, EPS, SVG, JPEGなどの多くの形式に対応している。

用途によってバッチファイルとしてまとめて処理を行わせる方式と、逐次命令文を入力してグラフを描画させる方式とを使い分けることが出来る。

名前に「gnu」と冠されてこそいるが、GNUプロジェクトとは関係がなく、独自のライセンス形態をとっている。

ソースコードをコピーないし改変することは許されているが、改変を加えたバージョンの配布はパッチ形式でのみ可能である。したがってGPLと互換性がない。

Maple(メイプル)とは、数式処理、数値計算、グラフ作成などを行うソフトウェアのひとつである。Mapleは、1980年代前半にカナダのウォータールー大学で開発され(株式会社としてはWaterloo Maple名義。以下Maplesoft)、日本ではサイバネットシステムが販売、翻訳を行っていたが、2009年9月に、Maplesoftをサイバネットシステムが買収した。Mapleを使うと、紙と鉛筆で行う数学の計算や作図をコンピュータで行うことができる。

また、販売方法としては、アカデミックバージョンを出し、学生や、教員、研究者向けに廉価で(1ライセンス2~3万円程度)ほとんどスペックの落ちない製品を販売している。また、小学校、中学校、高校などの初等教育の現場における数学、理科の授業から、大学や企業のR&D部門などの研究機関に至るまで幅広いユーザ層が開拓されつつある。

インタフェースはMathematicaと類似しているが、グラフ描画機能などにおいて特に優れているとされている。
Mathematicaと比較して少ないメモリとハードディスク容量で計算が可能である。
本来、記号解の導出を想定して設計してあり、ほとんどの計算において記号解を出すことが可能である。
Mathematicaと比較して、膨大な量の計算を長時間かかって行うには不向きと考えられている。
Mathematicaと比較して、特化した用法へのアドインのアプリケーションが寡少である。

代数演算とは加減乗除および階乗(平方根等を含む)及びはそれらを組み合わせることで作られる演算の総称である。以下、主な代数演算について説明する。

関数の定義は以下のように行う。例えば関数fを
f
(
x
)
=
x
×
exp

(

x
2
)
{\displaystyle f(x)=x\times \exp(-{x}^{2})}と定義したい場合には、

f:=x->x*exp(-x^2);
と入力すればよい。2変数以上の関数もほぼ同様で、例えば関数fを
g
(
x
,
y
)
=
y
×
exp

(

x
2
)
{\displaystyle g(x,y)=y\times \exp(-{x}^{2})}と定義したい場合には、

g:=(x,y)->y*exp(-x^2);
と入力すればよい。一般に関数には変数が存在する。人間は関数を見せられた場合に『何が変数であるか』を理解できるが、機械はそうではない。したがって、変数が何なのかを明示する必要がある。上記のコマンドにおいて、変数が何なのかを明示する役割を果たしている記号がそれぞれ『x->』『(x,y)->』である。もちろん

f:=x*exp(-x^2);
のように変数を明示しない定義の仕方もあるが、これだと、後々別のコマンドと組み合わせる際に何らかの不都合が生じる可能性がある。

代入に関するコマンド、つまり、文字式や関数に、文字や数字を代入するためのコマンドとしては、evalとsubsが代表的である。

evalコマンドを用いると、文字式や関数に、文字や数字を代入できる。

> eval(x^2+x+1 , x=1);

f:=(x,y,z)->y*exp(-x^2)+z;
> eval(poly,[x=2,y=3,z=t]);

同様にsubsコマンドを使えば、文字式や関数に、文字や数字を代入できる。ただし、代入する側の位置と代入する側の位置が、evalとは逆になっている。

subs( x=2, x^2+x+1 );
subs( x=A, x^2+x+1 );
h:=x*exp(-x^2);
subs( x=A, f );
(駄目)

f:=x->x*exp(-x^2):
subs( x=A, f );
f
(次のように書く)

f:=x->x*exp(-x^2):
subs( x=A, f(x) );
evalコマンドとsubsコマンドの違いは、次の例において顕著である。

expr := sin(x)/cos(x); subs(x=0,expr); eval(expr,x=0);


> der := diff(f(x),x) + f(x);

/ d \
der := |--- f(x)| + f(x)
\ dx /
> eval(der,x=0);

/ / d \\
|eval|--- f(x), {x = 0}|| + f(0)
\ \ dx //
> subs(x=0,der);

(diff(f(0), 0)) + f(0)
subsは評価(evaluation)をせずに代入するのみ。evalは評価したあとに代入する。

多項式等を降冪の順や昇冪の順にならべることができる。ただし、Sinの次数について並べ替えるのは難しい。

基本コマンド plot , plot3d および描画パッケージ plots(パッケージ内に描画用のコマンド群が含まれています。)

基本コマンド plot は、一変数の方程式を曲線で描画します。 例:x^2+3

基本コマンド plot3d は、二変数の方程式を曲面で描画します。 例:x+y

曲線を描画する plot コマンドの基本形は、以下となります

plot(曲線の定義式、x=a..b,options);
曲面を描画する plot3d コマンドの基本形は、以下となります

plot3d(曲面の定義式, x=a..b, y=c..d, options) ;
x,y,z で、陰関数で定義されたグラフの場合は

plots[implicitplot3d](陰関数による曲面の定義式, x=a..b, y=c..d,z=e..f, options)

である。その他に媒介変数表示等も可能だが、それは下の表に纏めます。

 ただし、曲面を描画する場合には、

with(plots):
を予め読み込んでおかねばならない。具体的には、

with(plots):
implicitplot3d(x^2+y^2=1, x=-1..1, y=-1..1)
のようにすればよい。ただし、この場合はzの定義域や、曲面の色やグリッドを指定するためのoptionは省略した(省略しても問題ない)。


また、with(plots):は同じシェルの上で作業する限り一度読み込めば、あとはそのシェルを終了するまで有効なので、  


plot3d(x+y, x=1..2, y=1..2);

別の作業
with(plots):

implicitplot3d(x^2+y^2=1, x=-1..1, y=-1..1);

のように、一度だけ読み込んでその後は読み込む必要がないが、

 


plot3d(x+y, x=1..2, y=1..2);

別の作業

with(plots):
implicitplot3d(x^2+y^2=1, x=-1..1, y=-1..1);

のように、曲面を描くたびに読み込んでも別段問題がない。

基本はこれでよいのだが、現実には『複数の曲面や曲線を同じエリアに描く』あるいは 『予め定義しておいた関数に関するグラフを書く』あるいはその両方を行うことが 単独のグラフを書くことに比べ多いだろう。 そのため、比較的応用範囲が広いプログラムを一つ挙げておこう。以下のプログラムは、 『g(x,y)の定義を行ったうえでそれのグラフとg(x,y)=1についての陰関数を、表示色を変えて同時に表示させる』ものである。

with(plots):
g:=(x,y)->y*exp(-x^2);
p1:=plot3d(g(x,y),x=-3..4,y=-2..4,axes=boxed):
p2:=implicitplot3d(g(x,y)=1,x=-3..4,y=-2..4,z=-2..4,axes=boxed,grid= [15,15,15],style=patchnogrid):
display(p1,p2);
表示するグラフを3つ以上に増やすこともできる

with(plots):
g:=(x,y)->y*exp(-x^2);
p1:=plot3d(g(x,y),x=-3..4,y=-2..4,axes=boxed):
p2:=implicitplot3d(g(x,y)=1,x=-3..4,y=-2..4,z=-2..4,axes=boxed,grid=[15,15,15],style=patchnogrid):
p3:=plot3d(x*y ,x=-3..4,y=-2..4,axes=boxed):
display(p1,p2,p3); 
もちろん、1種類の曲面のみを表すことも、可能である。

with(plots): 
g:=(x,y)->y*exp(-x^2);
p1:=plot3d(g(x,y),x=-3..4,y=-2..4,axes=boxed):
display(p1);

尚、g,p1,p2 等の変数名は好きなように変えてよい。(変更で影響を受ける部分、例えば『display(p1,p2);』等も同時に正しく変更すれば)問題ない。例えば

with(plots):
f:=(x,y)->y*exp(-x^2);
p:=plot3d(g(x,y),x=-3..4,y=-2..4,axes=boxed):
q:=implicitplot3d(f(x,y)=1,x=-3..4,y=-2..4,z=-2..4,axes=boxed,grid= [15,15,15],style=patchnogrid):
display(p,q);

のようにしても何も問題ない。

曲面の形式としては、グラフ(plot3d)、陰関数のグラフ(implicitplot3d)等がある。 その他のものは以下の表に纏める。

微分

diff(f(x),x);
不定積分

int(f(x),x);
積分

int(f(x),x=0..100);
f(x)を定義しなかった場合は、直接x^2などを代わりに入力できる。

マクスウェル分布(マクスウェルぶんぷ、英: Maxwell distribution[1])とは、熱力学的平衡状態において、気体分子の速度が従う分布関数である。マクスウェル=ボルツマン分布(英: Maxwell-Boltzmann distribution[1])と呼ばれることもある。気体分子運動論により導かれたが、より一般化されたボルツマン分布からも導かれる。

通常の静止した気体では、それを構成する分子の速さ v は

f
(
v
)
=
4
π
v
2
(
m
2
π
k
T
)
3
/
2
exp

(

m
v
2
2
k
T
)
{\displaystyle f(v)=4\pi v^{2}\left({\frac {m}{2\pi kT}}\right)^{3/2}\exp \left(-{\frac {mv^{2}}{2kT}}\right)}
確率密度関数とする分布に従う[2][3][4][5]。

ここで m は分子の質量、k はボルツマン定数、T は絶対温度である。この速度分布は、最初に見いだしたイギリスの物理学者J.C.マクスウェルにちなんで、マクスウェル分布と呼ばれる。

気体分子運動論では、成分を vx, vy, vz とする速度ベクトル v について、x 方向の速度成分 vx の分布は、定数項を A として

A
exp

(

m
v
x
2
2
k
T
)
{\displaystyle \mathrm {A} \exp \left(-{\frac {mv_{x}^{2}}{2kT}}\right)}
に従うことが知られており、この式は左右対称なつりがね状の正規分布になる。したがって、定数項 A を求めるには vx に関して積分した値が1になれば良いので[6][5]

A



+

exp

(

m
v
x
2
2
k
T
)
d
v
=
2
A

0
+

exp

(

m
v
x
2
2
k
T
)
d
v
=
1
{\displaystyle \mathrm {A} \int _{-\infty }^{+\infty }\exp \left(-{\frac {mv_{x}^{2}}{2kT}}\right)dv=2\mathrm {A} \int _{0}^{+\infty }\exp \left(-{\frac {mv_{x}^{2}}{2kT}}\right)dv=1}
より、A = √
m
2πkT
となる。したがって、x 方向の速度成分 vx の分布は

f
(
v
x
)
=
m
2
π
k
T
exp

(

m
v
x
2
2
k
T
)
{\displaystyle f(v_{x})={\sqrt {\frac {m}{2\pi kT}}}\exp \left(-{\frac {mv_{x}^{2}}{2kT}}\right)}
となる[6][4]。

また、x, y, z 方向の各速度の分布は互いに独立で、

f
(
v
x
,
v
y
,
v
z
)
=
f
(
v
x
)
f
(
v
y
)
f
(
v
z
)
{\displaystyle f(v_{x},v_{y},v_{z})=f(v_{x})f(v_{y})f(v_{z})}
が成り立つので、方向を指定しない3次元の速さ v の分布は

f
(
v
)
d
v
x
d
v
y
d
v
z
=
(
m
2
π
k
T
)
3
/
2
exp

(

m
(
v
x
2
+
v
y
2
+
v
z
2
)
2
k
T
)
d
v
x
d
v
y
d
v
z
{\displaystyle f(v)dv_{x}dv_{y}dv_{z}=\left({\frac {m}{2\pi kT}}\right)^{3/2}\exp \left(-{\frac {m\left(v_{x}^{2}+v_{y}^{2}+v_{z}^{2}\right)}{2kT}}\right)dv_{x}dv_{y}dv_{z}}
となる[6]。ここで、dvxdvydvz は半径 v で厚さ dv の球殻の体積に相当するので、4πv2dv となり[3][5]、またスカラー量である速さ v の大きさは v = √v 2
x + v 2
y + v 2
z なので、マクスウェル分布は

f
(
v
)
d
v
=
4
π
v
2
(
m
2
π
k
T
)
3
/
2
exp

(

m
v
2
2
k
T
)
d
v
{\displaystyle f(v)dv=4\pi v^{2}\left({\frac {m}{2\pi kT}}\right)^{3/2}\exp \left(-{\frac {mv^{2}}{2kT}}\right)dv}
より

f
(
v
)
=
4
π
v
2
(
m
2
π
k
T
)
3
/
2
exp

(

m
v
2
2
k
T
)
{\displaystyle f(v)=4\pi v^{2}\left({\frac {m}{2\pi kT}}\right)^{3/2}\exp \left(-{\frac {mv^{2}}{2kT}}\right)}
となる[2][3][4][5]。

分子の質量が大きく温度が低いほど分布は密になり、分子の質量が小さく温度が高いほど分布は疎になる。

マクスウェル分布からは3種類の速度が導出される。

まず1つ目の速度が英語で"The most probable speed"と呼ばれる速度で、日本語では「最大確率速度[5]」や「最確速度[3][7]」などと呼ばれるものであり、記号で vmp と表される。これは、マクスウェル分布の最頻値であり、グラフのピークを求めれば良いので[3]

d
d
v
f
(
v
)
=
0
{\displaystyle {\frac {d}{dv}}f(v)=0}
より[8]

v
m
p
=
2
k
T
m
{\displaystyle v_{\mathrm {mp} }={\sqrt {\frac {2kT}{m}}}}
となる[3][8][9]。

次に求められる速度が平均速度 v である。これはマクスウェル分布の期待値なので

v
¯
=

v

=

0

v
f
(
v
)
d
v
=
8
k
T
π
m
=
2
π
v
m
p
{\displaystyle {\overline {v}}=\langle v\rangle =\int _{0}^{\infty }vf(v)dv={\sqrt {\frac {8kT}{\pi m}}}={\frac {2}{\sqrt {\pi }}}v_{\mathrm {mp} }}
となる[3][8][9]。

最後に求められる速度が根二乗平均速度 vrms である。これはマクスウェル分布のモーメントなので

v
r
m
s
=

v
2

=

0

v
2
f
(
v
)
d
v
=
3
k
T
m
=
3
2
v
m
p
{\displaystyle v_{\mathrm {rms} }={\sqrt {\langle v^{2}\rangle }}={\sqrt {\int _{0}^{\infty }v^{2}f(v)dv}}={\sqrt {\frac {3kT}{m}}}={\sqrt {\frac {3}{2}}}v_{\mathrm {mp} }}
となる[8]。

また、これら3つの速度の比は

v
m
p
:
v
¯
:
v
r
m
s
=
1
:
2
π
:
3
2
=
1
:
1.128
:
1.225
{\displaystyle v_{\mathrm {mp} }:{\overline {v}}:v_{\mathrm {rms} }=1:{\frac {2}{\sqrt {\pi }}}:{\sqrt {\frac {3}{2}}}=1:1.128:1.225}
と表される[9]。

根二乗平均速度(こんにじょうへいきんそくど、英: root-mean-square speed)とは、速度の絶対値の二乗平均平方根、すなわち速度の大きさの二乗 v 2 の統計集団平均

v
2

\langle v^{2}\rangle の平方根

v
2

{\sqrt {\langle v^{2}\rangle }} である。 ここで速度 v の大きさ v は v の内積によって定められる。

v
=
|
v
|
:=
v

v
.
v=|{\boldsymbol {v}}|:={\sqrt {{\boldsymbol {v}}\cdot {\boldsymbol {v}}}}\,.
根二乗平均速度は気体分子運動論などの議論において現れる。

速度の分散
|
σ
(
v
)
|
2
|\sigma ({\boldsymbol {v}})|^{2} は速度の平均

v

\langle {\boldsymbol {v}}\rangle と速度の二乗平均

v
2

\langle v^{2}\rangle を用いて以下のように書き表すことができる。

|
σ
(
v
)
|
2
=

v
2



v



v

.
|\sigma ({\boldsymbol {v}})|^{2}=\langle v^{2}\rangle -\langle {\boldsymbol {v}}\rangle \cdot \langle {\boldsymbol {v}}\rangle \,.
もしも速度の平均

v

\langle {\boldsymbol {v}}\rangle が 0 ならば、二乗平均

v
2

\langle v^{2}\rangle は分散と一致する。 このとき根二乗平均速度

v
2

{\sqrt {\langle v^{2}\rangle }} は速度のゆらぎの大きさ
|
σ
(
v
)
|
|\sigma ({\boldsymbol {v}})| に等しい。


v
2

=
|
σ
(
v
)
|
(

v

=
0
)
.
{\sqrt {\langle v^{2}\rangle }}=|\sigma ({\boldsymbol {v}})|\quad (\langle {\boldsymbol {v}}\rangle ={\boldsymbol {0}}).
従って根二乗平均速度から、巨視的な流れがないような系において、熱的なゆらぎに起因する速度の大きさを評価することができる。

気体分子運動論における、単原子分子の二乗平均速度は次のように表される。


v
2

=
3
R
T
M
.
{\sqrt {\langle v^{2}\rangle }}={\sqrt {\frac {3RT}{M}}}\,.
ここで、R ≈ 8.314 J/(K · mol) は気体定数、T は熱力学温度、M は分子量である。 ボルツマン定数 k B ≈ 1.381 × 10-23 J/K とアヴォガドロ定数 N A ≈ 6.022 × 1023 /mol, および分子質量 m を用いると、ボルツマン定数と分子量の定義より、

R
=
k
B
N
A
,
M
=
m
N
A
R=k_{{\mathrm {B}}}N_{{\mathrm {A}}},\quad M=mN_{{\mathrm {A}}}
という関係が成り立つので、以下のように書き直される。


v
2

=
3
k
B
T
m
.
{\sqrt {\langle v^{2}\rangle }}={\sqrt {\frac {3k_{{\mathrm {B}}}T}{m}}}\,.
この関係から直ちに、1 単原子分子が持つ平均の運動エネルギーは温度に比例することが分かる。


1
2
m
v
2

=
3
2
k
B
T
.
\langle {\frac {1}{2}}mv^{2}\rangle ={\frac {3}{2}}k_{{\mathrm {B}}}T\,.

単原子分子の理想気体の内部エネルギー U (T ) は以下の関係を満たす。

U
(
T
)
=
3
2
n
R
T
.





(
1
)
U(T)={3 \over 2}nRT\,.~~\cdots ~~(1)
ここで n は系のモル数である。これをボルツマン定数 k B と気体分子の個数 N を用いて書き直せば、n = N/N A なので、

U
(
T
)
=
3
2
N
k
B
T





(
2
)
U(T)={3 \over 2}Nk_{{\mathrm {B}}}T~~\cdots ~~(2)
となる。理想気体の持つエネルギーは気体分子の持つエネルギーの総和に等しく、気体分子の持つエネルギーは運動エネルギーのみなので、次の関係を満たす。

U
(
T
)
=
N

1
2
m
v
2

.





(
3
)
U(T)=N\langle {\frac {1}{2}}mv^{2}\rangle \,.~~\cdots ~~(3)
(2), (3) の右辺同士を比較すれば、

N

1
2
m
v
2

=
3
2
N
k
B
T
N\langle {\frac {1}{2}}mv^{2}\rangle ={3 \over 2}Nk_{{\mathrm {B}}}T
より、根二乗平均速度と温度の関係式が得られる。


v
2

=
3
k
B
T
m
.





(
4
)

最大エントロピー原理(さいだいエントロピーげんり、英: Principle of maximum entropy)は、認識確率分布を一意に定めるために利用可能な情報を分析する手法である。この原理を最初に提唱したのは E.T. Jaynes である。彼は1957年に統計力学のギブズ分布を持ち込んだ熱力学(最大エントロピー熱力学(英語版))を提唱した際に、この原理も提唱したものである。彼は、熱力学やエントロピーは、情報理論や推定の汎用ツールの応用例と見るべきだと示唆した。他のベイズ的手法と同様、最大エントロピー原理でも事前確率を明示的に利用する。これは古典的統計学における推定手法の代替である。

今確率変数 X について、 X が条件 I を満たす事だけが分かっており、それ以外に X に関して何1つ知らなかったとする。このとき、 X が従う分布はどのようなものであると仮定するのが最も自然であろうか。今我々は X について条件 I 以外には何も知らないのだから、条件 I の下で X の「不確かさ」が最大になるような分布を選ぶのが適切だと思われる。

最大エントロピー原理は、「不確かさ」を図る尺度であるエントロピーを条件 I の下で最大にするよう分布を選ぶべきである、という原理である。ただし X の取る値が連続的な場合は、技術的な理由によりdifferential entropyではなく、後述の相対エントロピーを最大化する(Jaynesによれば、様々な理由により、こちらの方が「真の」エントロピーの概念である。)。

X が従う確率分布を
p
\mathbf {p} とするとき、束縛条件 I として

g
k
(
p
)
=
0





k
=
1
,
2
,

g_{k}(\mathbf {p} )=0~~~~~k=1,2,\ldots \,
のように
p
\mathbf {p} に関する方程式の形で書けているものを考える。このような制限付き最適化問題は一般にラグランジュの未定乗数法で解くことが出来る。

制約条件 I により、エントロピーを最大化する分布は以下のようになる:

X が区間[a,b]にある事だけが分かっている⇒
X
Xは[a,b]上の一様分布
X の平均
μ
\mu と分散
σ
2
\sigma ^{2} だけが分かっている⇒ X は平均
μ
\mu 、分散
σ
2
\sigma ^{2} の正規分布
X が正値で平均
μ
\mu である事だけが分かっている⇒平均
μ
\mu の指数分布
X の値域が有限集合
x
1
,

,
x
n
{x_{1},\ldots ,x_{n}} で平均が
μ
\mu である事だけが分かっている⇒
Pr

(
X
=
x
k
)
=
C
r
x
k
for
k
=
1
,

,
n
\operatorname {Pr} (X=x_{k})=Cr^{x_{k}}\quad {\mbox{ for }}k=1,\ldots ,n という形の分布。

ラグランジュの未定乗数法(ラグランジュのみていじょうすうほう、英: method of Lagrange multiplier)とは、束縛条件のもとで最適化を行うための数学(解析学)的な方法である。いくつかの変数に対して、いくつかの関数の値を固定するという束縛条件のもとで、別のある1つの関数の極値を求めるという問題を考える。各束縛条件に対して定数(未定乗数、Lagrange multiplier)を用意し、これらを係数とする線形結合を新しい関数(未定乗数も新たな変数とする)として考えることで、束縛問題を普通の極値問題として解くことができる方法である。

n 次元空間の点x = (x1, ... ,xn ) のある領域R を定義域とする被評価関数z = f (x ) が、同じ領域を定義域とするm 次元ベクトル値関数

G
(
x
)
=
(
g
1
(
x
1
,…,
x
n
) ⋮
g
m
(
x
1
,…,
x
n
)
)
=
0
(
1
)
{\boldsymbol {G}}({\boldsymbol {x}})={\begin{pmatrix}g_{1}(x_{1},\dots ,x_{n})\\\vdots \\g_{m}(x_{1},\dots ,x_{n})\end{pmatrix}}={\boldsymbol {0}}\qquad (1)

のもとで、R 内の点x において極値をとるための必要条件は、その点におけるf の勾配ベクトル


f
=
t
(

f

x
1
,…,

f

x
n
)
\nabla f=^{t}{\begin{pmatrix}{\frac {\partial f}{\partial x_{1}}},\dots ,{\frac {\partial f}{\partial x_{n}}}\end{pmatrix}}

が、その点で、m 個のgi それぞれの勾配ベクトルが張るm 次元線型部分空間に含まれること、すなわち、スカラーの組 λ = (λ1, ... ,λm ) を用いて、


f
=

i
=
1
m
λ
i

g
i
(
2
)
\nabla f=\sum _{i=1}^{m}\lambda _{i}\nabla g_{i}\qquad (2)

が成り立つことである。移項して∇を取れば、

f
(
x
)


i
=
1
m
λ
i
g
i
(
x
)
f({\boldsymbol {x}})-\sum _{i=1}^{m}\lambda _{i}g_{i}({\boldsymbol {x}})

が停留点をとることである。ただし、{∇g1, ... ,∇gm } は一次独立、すなわち

dim

(

g
1
,

,

g
m
)
=
m
\dim(\nabla g_{1},\dots ,\nabla g_{m})=m

でなければならない。式(1)のm 本と式(2)のn 本の式を連立させて、x とλの(n +m ) 個の未知数について解けば、f の極値を与える候補点が得られる[2]。