「演算 (数学)」の版間の差分
FlatLanguage (会話 | 投稿記録) m FlatLanguage がページ「算法」を「演算 (数学)」に移動しました: 改名提案による: ノート:算法#改名と分割と統合の提案_(2024年2月4日)を参照 |
FlatLanguage (会話 | 投稿記録) タグ: 曖昧さ回避ページへのリンク |
||
111行目: | 111行目: | ||
[[Category:代数的構造|さんほう]] |
[[Category:代数的構造|さんほう]] |
||
[[Category:数学に関する記事|さんほう]] |
[[Category:数学に関する記事|さんほう]] |
||
[[数学]]的には、基本的には、[[関数 (数学)|関数]](単項演算子では1引数の関数、2項演算子は2引数の関数)をあらわすある種の[[糖衣構文]]のようなものに過ぎない。しかし、[[汎函数計算]]など、演算子を操作するような手法もある。 |
|||
== 形式的分類 == |
|||
{{seealso|アリティ}} |
|||
=== 単項演算子 === |
|||
{{see also|単項演算}} |
|||
'''単項演算子'''({{lang-en-short|unary operator}})とは、被演算子が一つだけの演算を表す演算子。その記法には、通常は被演算子の前に単項演算子を置く[[前置記法]](ポーランド記法)を用い、被演算子を明示するための括弧 "( )" を伴うことも多い。 |
|||
代表的な単項演算子として、以下がある。 |
|||
・[[平方根]]を表す[[根号]] "√<span style="texr-decoration:overline"> </span>" <ref group="注">次数を[[添字記法|添字]]とし、一般の[[冪根]]を表す場合の根号は二項演算子である。</ref> |
|||
・負を表す(減算ではない)[[マイナス記号|負符号]](例: −3) |
|||
・[[絶対値]]を表す2本の[[縦線]](例: |''x''|) |
|||
・[[階乗]]を表す[[感嘆符]](例: ''n''!)(例外的に[[後置記法]]で書く) |
|||
[[関数 (数学)|関数]] ''f''(''x'') の "''f''( )" も単項演算子であり、符牒となる文字列 "''f''" を'''関数子'''などと呼ぶ場合もある。関数子としては任意の文字列を使用することができ、代表的なものとして[[三角関数]] "sin", "cos", "tan" などが挙げられる。微分作用素の "''d''/''dx''" または "''D''" や、差分作用素 "Δ" も単項演算子である。関数に対する「′」も微分作用素である。例えば''f''(''x'')の微分を''f''′(''x'')と表せる。 また、定数 ''a'' を与えるごとに(''a'' が代入可能である限りにおいて)[[対数関数]] log<sub>''a''</sub> ''x'' が考えられるが、このとき log<sub>''a''</sub> は定数一つを含む形で単項演算子として働く(そのような場合、''a'' は ''[[自然対数|e]]'' や ''[[常用対数|10]]'' などに固定されているため、文脈上明らかな場合は省略を受け、単に log と記して扱われることも少なくはない)。ただし、仮に ''a'' をも変化させて扱うならば log<sub>''a''</sub> ''x'' なる式において log は二つの被演算子 ''a'' と ''x'' を持つ二項演算子(後述)と解されることになる。 |
|||
=== 二項演算子 === |
|||
{{see also|二項演算}} |
|||
'''二項演算子'''({{lang-en-short|binary operator}})とは、二つの被演算子から一つの結果を得る演算を表す演算子。数学での写像を表現するのに通常は[[前置記法]]で書くのに対して、二項演算子は[[中置記法]]で書くことが多い。つまり、"''k'' + 3" のように演算子を二つの被演算子の中間に置く。 |
|||
[[二項演算]]を2変数の関数として、''B''(·, ·) のように関数子と括弧とコンマを用いた形式で(「·」の位置にそれぞれ適当な被演算子を配置して)表すこともしばしばある。このような形式で被演算子を併記する方法では二項以上の多項演算も表現することができる。明示的な関数子をもたない場合もあり、例えば[[内積]] "<·, ·>", 微分作用素([[リー代数]])の括弧積(リーのブラケット)"[·, ·]", [[ハミルトン力学|ポアソン括弧]] "{·, ·}", [[ルジャンドル記号]] "(· / ·)" などが挙げられる。これらは複数の記号で一つの演算子の働きをする。また、例えば[[二項係数]]の2種類の記法 |
|||
:<math>{}_\bullet{\rm C}_{\bullet},\quad {\bullet \choose \bullet}</math> |
|||
のように、一つの演算に対して複数の異なる記法の(場合によっては形式も異なる)演算子が用いられていることもある。 |
|||
=== 多項演算子 === |
|||
二項演算子における記法の多くはそれ以上の任意有限個の被演算子を持つ演算子に対しても、引数を列記する方法を与えるなどの適当な方法で拡張を受ける。さらに、[[添字集合]]を適当に指定することによって複数(一般には無限個)の被演算子を一つの被演算子に見立てることも有限的な記述には効果的である。それによって無限個の被演算子を持つ演算子に有限項演算の記法を援用することが可能になる。また、このとき与えた添字もやはり被演算子と解釈することが可能である。 |
|||
また、前述の log に対する記述とまったく同じ理屈を逆に考えれば、二項演算子のとる二つの被演算子のうち一つを固定する(代入可能な値を代入する)ならば、それによって新たに単項演算子が得られる(あるいは固定する被演算子を添字とする単項演算子の族が得られる)ということが理解される。同様にして、多くの被演算子を持つ多項演算子のうち一つあるいは複数の被演算子を固定することによって、与えられた多項演算子をより制限された数の被演算子を持つ演算子族と読みかえることができる([[カリー化]])。 |
|||
== 意味的分類 == |
|||
=== 算術演算子 === |
|||
[[算術|四則演算]]のたぐいを表す演算子、たとえば和を表す "+" や積を表す "×" などは二項演算子である。算術演算においては多くの場合、二つの被演算子はひとつの代数系から取られた同種のものであり、結果も同種であることが多い。 |
|||
=== 関係演算子 === |
|||
{{Main|関係演算子}} |
|||
二つの被演算子の[[二項関係|関係]]を示す記号のことを'''関係子'''という。関係子を、二つの被演算子の関係が真であるか偽であるかを判定する演算を表す演算子とみなすとき、'''関係演算子'''という。[[数理論理学]]では、関係演算は二つの数式から[[真理値]](ブール値)を得る演算とみなされる。関係演算子もその多くが二項演算子として機能することから中置記法で記されることが多い。 |
|||
[[等式|等号]] "=", [[不等式|不等号]] "<", ">", "≤", "≥", "≠", [[平行]]記号 "∥", [[垂直]]記号 "⊥" などが関係演算子である。 |
|||
=== 論理演算子 === |
|||
数理論理学における'''論理演算子'''は、被演算子の真理値(真・偽)に対する[[論理積]] "∧" や[[論理和]] "∨" などの[[論理演算]]を表し、中置記法で書くことが多い。([[否定]]を表す前置の単項演算子 "¬" もある。) |
|||
* 数学 |
|||
** [[写像]] |
|||
** [[算法]] |
|||
** [[単項演算]] |
|||
** [[二項演算]] |
|||
** [[三項演算子]] |
|||
** [[数学記号の表]] |
|||
[[Category:代数学]] |
|||
[[Category:数学の表記法]] |
|||
[[Category:数学に関する記事]] |
2024年2月11日 (日) 23:44時点における版
この記事には独自研究が含まれているおそれがあります。 |
n 項演算(エヌこうえんざん、n-ary operation)は、集合の用語で説明すると、集合 A の直積集合 An の部分集合 D から A への写像であり、ここではそれを f とする。またこの D を定義域という。 n は任意の順序数でよい。これを(仮に)f の項数とよぶ。 An は、 i < n をみたす順序数 i を添数とする A の元の族 (ai)i<n [注 1]すべてからなる集合を表す。 集合 A とそこにおける演算の族 R との組 (A, R) を代数系という。
この記事では以下これを「算法」と呼んでいる(理由は最後の節を参照)。"operation" の訳としては他に「作用」もあり[1]、 "operator" を「演算子」ではなく「作用素」とするのはその流儀である。他言語において相互に連想されるような語が使われている場合、日本語訳としてもそれに対応するような語が選べれば望ましいが、難しい場合も多い。
他の「算法」の語については、(曖昧さ回避記事となっている)算法 (数学) の記事を参照。
全域的算法
通常は、D = An の場合を考えることが多く、そういう算法 f を(仮に)全域的算法とよぶ。 また、n が有限順序数の場合を考えることが多い。 その場合、An は A の n 個の元の組み (a0, a1, ..., an−1) の全体であって、f によってこれをうつしたものは f(a0, a1, ..., an−1) と書くことができる。 しかしさらに、n = 2 の場合を考えることが多く、この場合、 f(a0, a1) を a0 f a1 とか a0 a1 f とか書くことが多い。
従って、全域的な 2 項算法とは、A の元の二つ組み (a, b) の各々に A の何らかの元を対応させる写像のことである。
例えば、二つの実数 a, b にその和 a + b を対応させる写像は、実数すべての集合における全域的 2 項算法であって、和の記号 + はこの算法(すなわち加法)の上記二番目の記法 a0 f a1 の f に当たるものと解される。 加法は普通の中置記法では a + b と書くが、逆ポーランド記法では a b + と書く。 これは、上記の a0 a1 f という記法に当たるものと解される。 実数の減法・乗法・除法についても同様である。 ただし除法は、0 で割ることができないから、全域的ではない。
1 項算法も珍しくはない。 例えば、複素数にその共役複素数を対応させる写像は 1 項算法である。 また、体 K 上の線型空間 V においては、 K の任意の元 a と V の任意の元 v に対して V の元 av が存在するが、これは、K を添数集合とする V の 1 項算法族 (fa)a∈K があって fav を av で表していると解される。 こう考えれば、例えば環 R 上の加群 M における R の元の M への作用のような「外的算法」は、すべて 1 項算法とみなされる。 なお、1 項算法は単項算法とよぶ方が語呂がいい。
非全域的算法
非全域的(あるいは局所的)な算法も珍しくはない。 例えば、あらゆるサイズの行列の全体を M で表すとき、M の二元 A, B にその和 A + B を対応させる写像は M における 2 項算法であるが、A, B が同サイズのときにしか A + B が定義されないから、非全域的算法である。 A, B にその積 AB を対応させる写像も M における 2 項算法であるが、A の列の個数と B の行の個数が等しいときにしか AB が定義されないから、やはり非全域的算法である。
形式言語における算法は、非全域的のものが一般的である。 例えば、述語言語(論理式と項とから成る)における論理記号は、論理式に対してのみ適用可能な 2 項または 1 項の非全域的算法を表すと解される。
項数が 2 より多い非全域的算法も珍しくはない。 例えば、述語言語における n 変数関数記号や n 変数述語記号は、項に対してのみ適用可能な n 項算法を表すと解される。
超限的な項数を持つ算法
超限順序数を項数とする算法もある。 例えば、最小の超限順序数(非負整数の全体の順序型)を ω で表し、実数の全体を R で表すと、直積 Rω は実数列 a0, a1, ... の全体であるが、収束する実数列にその極限を対応させる写像は、非全域的の ω 項算法である。 数列の極限をこのように ω 項算法とみなすことには効用もある。 たとえば、数列の極限の ε-n 式定義を ω 項算法の代数的条件によって書き換えて、極限を公理化することができる。 つまり、R における次の六条件をみたす ω 項算法 L が極限に他ならない。
- L(a, a, ...) = a
- L(a1, a2, ...) = a, L(b1, b2, ...) = b, an ≤ bn (n=1,2,...) なら a ≤ b
- L(a1, a2, ...) = a なら a1, a2, ... の任意の部分列 b1, b2, ... に対して L(b1, b2, ...) = a
- (はさみうちの原理)L(a1, a2, ...) = L(b1, b2, ...) = a, an ≤ cn ≤ bn (n=1,2,...) なら L(c1, c2, ...) = a
- (アルキメデスの原理)L(a±(1/1), a±(1/2), a±(1/3), ...) = a (複号同順)
- a1, a2, ... の任意の部分列 b1, b2, ... に L(c1, c2, ...) = a なる部分列 c1, c2, ... があれば L(a1, a2, ...) = a
大学 1, 2 年次の学生や高校生に「行列の算法は非全域的算法である」とか「極限は ω 項算法である」とか教えるのは勧められないが、数理科学者がそういうことを認識するのは、視野が広がるので好ましいであろう。
算法概念の拡張
冒頭に定義したとおり、f が集合 A における n 項算法であるとは、f が An のある部分集合 D から A への写像であることをいう。 そうすると f は、An×A の部分集合 {((x1, ... , xn), y) | (x1, ... , xn)∈D, f(x1, ... , xn) = y } と同一視される。 従って、もしも f, g, ... が n 項算法なら、それらの集合としての和を考えることができる。 しかし一般には、f を動かせば、それに応じて n も動く。 そこで、より一般に、An (n = 0, 1, 2, ... < ω) の集合としての直和を A* で表し、A* × A の部分集合 R のことまでも算法とよぶことにする。 ただしこういう広義 の算法については、α ∈ A* と y ∈ A とが (α, y) ∈ R をみたすことを通常の算法のように R(α) = y と書き表すことはできず、α R y と書かなければならない。 一つの α ∈ A* に対して (α, y) ∈ R をみたす y が唯一つとは限らないからである。 この意味でこれは、もはや算法ではなく(やはり広義の )関係とよぶべきかもしれない。
こういう広義の算法・関係は、数理論理学にしばしば現れる。 例えば述語言語 A において、意味写像 f * の下で inf {f *(a1), ... , f *(an)} ≤ f *(b) をみたす論理式 a1, ... , an, b (n は任意)から出来る A*×A の元 ((a1, ... , an), b) の全体を R で表せば、これは上記の意味での広義の算法・関係である。
このように算法の概念と関係の概念をともに拡張して統合すると、算法と関係とを統一的に扱うことができて極めて有効である。
命名について
算法を「演算」とよぶことも多い。 しかし、ここで考えた「算法の概念」の名前としては、「算法」も「演算」も相応しくはないであろう。 「算法」は「計算の規則」あるいは「計算の方法」を連想させ、「演算」は「計算を演ずるという行為」を連想させ、ともに「写像」としての「算法の概念」を連想させにくい。 一つの写像に対しても、それの「計算の方法」は一般に複数あり、「計算する方法」も「計算の規則」も具体的に記述できない場合さえあり、人や機械が「計算を演ずるという行為」はもちろん写像とは異なるからである。 「写像」という概念が未発達で「計算」と「計算の仕方」の違いも曖昧であった時代に生まれた「算法」とか「演算」とかの言葉を用いるのが間違っているのであろう。
冒頭に記したとおり、計算機科学の分野ではアルゴリズムを「算法」とよぶこともあり、その場合には上記の意味での「算法」は「演算」とよぶ方がよいかもしれない。 しかし数学の分野では、上記の意味での「算法」という術語も昔から定着している[要出典]。 むしろアルゴリズムを「算法」ではなく「計算手順」とする方が、意味からいっても先例を尊ぶ点でも、好ましいであろう。
注釈
出典
- ^ 高橋伯也『新装版英和学習基本用語辞典数学: 海外子女・留学生必携』アルク、2009年1月1日。ISBN 978-4-7574-1518-8 。
関連項目
数学的には、基本的には、関数(単項演算子では1引数の関数、2項演算子は2引数の関数)をあらわすある種の糖衣構文のようなものに過ぎない。しかし、汎函数計算など、演算子を操作するような手法もある。
形式的分類
単項演算子
単項演算子(英: unary operator)とは、被演算子が一つだけの演算を表す演算子。その記法には、通常は被演算子の前に単項演算子を置く前置記法(ポーランド記法)を用い、被演算子を明示するための括弧 "( )" を伴うことも多い。
代表的な単項演算子として、以下がある。
・負を表す(減算ではない)負符号(例: −3)
関数 f(x) の "f( )" も単項演算子であり、符牒となる文字列 "f" を関数子などと呼ぶ場合もある。関数子としては任意の文字列を使用することができ、代表的なものとして三角関数 "sin", "cos", "tan" などが挙げられる。微分作用素の "d/dx" または "D" や、差分作用素 "Δ" も単項演算子である。関数に対する「′」も微分作用素である。例えばf(x)の微分をf′(x)と表せる。 また、定数 a を与えるごとに(a が代入可能である限りにおいて)対数関数 loga x が考えられるが、このとき loga は定数一つを含む形で単項演算子として働く(そのような場合、a は e や 10 などに固定されているため、文脈上明らかな場合は省略を受け、単に log と記して扱われることも少なくはない)。ただし、仮に a をも変化させて扱うならば loga x なる式において log は二つの被演算子 a と x を持つ二項演算子(後述)と解されることになる。
二項演算子
二項演算子(英: binary operator)とは、二つの被演算子から一つの結果を得る演算を表す演算子。数学での写像を表現するのに通常は前置記法で書くのに対して、二項演算子は中置記法で書くことが多い。つまり、"k + 3" のように演算子を二つの被演算子の中間に置く。
二項演算を2変数の関数として、B(·, ·) のように関数子と括弧とコンマを用いた形式で(「·」の位置にそれぞれ適当な被演算子を配置して)表すこともしばしばある。このような形式で被演算子を併記する方法では二項以上の多項演算も表現することができる。明示的な関数子をもたない場合もあり、例えば内積 "<·, ·>", 微分作用素(リー代数)の括弧積(リーのブラケット)"[·, ·]", ポアソン括弧 "{·, ·}", ルジャンドル記号 "(· / ·)" などが挙げられる。これらは複数の記号で一つの演算子の働きをする。また、例えば二項係数の2種類の記法
のように、一つの演算に対して複数の異なる記法の(場合によっては形式も異なる)演算子が用いられていることもある。
多項演算子
二項演算子における記法の多くはそれ以上の任意有限個の被演算子を持つ演算子に対しても、引数を列記する方法を与えるなどの適当な方法で拡張を受ける。さらに、添字集合を適当に指定することによって複数(一般には無限個)の被演算子を一つの被演算子に見立てることも有限的な記述には効果的である。それによって無限個の被演算子を持つ演算子に有限項演算の記法を援用することが可能になる。また、このとき与えた添字もやはり被演算子と解釈することが可能である。
また、前述の log に対する記述とまったく同じ理屈を逆に考えれば、二項演算子のとる二つの被演算子のうち一つを固定する(代入可能な値を代入する)ならば、それによって新たに単項演算子が得られる(あるいは固定する被演算子を添字とする単項演算子の族が得られる)ということが理解される。同様にして、多くの被演算子を持つ多項演算子のうち一つあるいは複数の被演算子を固定することによって、与えられた多項演算子をより制限された数の被演算子を持つ演算子族と読みかえることができる(カリー化)。
意味的分類
算術演算子
四則演算のたぐいを表す演算子、たとえば和を表す "+" や積を表す "×" などは二項演算子である。算術演算においては多くの場合、二つの被演算子はひとつの代数系から取られた同種のものであり、結果も同種であることが多い。
関係演算子
二つの被演算子の関係を示す記号のことを関係子という。関係子を、二つの被演算子の関係が真であるか偽であるかを判定する演算を表す演算子とみなすとき、関係演算子という。数理論理学では、関係演算は二つの数式から真理値(ブール値)を得る演算とみなされる。関係演算子もその多くが二項演算子として機能することから中置記法で記されることが多い。
等号 "=", 不等号 "<", ">", "≤", "≥", "≠", 平行記号 "∥", 垂直記号 "⊥" などが関係演算子である。
論理演算子
数理論理学における論理演算子は、被演算子の真理値(真・偽)に対する論理積 "∧" や論理和 "∨" などの論理演算を表し、中置記法で書くことが多い。(否定を表す前置の単項演算子 "¬" もある。)
引用エラー: 「注」という名前のグループの <ref>
タグがありますが、対応する <references group="注"/>
タグが見つかりません