Warning: Undefined variable $type in /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php on line 3
Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/users/1/sub.jp-asate/web/wiki/includes/json/FormatJson.php on line 297
Warning: Trying to access array offset on value of type bool in /home/users/1/sub.jp-asate/web/wiki/includes/Setup.php on line 660
Warning: session_name(): Session name cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/Setup.php on line 834
Warning: ini_set(): Session ini settings cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/session/PHPSessionHandler.php on line 126
Warning: ini_set(): Session ini settings cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/session/PHPSessionHandler.php on line 127
Warning: session_cache_limiter(): Session cache limiter cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/session/PHPSessionHandler.php on line 133
Warning: session_set_save_handler(): Session save handler cannot be changed after headers have already been sent in /home/users/1/sub.jp-asate/web/wiki/includes/session/PHPSessionHandler.php on line 140
Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/users/1/sub.jp-asate/web/wiki/languages/LanguageConverter.php on line 773
Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/Feed.php on line 294
Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/Feed.php on line 300
Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/WebResponse.php on line 46
Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/WebResponse.php on line 46
Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/WebResponse.php on line 46 https:///mymemo.xyz/wiki/api.php?action=feedcontributions&user=133.86.108.32&feedformat=atomminiwiki - 利用者の投稿記録 [ja]2024-04-19T12:16:57Z利用者の投稿記録MediaWiki 1.31.0岩波数学辞典2018-01-26T21:29:11Z<p>133.86.108.32: /* 経緯 */</p>
<hr />
<div>『'''岩波数学辞典'''』(いわなみすうがくじてん)とは、[[岩波書店]]発行、[[日本数学会]]編集の、[[数学]]についての辞典(事典)。数学の各分野についての項目が記述されている。<br />
<br />
== 経緯 ==<br />
岩波書店の委託により、日本数学会が辞典の編集に着手し、1954年に初版が発行された。その後、1960年に増訂版を発行。1968年に第2版を発行。1985年に第3版を発行。2007年に第4版を発行。序文の署名者は、初版、第1版増訂版、第2版は[[彌永昌吉]]、第3版は[[伊藤清]]、第4版は[[服部晶夫]]である。<br />
<br />
また、海外でも翻訳がなされて、"[[:en:Encyclopedic Dictionary of Mathematics|Encyclopedic Dictionary of Mathematics]]" (Editor : The Mathematical Society of Japan) として[[:en:MIT Press]]から発行された。その初版は日本語版第2版を翻訳したもので1980年に発行された。第2版は日本語版第3版を翻訳したもので1993年に発行された。<br />
<br />
== 内容 ==<br />
一線の研究者300~400人の執筆による中項目辞典。「辞典」と題されているが「事典」とみなすこともできる。項目数は第1版593、第2版436、第3版450、第4版515。本文のページ数は、第1版改訂版は685ページ、第2版は885ページ、第3版は1347ページ、第4版は1680ページ。最新の第4版では、索引なども含めたページ数は1976ページ。<br />
<br />
数学の各分野において、それぞれの事項が簡潔に記述されている。定理の証明などはついていない。高校生や一般向けではなく、数学や数学関連分野専攻の大学生以上向けと考えられる。<br />
<br />
=== 索引と配置 ===<br />
第2版まで、本文項目と和文索引は、日本語の[[ローマ字]]表記のアルファベット順に配置されていた。五十音順への要望が多かったため、第3版から配置順、和文索引とも五十音順に変更された。<br />
<br />
和文索引の他に、欧文索引、人名索引が存在する。また、第3版まではロシア語索引があったが、第4版では削除された。<br />
<br />
=== 付録 ===<br />
本文項目の後、索引の前に、公式集・数表集が付属する。<br />
<br />
=== CD-ROM ===<br />
第4版ではCD-ROMが添付された。第4版のCD-ROMには、第3版の画像取り込みPDF、第4版の内容PDFが収録されている。<br />
<br />
== 参考文献 ==<br />
*『岩波数学辞典 第4版』、日本数学会編、岩波書店、2007年、ISBN 978-4-00-080309-0。<br />
*『岩波数学辞典 第2版』、日本数学会編、岩波書店。1968年。<br />
*『岩波数学辞典』、日本数学会編、岩波書店、1954年4月20日印刷発行。※ 初版、定価1200円。発売日は広告では4月27日だがどうも5月4日になった様子。<br />
<br />
==外部リンク==<br />
*[http://www.iwanami.co.jp/moreinfo/0803090/top.html 岩波書店の同書解説ページ]<br />
*[http://mathsoc.jp/publication/dictionary/ 日本数学会の数学辞典についてのページ。正誤表あり。]<br />
<br />
{{デフォルトソート:いわなみすうかくしてん}}<br />
[[Category:日本の辞典]]<br />
[[Category:数学に関する記事]]<br />
[[Category:数学の辞典類]]</div>133.86.108.32ALGOL2018-01-05T14:59:26Z<p>133.86.108.32: /* 参考文献 */</p>
<hr />
<div>{{Otheruses|プログラミング言語|[[ペルセウス座]]のβ星|アルゴル}}<br />
{{Infobox プログラミング言語<br />
|name = {{lang|en|ALGOL}}<br />
|paradigm = [[手続き型プログラミング|手続き型]]、[[命令型プログラミング|命令型]]、[[構造化プログラミング|構造化]]<br />
| year = 1958年<br />
| designer = {{仮リンク|フリードリッヒ・L・バウアー|en|Friedrich L. Bauer|label=バウアー}}、 [[ハインツ・ルティシュハウザー|ルティシュハウザー]]、 {{仮リンク|クラウス・サメルソン|en|Klaus Samelson|label=サメルソン}}、 [[ジョン・バッカス|バッカス]]、 [[アラン・パリス|パリス]]、 [[ピーター・ナウア|ナウア]]、 {{仮リンク|アドリアン・ファン・ワインハールデン|en|Adriaan van Wijngaarden|label=ファン・ワインハールデン}}、 [[ジョン・マッカーシー|マッカーシー]]他<br />
|typing = 強い[[静的型付け]]<br />
|dialects = {{lang|en|ALGOL}} 60、{{lang|en|ALGOL}} 68<br />
|influenced = {{lang|fr|[[Pascal]]}}、[[C言語]]、{{lang|en|[[PL/I]]}}、{{lang|en|[[Simula]]}}、[[CPL (プログラミング言語)|CPL]]、[[Ada]]、[[Mathematica]]<br />
}}<br />
{{プログラミング言語}}<br />
{{lang|en|'''ALGOL'''}}('''アルゴル''')は、[[命令型プログラミング|命令型]][[プログラミング言語]]ファミリーの1つ<ref group="注">ファミリー名は大文字/小文字をまじえて表記される場合 ([http://www.masswerk.at/algol60/report.htm ''Algol 60'']) と、全て大文字で表記される場合 (''ALGOL 68'') がある。本項目では ''ALGOL'' で統一する。</ref>。名前「{{lang|en|ALGOL}}」は「アルゴリズム言語」を意味する英語「{{lang|en|<u>algo</u>rithmic <u>l</u>anguage}}」に由来する。1950年代中ごろに開発され、多くの言語に影響を及ぼし、[[Association for Computing Machinery|ACM]]や教科書や学術論文などで[[アルゴリズム]]記述の[[デファクトスタンダード]]として30年以上使われた<ref>[http://calgo.acm.org/ ''Collected Algorithms of the ACM''] [[Association for Computing Machinery|ACM]]によるアルゴリズム集</ref>。現代の多くの言語が「ALGOL系」あるいは「ALGOL風」(algol-like) とされているという意味で<ref>{{Cite web| url= http://www.eecs.qmul.ac.uk/~ohearn/Algol/intro.html | title=Algol-like languages ,Introduction | author1=P. W. O'Hearn | author2=R. D. Tennent | date=September 1996 | accessdate= 2012-01-17}}</ref>、ほぼ同世代の[[高水準言語]]である [[FORTRAN]]、[[LISP]]、[[COBOL]] に比べて最も成功したと言うこともできる。[[FORTRAN]]で明らかとなった問題を防ぐよう設計され、[[BCPL]]、[[B言語|B]]、[[Pascal]]、[[Simula]]、[[C言語|C]]といった様々なプログラミング言語に影響を与えた。ALGOLは<ref group="注">Lisp以外としては</ref>「<code>begin</code> と <code>end</code> で囲む」という構文による[[ブロック (プログラミング)|ブロック]]構造を導入し、[[制御構造]]を自在に入れ子(ネスト)にできる初の広まった言語となった<ref group="注">FORTRANにはそのような構造は無い。COBOLではピリオドで全ての入れ子が終端するという仕様だったため(現在は<code>end-if</code>などを使う)、入れ子で書ける論理に制限があり、酷いバグの原因にもなりやすかった。</ref>。また構文の形式的定義を真剣に検討した最初のプログラミング言語でもあり、"Algol 60 Report"<ref name="Algol60Report" /> で導入された[[バッカス・ナウア記法]]は、その後のコンピュータ言語等の構文の形式的定義を示す手法として(プログラミング言語だけに限られず)定番の記法となっている。<br />
<br />
== 主なバージョン ==<br />
次の3つの主要な仕様が存在する。後ろについている数は最初に発表された年を表している。<br />
; {{仮リンク|ALGOL 58|en|ALGOL 58}}<br />
: 当初 '''IAL''' ('''I'''nternational '''A'''lgorithmic '''L'''anguage) という名称で提案された。<br />
; {{仮リンク|ALGOL 60|en|ALGOL 60}}<br />
: 1960年中ごろに ''X1 ALGOL 60'' として実装されたのが最初で、1963年に改訂された<ref name="Algol60Report">{{Cite book | title=Report on the Algorithmic Language ALGOL 60 | location=Copenhagen | month=May |year=1960 | doi=10.1145/367236.367262 | issn=0001-0782 | editor1-first=Peter |editor1-last=Naur | first1=J. W. |last1=Backus | first2=F. L. |last2=Bauer | first3=J. |last3=Green | first4=C. |last4=Katz | first5=J. |last5=McCarthy | first6=A. J. |last6=Perlis | first7=H. |last7=Rutishauser | first8=K. |last8=Samelson | first9=B. |last9=Vauquois | first10=J. H.|last10=Wegstein | first11=A. |last11=van Wijngaarden | first12=M. |last12=Woodger | unused_data=Ed. P. Naur}}</ref><ref>{{Cite web |title=Revised Report on the Algorithmic Language Algol 60 |year=1963 |url= http://www.masswerk.at/algol60/report.htm |accessdate= 2007-06-08 | archiveurl= http://web.archive.org/web/20070625171638/http://www.masswerk.at/algol60/report.htm| archivedate= 25 June 2007 | deadurl= no}}</ref>。<br />
; {{仮リンク|ALGOL 68|en|ALGOL 68}}<br />
: 1968年に発表され、1973年に改訂された<ref>{{Cite web |title=Revised Report on the Algorithmic Language ALGOL 68 |year=1973 |url= http://www.diegolucenapumar.com/sda3/home/Algol/Algol%2068/Algol68-RevisedReport.pdf |accessdate=2010-08-25}}</ref>。可変配列、スライス、並列性、演算子識別、その他の拡張可能な機能などが新たに導入されている。<br />
<br />
IAL (ALGOL 58) は後の様々なプログラミング言語(いわゆるALGOL系言語)に大きな影響を及ぼし、一般にそれらの先祖とみなされている。また、ALGOLの仕様で示された[[中間コード]]は '''ALGOL object code''' と呼ばれ、単純でコンパクトなスタックベースの[[命令セット]]アーキテクチャであり、[[計算機科学]]の分野で[[コンパイラ]]構築の教育に使われ、他の高水準言語の実装にも使われた。<br />
<br />
== 歴史 ==<br />
1950年代後半、{{lang|en|[[FORTRAN]]}}等の言語が[[アメリカ合衆国|米国]]で作られていたのに対抗して、[[ヨーロッパ]]の学術研究者が世界共通のプログラミング言語として開発した。ALGOLは[[1958年]]に[[チューリッヒ工科大学]]で行われた国際会議で提案されたものが起源とされる。現代のプログラミング言語と比べて著しく異なる点のひとつに、reference syntax、publication syntax、implementation syntax という3種類の構文がある、ということが挙げられる。当時は[[文字コード]]の標準化以前であり、また数学の数式のように印刷したいという要望などもあったため、そのようなことになっている(違いは具象の違いであり、抽象構文は共通である)。これにより、キーワード名や小数点に使用する記号(カンマかピリオドか)を選ぶことなどもできた。<br />
<br />
ALGOL 58 は主に欧米の計算機科学者が[[アルゴリズム]]の[[研究開発]]に用いた。商用アプリケーションにはあまり採用されていない。その原因は[[入出力]]機能が標準仕様に含まれていなかったためであり、また[[バロース]]以外の大手コンピュータメーカーがこの言語に興味を示さなかったためである。<br />
<br />
[[ジョン・バッカス]]は ALGOL 58 を主たる対象としてプログラミング言語の文法を記述する[[バッカス・ナウア記法|バッカス正規記法]] (Bakus normal form) を開発した。[[ピーター・ナウア]]はそれを ALGOL 60 向けに拡張・改訂。[[ドナルド・クヌース]]が[[バッカス・ナウア記法]] (Bakus-Naur Form) と改称することを提案した<ref>{{Cite journal| last=Knuth | first=Donald E. | year=1964 | title=Backus Normal Form vs Backus Naur Form | journal=Communications of the ACM | volume=7 | issue=12 | pages=735–736 | doi = 10.1145/355588.365140 }}</ref>。<br />
<br />
ピーター・ナウアは ''ALGOL Bulletin'' という学術誌の編集者としてこの言語の国際的議論に参加し、1959年11月にヨーロッパの言語設計グループの一員に選ばれた。そして "Algol 60 Report" の編集者となり、1960年1月にパリで開催された ALGOL 60 についての国際会議の結果を発表した<ref name="naur_acm">[http://awards.acm.org/citation.cfm?id=1024454&srt=all&aw=140&ao=AMTURING&yr=2005 ACM Award Citation / Peter Naur], 2005</ref>。<br />
<br />
このパリでの会議(1960年1月1日から16日まで開催)には以下の人々が参加している。<br />
; ヨーロッパからの参加者<br />
: {{仮リンク|フリードリッヒ・L・バウアー|en|Friedrich L. Bauer}}、[[ピーター・ナウア]]、[[ハインツ・ルティシュハウザー]]、{{仮リンク|クラウス・サメルソン|en|Klaus Samelson}}、Bernard Vauquois、{{仮リンク|アドリアン・ファン・ワインハールデン|en|Adriaan van Wijngaarden}}、Michael Woodger<br />
; アメリカからの参加者<br />
: [[ジョン・バッカス]]、Julien Green、Charles Katz、[[ジョン・マッカーシー]]、[[アラン・パリス]]、Joseph Henry Wegstein<br />
アラン・パリスはこの会議について、「会合は疲れさせるもので、果てしなく、活発だった。ある人のよいアイデアが悪いアイデアと共に却下されると、その人は機嫌を損ねた。それにもかかわらず、期間中ずっと勤勉さが持続した。13人の作用は素晴らしいものだった」と評している。<br />
<br />
ALGOL 60 はその後の多数の言語に影響を与えた。[[アントニー・ホーア]]は ALGOL 60 を「時代に先行していて、それまでの言語の改良だっただけでなく、その後のほぼ全ての後継者の先駆者となった言語」と評している<ref>[http://www.eecs.umich.edu/~bchandra/courses/papers/Hoare_Hints.pdf "Hints on Programming Language Design"], C.A.R. Hoare, December 1973. Page 27. (なお、この言葉は間違って[[エドガー・ダイクストラ]]のものとされることがある。ダイクストラも ALGOL 60 [[コンパイラ]]の実装に参加していた)</ref>。[[Scheme]]というLisp方言の設計者は、その[[静的スコープ]]は ALGOL からの影響だと述べている<ref group="注">ALGOL自身(ALGOL 60)にはFUNARG問題([[:en:Funarg problem]])などは無いため、静的スコープにまつわる難しい点などもないことから、強い関連を求めるならばおそらくALGOL 68になる。</ref>。またSchemeの仕様の名称 "Revised Report on the Algorithmic Language Scheme" もALGOLへのオマージュである<ref name="r3rs">{{Cite web| author=Jonathan Rees and William Clinger (Editors), Hal Abelson, R. K. Dybvig et al. | title=Revised(3) Report on the Algorithmic Language Scheme, (Dedicated to the Memory of ALGOL 60) | url= http://groups.csail.mit.edu/mac/ftpdir/scheme-reports/r3rs-html/r3rs_toc.html |accessdate= 2009-10-20}}</ref>。<br />
<br />
1968年には、後継として '''{{lang|en|ALGOL}} 68''' が開発された。{{lang|en|ALGOL}} 68 では、2段階文法のワインハールデン記法で文法が記述された。{{lang|en|ALGOL}} 60 の後継言語制定に至るまでの候補として[[ニクラウス・ヴィルト]]の {{lang|en|ALGOL W}}、日本で設計された {{lang|en|ALGOL N}} 等もあったが最終的に {{lang|en|ALGOL}} 68 が後継として制定された。しかし、あまりに複雑かつ巨大な仕様のため {{lang|en|ALGOL}} 68 コンパイラの実装は難しく、またワインハールデン記法が難解なこともあり実用的には、ほとんど普及しなかった。そのため単に ALGOL と言った場合にはALGOL 68 ではなくて ALGOL 60 やその方言を指すのが一般的である。<br />
<br />
言語の標準化としては、IFIP TC2/WG2.1 において {{lang|en|ALGOL}} 60 が制定された。その後、遅々として標準化作業はすすまず、1984年になって、[[国際標準化機構|ISO]]で {{lang|en|ALGOL}} 60 相当の言語が標準化されたのみである。日本では、かつて {{lang|en|ALGOL}} 60 の言語規格と入出力ライブラリ規格をそれぞれ[[日本工業規格|JIS規格]]で制定していたが (JIS C 6210-6219)、[[1983年]](昭和58年)[[9月1日]]付で廃止された。<br />
<br />
=== ALGOLとプログラミング言語研究 ===<br />
{{仮リンク|ピーター・ランディン|en|Peter Landin}}が指摘したように、ALGOLは命令型の[[副作用 (プログラム)|副作用]]と([[評価戦略|名前渡し]]の)[[ラムダ計算]]を一体に結合した初の言語である。この言語の最も見事な定式化はおそらく{{仮リンク|ジョン・C・レイノルズ|en|John C. Reynolds}}によるもので、その文法および意味論の純粋さをよく表している。レイノルズの「理想化した」ALGOLも名前渡しの言語のコンテキストにおける「ローカル」な副作用の適切さについて説得力のある方法論的主張を行っており、[[ML (プログラミング言語)|ML]]のような値渡しの言語が使用する「グローバル」な副作用と対比される。ALGOLの概念的完全性により、{{仮リンク|Programming Computable Functions|en|Programming Computable Functions|label=PCF}}やMLと共に意味論研究の主な対象とされるようになった<ref>Peter O'Hearn and Robert D. Tennent. 1996. Algol-Like Languages. Birkhauser Boston Inc., Cambridge, MA, USA.</ref>。<br />
<br />
=== 実装例 ===<br />
これまでに ALGOL 60 の強化版、拡張版、派生版、サブ言語などが少なくとも70ほど存在した<ref>{{Cite web| url= http://hopl.murdoch.edu.au/showlanguage.prx?exp=1807 | title=The Encyclopedia of Computer Languages | accessdate=2012-01-20}}</ref>。<br />
<br />
ALGOL 60 の実装に関する問題は、Nicholas Enticknap と Pat Woodroffe の書いた "[http://www.cs.man.ac.uk/CCS/res/res04.htm#d The early days of Algol]" で詳しく議論されている。<br />
<br />
{|class="wikitable" border="1" style="border-collapse: collapse;"<br />
|-<br />
!|名称<br />
!|年<br />
!|作者<br />
!|国<br />
!|説明<br />
!|対象CPU<br />
|-<br />
| ZMMD-implementation|| 1958年 || Bauer, Rutishauser, Samelson, Bottenbruch || ドイツ || ALGOL 58 の実装 || [[:en:Z22 (computer)|Z22]] <br/> (後に[[コンラート・ツーゼ|ツーゼ]]のZ23<ref>[http://www.computerhistory.org/core/backissues/pdf/core_1_1.pdf Computer Museum History], Historical Zuse-Computer Z23, restored by the Konrad Zuse Schule in Hünfeld, for the Computer Museum History Center in Mountain View (California) USA</ref>向けに ALGOL 60 コンパイラを提供している)<br />
|-<br />
|X1 ALGOL 60 || 1960年8月<ref>{{Cite journal|url= http://www.dijkstrascry.com/node/4 |title=Dijkstra's Rallying Cry for Generalization: the Advent of the Recursive Procedure, late 1950s&nbsp;– early 1960s |last=Daylight |first=E. G. |journal=The Computer Journal |year=2011 |doi=10.1093/comjnl/bxr002}}</ref> || [[エドガー・ダイクストラ]]、 Jaap A. Zonneveld || オランダ || ALGOL 60 の世界初の実装<ref>{{Cite book| last1 = Kruseman Aretz | first1 = F.E.J. | chapter = The Dijkstra-Zonneveld ALGOL 60 compiler for the Electrologica X1 | title=Software Engineering | series = History of Computer Science | publisher = Centrum Wiskunde & Informatica | place = Kruislaan 413, 1098 SJ Amsterdam | date =30 June 2003 |url = http://oai.cwi.nl/oai/asset/4155/04155D.pdf }}</ref> || [[:en:Electrologica X1|Electrologica X1]]<br />
|-<br />
|[[:en:Elliott ALGOL|Elliott ALGOL]]|| 1960年代 || [[アントニー・ホーア]] || イギリス || || [[:en:Elliott 803|Elliott 803]] & Elliott 503<br />
|-<br />
|[[:en:JOVIAL|JOVIAL]]|| 1960年 || Jules Schwarz || アメリカ || [[Ada]]以前の [[アメリカ国防総省|DOD]] [[高水準言語|HOL]] || 各種<br />
|-<br />
|[[バロース B5000#ALGOL|Burroughs Algol]] <br/>(いくつか派生がある)|| 1961年 || [[バロース]](ホーアや[[エドガー・ダイクストラ|ダイクストラ]]も参加) || アメリカ || [[バロース]]のメインフレーム(および[[ユニシス]]の後継シリーズ)の基盤 || [[バロース B5000|バロースの大型機]] <br/>および中型機<br />
|-<br />
|Case ALGOL|| 1961年 || [[ケース・ウェスタン・リザーブ大学]]<ref>{{Cite web|last=Koffman|first=Eliot|title=All I Really Need to KnowI Learned in CS1|url= http://www.temple.edu/cis/directory/tenure/documents/KoffmanSIGCSESlides.pdf|accessdate= 2012-05-20}}</ref> || アメリカ || [[Simula]]は Case ALGOL のシミュレーション向け拡張として開発された。 || [[:en:UNIVAC 1107|UNIVAC 1107]]<br />
|-<br />
|GOGOL|| 1961年 || Bill McKeeman || アメリカ || ODIN[[タイムシェアリングシステム]]向け || [[PDP-1]]<br />
|-<br />
|RegneCentralen ALGOL|| 1961年 || [[ピーター・ナウア]]、Jørn Jensen || デンマーク || ALGOL 60 の完全実装 || [[DASK]] ([[:en:Regnecentralen|Regnecentralen]])<br />
|-<br />
|[[:en:Dartmouth ALGOL 30|Dartmouth ALGOL 30]]|| 1962年 || {{仮リンク|トーマス・ユージン・カーツ|en|Thomas Eugene Kurtz}} 他 || アメリカ || || [[:en:LGP-30|LGP-30]]<br />
|-<br />
|USS 90 Algol|| 1962年 || L. Petrone || イタリア || || <br />
|-<br />
| Algol Translator || 1962年 || G. van der Mey, [[:en:Willem van der Poel|W.L. van der Poel]] || オランダ || [[KPN|オランダ国営電話会社]] || [[:en:ZEBRA (computer)|ZEBRA]]<br />
|-<br />
|Kidsgrove Algol|| 1963年 || F. G. Duncan || イギリス || || [[イングリッシュ・エレクトリック]] [[:en:English Electric KDF9|KDF9]]<br />
|-<br />
|VALGOL|| 1963年 || Val Schorre || アメリカ || [[:en:META II|META II]] [[コンパイラジェネレータ]]のテストとして開発 || <br />
|-<br />
|[[Whetstone]]|| 1964年 || Brian Randell, L J Russell || イギリス || || [[イングリッシュ・エレクトリック]] [[:en:English Electric KDF9|KDF9]]<br />
|-<br />
|NU ALGOL|| 1965年 || || ノルウェー || || [[UNIVAC]]<br />
|-<br />
|ALGEK|| 1965年 || || [[ソビエト連邦]] || ALGOL 60 と[[COBOL]]に基づいた経済タスク用 || [[:en:Minsk family of computers|Minsk-22]] <br />
|-<br />
|MALGOL|| 1966年 || publ. A. Viil, M Kotli & M. Rakhendi || [[エストニア・ソビエト社会主義共和国]] || || [[:en:Minsk family of computers|Minsk-22]]<br />
|-<br />
|ALGAMS|| 1967年 || GAMS(中型機のための自動プログラミング)グループとコメコン科学アカデミーの共同開発 || [[経済相互援助会議|コメコン]] || || [[:en:Minsk family of computers|Minsk-22]]、後に [[:en:ES EVM|ES EVM]]、[[BESM]]<br />
|-<br />
|ALGOL/ZAM|| 1967年 || || ポーランド || || ZAM(ポーランド製)<br />
|-<br />
|[[Simula|Simula 67]]|| 1967年 || [[オーレ=ヨハン・ダール]]、[[クリステン・ニゴール]] || ノルウェー || ALGOL 60 にオブジェクト指向を導入 || [[:en:UNIVAC 1107|UNIVAC 1107]]<br />
|-<br />
|Chinese Algol|| 1972年 || || 中国 || 漢字を表示可能 || <br />
|-<br />
|[[:en:DG/L|DG/L]]|| 1972年 || [[データゼネラル]] || アメリカ || || [[Eclipse (コンピュータ)|Eclipse]]ファミリ<br />
|-<br />
|[[:en:S-algol|S-algol]]|| 1979年 || [[:en:Ron Morrison|Ron Morrison]] || イギリス || 直交データ型を追加。教育向け || [[PDP-11]](後に [[Java仮想マシン|Java VM]] 上にも実装)<br />
|}<br />
<br />
== 特徴 ==<br />
同時期の {{lang|en|FORTRAN}}、{{lang|en|[[COBOL]]}} と比べると、これらの言語が特定のハードウェア上で特定の目的を効率良くこなすための一種のドメイン特化型言語から始まったのに対し、{{lang|en|ALGOL}} はいったんハードウェアの特性は置いておき、抽象的なアルゴリズムを手続きとして記述する事を目指している。初期の {{lang|en|ALGOL}} 60 仕様では入出力手続きすら標準化されていなかった点から見ても、できる限り言語コアの抽象度を上げようとしていたことは想像に難くない。{{lang|en|FORTRAN}}、{{lang|en|COBOL}} が直系子孫以外に余り枝分かれをしていないのに対して、{{lang|en|ALGOL}} 系が大きな多様性を獲得したのもこの抽象性による所が大と言える。従って {{lang|en|ALGOL}} の策定をもって、ソフトウェアのモジュール化、計算機の汎用化が始まった瞬間と捉えても差し支えないであろう。<br />
<br />
{{lang|en|ALGOL}} 60 は、[[手続き型言語]]として[[再帰呼び出し]]が可能な初めてのプログラミング言語である。<br />
<br />
公式の {{lang|en|ALGOL}} 60 では[[入出力]]機能が定義されていなかったため、実際の処理系ではそれぞれに互換性のない方法で実装された。それに対して、{{lang|en|ALGOL}} 68では <code>transput</code><ref group="注">{{lang|en|ALGOL}} 68 の用語で入出力を意味する。</ref>のための豊富な[[ライブラリ]]が提供された。<br />
<br />
{{lang|en|ALGOL}} 60 では[[引数]]渡しに2種類の[[評価戦略]]が定義されている。一般的な'''値渡し'''と {{lang|en|ALGOL}} に特徴的な<ref group="注">手続き型言語ではなく、理論的に純粋なラムダ計算などであれば「値渡し」と「名前渡し」は基本的には等価である(ので、設計者たちは楽観的に考えていたのかもしれない)。しかし、手続き型言語では色々と面倒があり、その後、「参照渡し」か、[[無名関数]]を「[[第一級関数]]」として渡す、という形に整理された(この2通りが、名前渡しが必要・有用な場合のほとんどのユースケースである)。</ref>'''名前渡し'''である。名前渡しは実際のところ、手続き型言語では扱いがかなり難しい。例えば、2つの引数の値を入れ替える手続きを書いたとき、ある整数変数とその整数変数を添え字とする配列要素をその引数として渡すことができない<ref>{{Cite book| last=Aho | first=Alfred V. | authorlink=アルフレッド・エイホ | coauthors=Ravi Sethi, Jeffrey D. Ullman | title=Compilers: Principles, Techniques, and Tools | year=1986 | edition=1st | publisher=Addison-Wesley | isbn=0-201-10194-7}}, Section 7.5, and references therein</ref>。すなわち swap(i, A[i]) という場合である(詳しくは[[引数#名前渡し]]を参照)。乱数関数を渡す場合にも問題が生じる。<br />
<br />
しかし、ALGOLの設計者は名前渡しをデフォルトとした。また、言語処理系実装者たちは名前渡しの実現に「サンク」([[:en:Thunk (functional programming)]])という興味深い技法を編み出した。現在、素朴な(ALGOLのような)名前渡しは完全に廃れたが、サンクは[[遅延評価|遅延(非正格)評価]]を実装する一般的な手法として知られる。[[ドナルド・クヌース]]は処理系が「[[再帰呼び出し]]と非局所的参照」を正しく実装しているかを評価するman or boy test([[:en:Man or boy test]])を考案した。このテストには名前呼び出しの例が含まれている(クヌースらは他にも、名前渡しの「悪用」とでも言うべきJensen's Device([[:en:Jensen's Device]])と後に呼ばれるようになるような技法の一例を示した "ALGOL 60 Confidential"<ref>https://doi.org/10.1145/366573.366599</ref>など、仕様のコーナーケースを暴き、コンピュータ・プログラミング言語設計の難しさをあらわにした)。<br />
<br />
{{lang|en|ALGOL}} の影響として、後の言語のうちの最も多くに影響があるものは、<code>BEGIN</code>/<code>END</code>(C 言語などでは<code>{</code> <code>}</code>)の[[ネスティング|入れ子]]によるブロック構造化、つまり次のような典型的な形の記法であろう。<br />
<pre><br />
BEGIN<br />
X := 1 ;<br />
IF (X > 0) THEN<br />
BEGIN<br />
:<br />
END<br />
END<br />
</pre><br />
俗に「{{lang|en|ALGOL}} 文法」といった場合は、このブロック構造化記法のことを指していることがある(C言語のように他の記号を使うものも含めて指していることもあれば、そうではなくてBEGIN/ENDのようにキーワードを使う、という意味で言っていることもある)。<!--<br />
<br />
[[式 (プログラミング)|式]]と[[文 (プログラミング)|文]]を持ち、字下げ(必須ではないが)されたブロック構造で手続きを記述していくという {{lang|en|ALGOL}} 系文法は、記述力と[[可読性]]のバランスが良好で、類似の文法をもつ言語は {{lang|en|Simula}}、{{lang|en|Pascal}}、{{lang|en|Modula}}、{{lang|en|[[Modula-2]]}}、{{lang|en|[[Modula-3]]}}、{{lang|en|[[Oberon]]}}、{{lang|en|[[Ada]]}}、{{lang|en|[[VHDL]]}}、{{lang|en|[[Verilog|Verilog-HDL]]}}、{{lang|en|[[Lola]]}}、{{lang|en|[[Eiffel]]}} など複数存在する。<br />
<br />
--><!--<br />
<br />
ほぼウソ。3項演算子のようにして文も書ければ(あるいは、if文のように式も書ければ)そのほうが同じようなものが重複する必要がなくてエレガントであるし、実際にLispのように全てS式にしてしまって構文の字面上は式とか文とか区別しない、というほうが記述力も可読性も高い。字下げはネスト構造を「見やすくするための補助」に過ぎず、真の構造とズレた字下げがされていた場合の「誤読性」の高さは言うまでもない。Perlが採用したような、ifやwhileの本体は無条件に複文とするような構文は、C言語を使い尽した設計者たちによる言語であるGoが採用したわけだが、Goが修正することを選んだC言語のそのような構文は、元をたどれば結局ALGOLから始まった「悪癖」だということになる。<br />
<br />
-->後の[[静的スコープ]]の言語についても、ALGOLからの影響と言われることがある。<br />
<br />
== 例と移植性問題 ==<br />
=== コード例の比較 ===<br />
==== ALGOL 60 ====<br />
次のコードは {{lang|en|ALGOL}} 60 で <tt>n × m</tt> の2次元配列の中から絶対値が最大の要素を求め、その絶対値を<tt>y</tt>に、添え字を<tt>i</tt>と<tt>k</tt>に格納する手続きを記述したものである。なお、コード中で強調表示されている[[予約語]]の記法は処理系に依存する。例えば "INTEGER" は "integer" と書かれることもある({{仮リンク|ストロッピング|en|Stropping (syntax)}})。<br />
<pre><br />
PROCEDURE Absmax(a) Size:(n, m) Result:(y) Subscripts:(i, k) ;<br />
VALUE n, m ; ARRAY a ; INTEGER n, m, i, k ; REAL y ;<br />
COMMENT The absolute greatest element of the matrix a, of size n by m<br />
is transferred to y, and the subscripts of this element to i and k ;<br />
BEGIN<br />
INTEGER p, q ;<br />
y := 0 ; i := k := 1 ;<br />
FOR p := 1 STEP 1 UNTIL n DO<br />
FOR q := 1 STEP 1 UNTIL m DO<br />
IF abs (a[p, q]) > y THEN<br />
BEGIN<br />
y := abs (a[p, q]) ;<br />
i := p; k := q<br />
END<br />
END Absmax<br />
</pre><br />
<br />
次の例は Elliott 803 ALGOL<ref>[http://www.billp.org/ccs/A104/ "803 ALGOL"], the manual for Elliott 803 ALGOL</ref> で表を生成する方法を示したものである。<br />
<br />
FLOATING POINT ALGOL TEST'<br />
BEGIN REAL A,B,C,D'<br />
<br />
READ D'<br />
<br />
FOR A:= 0.0 STEP D UNTIL 6.3 DO<br />
BEGIN<br />
PRINT PUNCH(3),££L??'<br />
B := SIN(A)'<br />
C := COS(A)'<br />
PRINT PUNCH(3),SAMELINE,ALIGNED(1,6),A,B,C'<br />
END'<br />
END'<br />
<br />
PUNCH(3) は紙テープのさん孔装置ではなくテレタイプ端末のプリンターへ出力を送るものである。SAMELINE は引数間で通常行われる復帰改行を抑制する。ALIGNED(1,6) は出力を小数点以上を1文字、小数点以下を6文字とするようフォーマットする。<br />
<br />
==== ALGOL 68 ====<br />
次のコード例は上掲の ALGOL 60 のコード例の ALGOL 68 版である。<br />
<br />
ALGOL 68 でも ALGOL 60 の{{仮リンク|ストロッピング|en|Stropping (syntax)}}を再利用している。<br />
<br />
<pre><br />
PROC ABS max = ([,]real a, REF real y, REF int i, k)real:<br />
COMMENT The absolute greatest element of the matrix a, of size ⌈a by 2⌈a<br />
is transferred to y, and the subscripts of this element to i and k; COMMENT<br />
BEGIN<br />
real y := 0; i := ⌊a; k := 2⌊a;<br />
FOR p FROM ⌊a TO ⌈a DO<br />
FOR q FROM 2⌊a TO 2⌈a DO<br />
IF ABS a[p, q] > y THEN<br />
y := ABS a[p, q];<br />
i := p; k := q<br />
FI<br />
OD<br />
OD;<br />
y<br />
END # abs max #<br />
</pre><br />
なお、lower (⌊) と upper (⌈) は配列の境界を示し、配列を走査する際の添え字の範囲指定に使える。<br />
<br />
<pre><br />
floating point algol68 test:<br />
(<br />
real a,b,c,d;<br />
<br />
printf(($pg$,"Enter d:"));<br />
read(d);<br />
<br />
FOR step FROM 0 WHILE a:=step*d; a <= 2*pi DO<br />
printf($l$);<br />
b := sin(a);<br />
c := cos(a);<br />
printf(($z-d.6d$,a,b,c))<br />
OD<br />
)<br />
</pre><br />
<br />
''printf'' はファイル ''stand out'' に出力を送る。''printf($p$);'' は改頁、''printf($l$);'' は改行である。''printf(($z-d.6d$,a,b,c))'' は小数点以上を1桁、小数点以下を6桁にフォーマットして出力する。<br />
<br />
=== Hello world の変遷 ===<br />
ALGOLの各種実装における移植性の無さは、[[Hello World]] プログラムで簡単に示すことができる。<br />
<br />
==== ALGOL 58 (IAL) ====<br />
ALGOL 58 には入出力機能が存在しないので、例示できない。<br />
<br />
==== ALGOL 60 ファミリ ====<br />
ALGOL 60 にも入出力機能がないので、Hello World プログラムの移植性はない。以下に示すのは[[ユニシス]]のメインフレームで今も使用可能なALGOLの実装に対応したもので、[[ミシガン大学]]の [http://www.engin.umd.umich.edu/CIS/course.des/cis400/index.html The Language Guide] にあるコード例を単純化したものである<ref>[http://www.engin.umd.umich.edu/CIS/course.des/cis400/algol/hworld.html Hello world! ALGOL Example Program page]</ref>。<br />
<br />
<pre><br />
BEGIN<br />
FILE F(KIND=REMOTE);<br />
EBCDIC ARRAY E[0:11];<br />
REPLACE E BY "HELLO WORLD!";<br />
WRITE(F, *, E);<br />
END.<br />
</pre><br />
<br />
インラインフォーマットを使ったさらに単純なプログラムは次のようになる。<br />
<br />
<pre><br />
BEGIN<br />
FILE F(KIND=REMOTE);<br />
WRITE(F, <"HELLO WORLD!">);<br />
END.<br />
</pre><br />
<br />
Display文を使うとさらに次のように単純化される。<br />
<br />
<pre><br />
BEGIN DISPLAY("HELLO WORLD!") END.<br />
</pre><br />
<br />
もう1つの例として Elliott Algol のコード例を示す。Elliott Algol は引用開始符号と引用終了符号とで異なる文字を使用する。<br />
<br />
'''program''' HiFolks;<br />
'''begin'''<br />
'''print''' ‘Hello world’;<br />
'''end''';<br />
<br />
次は Elliott 803 Algol (A104) の例である。Elliott 803 は標準では5孔の紙テープを使用するので、大文字しか使えない。引用符として使える文字もないため、ポンド記号 (£) を引用開始、疑問符 (?) を引用終了に使用している。特殊シーケンスは二重引用内に置かれる(例えば、££L?? は改行指示である)。<br />
<br />
HIFOLKS'<br />
BEGIN<br />
PRINT £HELLO WORLD£L??'<br />
END'<br />
<br />
[[:en:ICT 1900 series|ICT 1900]]シリーズのALGOLでは、紙テープまたはパンチカードを入力として利用可能である。紙テープは小文字も使用可能である。出力はラインプリンターに対して行う。<br />
'BEGIN'<br />
'WRITE TEXT'("HELLO WORLD");<br />
'END'<br />
<br />
==== ALGOL 68 ====<br />
ALGOL 68 のコードは一般に太字または下線つきの小文字で予約語を表す(ただし、以下の例はシンタックスハイライトのために大文字にしている)。<br />
<br />
<pre><br />
BEGIN<br />
printf(($gl$,"Hello, world!"))<br />
END<br />
</pre><br />
<br />
"Algol 68 Report" では、入出力を "transput" と称している。<br />
<br />
=== ALGOLの特殊文字の変遷 ===<br />
{{特殊文字|special=Unicode 6.0 "[http://www.unicode.org/charts/PDF/U2300.pdf Miscellaneous Technical]" characters}}<br />
ALGOLは文字セットが急速に発展し多様化していた時代に登場した。また、ALGOLは大文字だけで記述できるよう定義されていた。<br />
<br />
1960年の[[情報処理国際連合]] (IFIP) で発表された ALGOL 60 では、当時のほとんどのコンピュータではサポートされていない数学記号がいくつか使われていた。例えば、×, ÷, ≤, ≥, ≠, ¬, ∨, ∧, ⊂, ≡, ␣, <span style="font-family:'DejaVu Sans',Quivira,Symbola,'和田研中丸ゴシック2004絵文字','和田研細丸ゴシック2004絵文字','Nishiki-teki';">⏨</span><ref group="注" name="ten">対応フォントが少ない。フリーフォントでは、[[DejaVuフォント|DejaVu Sans]]、Quivira、[http://users.teilar.gr/~g1951d/ Symbola]、[[和田研フォント|和田研2004フォントの絵文字対応版]]、にしき的フォントなど。JIS X 0208の表記に置き換えるなら「<span style="font-size:40%;">10</span>」のような外見となる。</ref> などである。<br />
<br />
1961年9月、初期の[[ASCII]]文字セットが登場し、ALGOLの[[ブーリアン型|ブーリアン]]演算子 "{{Backslash}}/" と "/{{Backslash}}" をサポートするために[[バックスラッシュ]] ({{Backslash}}) が初期段階で追加された<ref>[http://www.bobbemer.com/BACSLASH.HTM How ASCII Got Its Backslash], Bob Bemer</ref>。<br />
<br />
1962年、{{仮リンク|ALCOR|en|ALCOR}}は2つの珍しい文字、"&#x16ed;" (iron/runic cross) と "⏨" ([http://unicode.org/charts/PDF/U2300.pdf Decimal Exponent Symbol]) を浮動小数点形式で使用するためにALGOLの文字セットに加えた<ref>{{Cite journal| last=Baumann | first=R. | year=1962 | title=ALGOL Manual of the ALCOR Group, Part 1 |journal=Elektronische Rechenanlagen |date=October 1961 | pages=206–212 | language=German| trans_title=ALGOL Manual of the ALCOR Group| accessdate= 2009-11-25}}</ref><ref>{{Cite journal| last=Baumann | first=R. | year=1962 | title=ALGOL Manual of the ALCOR Group, Part 2 |journal=Elektronische Rechenanlagen |volume=6 | date=December 1961 | pages=259–265 | language=German| trans_title=ALGOL Manual of the ALCOR Group| accessdate= 2009-11-25 }}</ref><ref>{{Cite journal| last=Baumann | first=R. | year=1962 | title=ALGOL Manual of the ALCOR Group, Part 3 |journal=Elektronische Rechenanlagen |volume=2 | date=April 1962 | language=German| trans_title=ALGOL Manual of the ALCOR Group| accessdate= 2009-11-25 }}</ref>。<br />
<br />
1964年、ソビエト連邦が策定した[[GOST規格]] [[:en:GOST 10859|GOST 10859]] で、ALGOL用の4ビット、5ビット、6ビット、7ビットの文字セットを定義した<ref>{{Cite web|title=GOST 10859 standard|url= http://homepages.cwi.nl/~dik/english/codes/stand.html#gost10859|accessdate= 2007-06-05| archiveurl= http://web.archive.org/web/20070616201227/http://homepages.cwi.nl/~dik/english/codes/stand.html#gost10859| archivedate= 16 June 2007 | deadurl= no}}</ref>。<br />
<br />
1968年の "Algol 68 Report" では既存のALGOL用文字セットに加えて、[[:en:IBM 2741|IBM 2741]] 端末(1965年に登場した[[APL]]対応端末)で使用可能な {{Unicode|→, ↓, ↑, □, ⌊, ⌈, ⎩, ⎧, ○, ⊥, ¢}} という文字を加えた。このレポートはロシア語、ドイツ語、フランス語、ブルガリア語に翻訳され、それぞれの言語向けに文字セットが拡張された。例えばソビエト連邦の[[BESM|BESM-4]]は[[キリル文字]]が使用可能だった。ALGOLの使用する全ての文字は[[Unicode]]規格の一部になっており、その大部分は主要な[[フォント]]が対応している。<br />
<br />
2009年10月、浮動小数点形式記述のための "<span style="font-family:'DejaVu Sans',Quivira,Symbola,'和田研中丸ゴシック2004絵文字','和田研細丸ゴシック2004絵文字','Nishiki-teki';">⏨</span>" ([http://unicode.org/charts/PDF/U2300.pdf Decimal Exponent Symbol]) が Unicode 5.2 に追加された<ref group="注" name="ten"/>。これは[[ブラン (オービタ)|ブラン]]で使われたALGOLソフトウェアとの後方互換を保つためである。<br />
<br />
== 脚注 ==<br />
{{脚注ヘルプ}}{{Reflist|group="注"}}<br />
<br />
== 出典 ==<br />
{{Reflist|30em}}<br />
<br />
== 参考文献 ==<br />
* F.L. Bauer, R. Baumann, M. Feliciano, K. Samelson, ''Introduction to Algol''. Prentice Hall, 1964, ISBN 0-13-477828-6<br />
* [http://www.softwarepreservation.org/projects/ALGOL/book/Randell_ALGOL_60_Implementation_1964.pdf B. Randell and L.J. Russell, ''ALGOL 60 Implementation: The Translation and Use of ALGOL 60 Programs on a Computer''. Academic Press, 1964]. The design of the '''Whetstone Compiler'''. コンパイラの実装についての初期の解説の1つ。関連する論文として次がある。 <br />
** [http://www.cs.ncl.ac.uk/research/pubs/articles/papers/427.pdf Whetstone Algol Revisited] by B. Randell<br />
** [http://www.cs.ncl.ac.uk/publications/books/papers/124.pdf The Whetstone KDF9 Algol Translator] by B. Randell<br />
* E. W, Dijkstra, ''Algol 60 translation: an algol 60 translator for the x1 and making a translator for algol 60'', report MR 35/61. Mathematisch Centrum, Amsterdam, 1961. [http://www.cs.utexas.edu/users/EWD/MCReps/MR35.PDF]<br />
<br />
<br />
== 関連図書 ==<br />
* 森口繁一(編):「ALGOL入門」、日本科学技術連盟、(1962年10月1日)。<br />
* Eric Foxley and Henry R. Neave:"A FIRST COURCE IN ALGOL60", Addison-Wesley Pub., (1968). <br />
* エリック フォクスレイ、ヘンリイ R.ニーヴ、岸田孝一(訳):「プログラミングALGOL入門」、日本生産性本部(1970年3月30日)。<br />
<br />
== 関連項目 ==<br />
* [[ISWIM]]<br />
* [[Simula]]<br />
* [[Scheme]]<br />
<br />
== 外部リンク ==<br />
* [http://www.xs4all.nl/~jmvdveer/algol.html Algol 68 Genie] - [[GNU General Public License|GPL]]配布によるフリーの{{lang|en|ALGOL}} 68 [[インタプリタ]]<br />
* [http://www.angelfire.com/biz/rhaminisys/algol60.html {{lang|en|Algol60 compiler and interpreter}}] - [[MS-DOS]]上で動くフリーのALGOL60コンパイラが配布されている。<br />
* [http://www.masswerk.at/algol60/report.htm {{lang|en|Revised Report on the Algorithmic Language Algol 60}}] by Peter Naur, et al. ALGOLの定義<br />
* [http://www.compileonline.com/execute_algol_online.php Execute ALGOL-68 Script Online] ブラウザ上でオンラインで ALGOL 68 を実行 by Mohtashim<br />
* ALGOL 60 のBNFによる [http://bernhard.userweb.mwn.de/Algol-BNF.html syntax summary]<br />
* [http://www.softwarepreservation.org/projects/ALGOL/ History of ALGOL] at the [[コンピュータ歴史博物館|Computer History Museum]]<br />
* [http://www.gnu.org/software/marst/ MARST] - フリーなALGOLからCへのトランスレータ ([http://www.sfr-fresh.com/unix/misc/marst-2.6.tar.gz:a/marst-2.6/doc/marst.texi User Guide])<br />
* [http://rogerdmoore.ca/JOUR/ AN IMPLEMENTATION OF ALGOL 60 FOR THE FP6000] 実装上の問題についての議論がある。<br />
* [http://portal.acm.org/ft_gateway.cfm?id=808370&type=pdf&coll=&dl=ACM&CFID=15151515&CFTOKEN=6184618 "The European Side of the Last Phase of the Development of ALGOL 60" by Peter Naur]<br />
* [[エリック・レイモンド]]の [http://www.catb.org/retro/ Retrocomputing Museum] には、C言語で書かれた NASE Algol-60 インタプリタへのリンクがある。<br />
* [http://ed-thelen.org/comp-hist/B5000-AlgolRWaychoff.html STORIES ABOUT THE B5000 AND PEOPLE WHO WERE THERE] By Richard Waychoff<br />
* [http://mailcom.com/unicode/DecimalExponent.ttf TrueType font containing U+23E8 Decimal Exponent Symbol](ttfファイル)<br />
<br />
{{プログラミング言語一覧}}<br />
[[Category:プログラミング言語]]</div>133.86.108.32数式処理システムの一覧2017-11-27T19:27:42Z<p>133.86.108.32: </p>
<hr />
<div>本項は'''[[数式処理システム]]の一覧'''(すうしきしょりシステムのいちらん)である。<br />
<br />
== 概要 ==<br />
{| class="wikitable sortable" style="font-size: smaller; text-align: center; width: 100%;"<br />
|-<br />
! style="width: 12em"|<br />
! 開発者<br />
! 開発開始時期<br />
! 最初の公開/発売時期<br />
! data-sort-type="number"|安定した最新版<br />
! 費用([[アメリカ合衆国ドル|USD]])<br />
! [[オープンソース]]<br />
! [[ライセンス]]<br />
! 注記<br />
|-<br />
! [[Axiom_(数式処理システム)|Axiom]]<br />
| Axiomファウンデーション<br />
| [[1971年]]<br />
| [[2002年]][[9月3日]]<br />
| [[2005年]]4月<br />
| 無料<br />
| {{yes}}<br />
| 修正[[BSD License|BSDライセンス]]<br />
|<br />
|-<br />
! [[CoCoAシステム|CoCoA]]<br />
| CoCoAチーム<br />
| [[1987年]]<br />
| [[1995年]]<br />
| 5.1.1<br />
| 無料<br />
| {{yes}}<br />
| [[GNU General Public License|GPL]]<br />
| 多項式の計算<br />
|-<br />
! [[Derive_(数式処理システム)|Derive]]<br />
| Soft Warehouse<br />
| [[1979年]]<br />
| [[1988年]]<br />
| 6.1<br />
| $99 エジュケーショナル, $199 プロフェッショナル<br />
| {{no}}<br />
| [[プロプライエタリ・ソフトウェア|プロプライエタリ]]<br />
| [[テキサス・インスツルメンツ|TI]]が所有; 2007年に製造中止<br />
|-<br />
! [[DoCon]]<br />
| Serge D. Mechveliani<br />
| [[1993年]]<br />
| [[1995年]]<br />
| 2.08<br />
| 無料<br />
| {{yes}}<br />
| [[オープンソース|OSI非認証ライセンス]]<br />
| [[Haskell]]ライブラリ<br />
|-<br />
! [[Dynamic Computer Algebra System|DCAS]]<br />
| Robert Fenichel<br />
| {{?}}<br />
| {{?}}<br />
| 1.0<br />
| 無料<br />
| {{yes}}<br />
| [[GNU General Public License|GPL]]<br />
|<br />
|-<br />
! [[Eigenmath]]<br />
| George Weigt<br />
| [[2004年]]<br />
| [[2005年]]<br />
| 125<br />
| 無料<br />
| {{yes}}<br />
| [[GNU General Public License|GPL]]<br />
|<br />
|-<br />
! [[Erable]] (aka ALGB)<br />
| [[Bernard Parisse]], [[Mika Heiskanen]], [[Claude-Nicolas Fiechter]] || 1993年 || 1993年 || 4.20060919 || {{free}} || || {{free|[[LGPL]]}} || CAS designed for [[Hewlett-Packard]] scientific [[graphing calculators]] of the [[HP-48 series|HP 48]]/[[HP-49 series|49]]/[[HP-39g series|40]]/[[HP 50g|50]] series; discontinued in 2009<br />
|-<br />
! [[Fermat_(数式処理システム)|Fermat]]<br />
| Robert H. Lewis<br />
| [[1986年]]<br />
| [[1993年]]<br />
| 3.9.9x<br />
| $50<br />
| {{no}}<br />
| [[シェアウェア]]<br />
| 多項式、行列<br />
|-<br />
! [[FORM (symbolic manipulation system)|FORM]]<br />
| J.A.M. Vermaseren || 1984年 || 1989年 || 4.1<ref>{{cite web|url=https://github.com/vermaseren/form/releases |title=Releases - vermaseren/form - GitHub |accessdate=2016-04-29}}</ref> || {{free}} || || {{GPL-lic}} || CAS designed mainly for [[particle physics]] <br />
|-<br />
! [[GAP_(数式処理システム)|GAP]]<br />
| GAPグループ<br />
| [[1986年]]<br />
| [[1986年]]<br />
| 4.4.12<br />
| 無料<br />
| {{yes}}<br />
| [[GNU General Public License|GPL]]<br />
| 群論、指標理論、離散数学<br />
|-<br />
! [[GiNaC]]<br />
| Christian Bauer<br />
| [[1995年]]<br />
| [[1999年]]<br />
| 1.3.3<br />
| 無料<br />
| {{yes}}<br />
| [[GNU General Public License|GPL]]<br />
| C++ライブラリ<br />
|-<br />
! [[Macaulay_(数式処理システム)|Macaulay]]<br />
| Dave Bayer and Mike Stillman<br />
| {{?}}<br />
| {{?}}<br />
| 2.0.9.8<br />
| 無料<br />
| {{yes}}<br />
| [[GNU General Public License|GPL]]<br />
| 多項式<br />
|-<br />
! [[Macsyma]]<br />
| [[MIT Project MAC]] and [[Symbolics]] || 1968年 || 1978年 || 2.4 || $500 || || {{proprietary}} || The oldest general purpose CAS. Still alive as [[Maxima (software)|Maxima]].<br />
|-<br />
! [[Magma_(数式処理システム)|Magma]]<br />
| [[シドニー大学]]<br />
| ~[[1990年]]<br />
| [[1993年]]<br />
| 2.13<br />
| 変動制(コスト回収、非営利)<br />
| {{no}}<br />
| [[プロプライエタリ・ソフトウェア|プロプライエタリ]]<br />
| 代数、暗号、群論、数論<br />
|-<br />
! [[Maple]]<br />
| Maplesoft<br />
| [[1979年]]<br />
| [[1985年]]<br />
| 12<br />
| $1895 一般用、$995 アカデミック用、$99 学生用<br />
| {{no}}<br />
| [[プロプライエタリ・ソフトウェア|プロプライエタリ]]<br />
|<br />
|-<br />
! [[Mathcad]]<br />
| Mathsoft<br />
| [[1985年]]<br />
| [[1985年]]<br />
| 15<br />
| $1,195<br />
| {{no}}<br />
| [[プロプライエタリ・ソフトウェア|プロプライエタリ]]<br />
|<br />
|-<br />
! [[Mathematica]]<br />
| [[ウルフラム・リサーチ]]<br />
| [[1986年]]<br />
| [[1988年]]<br />
| 10.4.1<br />
| [http://store.wolfram.com/catalog/ $1880+ / 学生用<$200]<br />
| {{no}}<br />
| [[プロプライエタリ・ソフトウェア|プロプライエタリ]]<br />
|<br />
|-<br />
! [[Mathomatic]]<br />
| George Gesslein II<br />
| [[1986年]]<br />
| [[1987年]]<br />
| 16.0.5<br />
| 無料<br />
| {{yes}}<br />
| [[GNU Lesser General Public License|LGPL]]<br />
| 代数一般<br />
|-<br />
! [[GNU Maxima|Maxima]]<br />
| Bill Schelter et al.<br />
| [[1967年]]<br />
| [[1998年]]<br />
| 5.33.0<br />
| 無料<br />
| {{yes}}<br />
| [[GNU General Public License|GPL]]<br />
|<br />
|-<br />
! [[Mizar]]<br />
| Andrzej Trybulec. Białystok University. University of Alberta. Shinshu University.<br />
| [[1973年]]<br />
| [[1989年]]<br />
| 7.8.10<br />
| 無料<br />
| {{no}}<br />
| [[プロプライエタリ・ソフトウェア|プロプライエタリ]]<br />
| 証明(proof checker)<br />
|-<br />
! [[MuMATH]]<br />
| Soft Warehouse<br />
| 1970年代<br />
| [[1980年]]<br />
| <br />
| 製造中止<br />
| {{no}}<br />
| [[プロプライエタリ・ソフトウェア|プロプライエタリ]]<br />
|<br />
|-<br />
! [[MuPAD]]<br />
| SciFace Software(オリジナル), MathWorks(単体版販売終了後のサポート)<br />
| [[1989年]]<br />
| [[1992年]]<br />
| 4.0.6<br />
| かつてはフリー。<br />現在は$250、30日間の無料試用可<br />
| {{no}}<br />
| [[プロプライエタリ・ソフトウェア|プロプライエタリ]]<br />
| MathWorksによる買収により、[[MATLAB]]のアドオンの一つとなり、単体での販売終了。[http://www.mathworks.com/support/faq/mupad.html]<br />
|-<br />
! [[PARI/GP]]<br />
| Henri Cohen, Karim Belabas, et al.<br />
| [[1985年]]<br />
| ?<br />
| 2.3.1<br />
| 無料<br />
| {{yes}}<br />
| [[GNU General Public License|GPL]]<br />
| [[数論]]、任意精度計算<br />
|-<br />
! [[REDUCE_(数式処理システム)|REDUCE]]<br />
| Anthony C. Hearn<br />
| 1960年代<br />
| [[1968年]]<br />
| csl version 31-dec-08<br />
| 無料(2008年後半より。それまでは$140 USD、コード付$600)<br />
| {{yes}}<br />
| 修正[[BSD License|BSDライセンス]](2008年後半より。それまでは[[プロプライエタリ・ソフトウェア|プロプライエタリ]])<br />
|<br />
|-<br />
! [[Risa/Asir]]<br />
| (株)[[富士通研究所]](オリジナル)、OpenXM(神戸版)<br />
| [[1989年]]<br />
| <br />
| <br />
| 非商用は無料<br />
| {{no}}<br />
| オリジナルソースは[[プロプライエタリ・ソフトウェア|プロプライエタリ]]<br />
|<br />
|-<br />
! [[Sage_(数式処理システム)|Sage]]<br />
| William Stein<br />
| 2005年<br />
| 2006年<br />
| 6.3<br />
| 無料<br />
| {{yes}}<br />
| [[GNU General Public License|GPL]]<br />
|<br />
|-<br />
! [[SINGULAR_(数式処理システム)|SINGULAR]]<br />
| カイザースラウテルン大学<br />
| [[1984年]]<br />
| [[1997年]]<br />
| 3.0.1<br />
| 無料<br />
| {{yes}}<br />
| [[GNU General Public License|GPL]]<br />
| 多項式、環、イデアル<br />
|-<br />
! [[HP-49シリーズ]]<br />
| [[ヒューレット・パッカード]]<br />
| {{?}}<br />
| [[1999年]]<br />
| {{?}}<br />
| メーカー希望小売価格$110から<br />
| {{no}}<br />
| [[プロプライエタリ・ソフトウェア|プロプライエタリ]]、一部[[GNU Lesser General Public License|LGPL]]<br />
| [[ハンドヘルドコンピュータ|ハンドヘルド]]数式処理計算機<br />
|-<br />
! [[TI-89シリーズ|TI-89]]<br />
| [[テキサス・インスツルメンツ]]<br />
| {{?}}<br />
| [[1998年]]<br />
| 2.09<br />
| 製造中止<br />
| {{no}}<br />
| [[プロプライエタリ・ソフトウェア|プロプライエタリ]]<br />
| ハンドヘルド数式処理計算機<br />
|-<br />
! [[TI-89シリーズ|TI-89 Titanium]]<br />
| [[テキサス・インスツルメンツ]]<br />
| {{?}}<br />
| [[2004年]]<br />
| 4.00<br />
| メーカー希望小売価格$150<br />
| {{no}}<br />
| [[プロプライエタリ・ソフトウェア|プロプライエタリ]]<br />
| ハンドヘルド数式処理計算機<br />
|-<br />
! [[TI-92シリーズ|TI-92]]<br />
| [[テキサス・インスツルメンツ]]<br />
| {{?}}<br />
| [[1995年]]<br />
| {{?}}<br />
| 製造中止<br />
| {{no}}<br />
| [[プロプライエタリ・ソフトウェア|プロプライエタリ]]<br />
| ハンドヘルド数式処理計算機<br />
|-<br />
! [[TI-92シリーズ|TI-92 Plus]]<br />
| [[テキサス・インスツルメンツ]]<br />
| {{?}}<br />
| [[1998年]]<br />
| 2.09<br />
| 製造中止<br />
| {{no}}<br />
| [[プロプライエタリ・ソフトウェア|プロプライエタリ]]<br />
| ハンドヘルド数式処理計算機<br />
|-<br />
! [[TI-92シリーズ|Voyage 200]]<br />
| [[テキサス・インスツルメンツ]]<br />
| {{?}}<br />
| [[2002年]]<br />
| 3.10<br />
| メーカー希望小売価格$200<br />
| {{no}}<br />
| [[プロプライエタリ・ソフトウェア|プロプライエタリ]]<br />
| ハンドヘルド数式処理計算機<br />
|-<br />
! [[TI-Nspireシリーズ|TI-Nspire CAS]]<br />
| [[テキサス・インスツルメンツ]]<br />
| [[2006年]]<br />
| [[2008年]]<br />
| 1.4.11643<br />
| メーカー希望小売価格$129<br />
| {{no}}<br />
| [[プロプライエタリ・ソフトウェア|プロプライエタリ]]<br />
| ハンドヘルド数式処理計算機<br />
|-<br />
! [[WIRIS]]<br />
| WIRIS<br />
| [[1999年]]<br />
| [[1999年]]<br />
| 2.0<br />
| 無料<br />
| {{no}}<br />
| [[プロプライエタリ・ソフトウェア|プロプライエタリ]]<br />
|<br />
|-<br />
! [[Yacas]]<br />
| Ayal Pinkus et al.<br />
| {{?}}<br />
| {{?}}<br />
| 1.0.61<br />
| 無料<br />
| {{yes}}<br />
| [[GNU General Public License|GPL]]<br />
|<br />
|-<br />
! カルキング<br />
| (株)シンプレックス<br />
| {{?}}<br />
| {{?}}<br />
| 7<br />
| 5万円、2.5万円(アカデミック版)<br />
| {{no}}<br />
| [[プロプライエタリ・ソフトウェア|プロプライエタリ]]<br />
|<br />
|-<br />
! [[:en:SMath Studio|SMath studio]]<br />
| Andrey Ivashov<br />
| {{?}}<br />
| [[2005年]]<br />
| 0.95<br />
| 無料<br />
| {{no}}<br />
| {{?}}<br />
| Mathcadに類似した数学ノートブックソフト<br />
|-<br />
!<br />
! 開発者<br />
! 開発開始時期<br />
! 最初の公開/発売時期<br />
! 安定した最新版<br />
! 費用 ([[アメリカ合衆国ドル|USD]])<br />
! [[オープンソース]]<br />
! [[ライセンス]]<br />
! 注記<br />
|}<br />
<br />
その他にも、Python上で動作する「SymPy」もある。<br />
<br />
== OSサポート ==<br />
ネイティブコードで動く[[オペレーティングシステム]]([[エミュレータ|エミュレート]]を除く)。<br />
<br />
{| class="wikitable" style="font-size: smaller; text-align: center; width: 100%;"<br />
|-<br />
! style="width: 12em" |<br />
! [[Microsoft Windows|Windows]]<br />
! [[macOS]]<br />
! [[Linux]]<br />
! [[BSD]]<br />
! [[UNIX]]<br />
|-<br />
! [[Axiom (数式処理システム)|Axiom]]<br />
| {{Yes}}<br />
| {{?}}<br />
| {{Yes}}<br />
| {{?}}<br />
| {{?}}<br />
|-<br />
! [[CoCoAシステム|CoCoA]]<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
|-<br />
! [[Derive (数式処理システム)|Derive]]<br />
| {{Yes}}<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
|-<br />
! [[DoCon]]<br />
| {{?}}<br />
| {{?}}<br />
| {{Yes}}<br />
| {{?}}<br />
| {{?}}<br />
|-<br />
! [[Dynamic Computer Algebra System|DCAS]]<br />
| {{Yes}}<br />
| {{?}}<br />
| {{?}}<br />
| {{?}}<br />
| {{?}}<br />
|-<br />
! [[Eigenmath]]<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{?}}<br />
| {{?}}<br />
|-<br />
! [[Fermat (数式処理システム)|Fermat]]<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
|-<br />
! [[GAP (数式処理システム)|GAP]]<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
|-<br />
! [[GiNaC]]<br />
| {{Yes}}<br />
| {{?}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
|-<br />
! [[Macaulay (数式処理システム)|Macaulay]]<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{?}}<br />
| {{?}}<br />
|-<br />
! [[Magma (数式処理システム)|Magma]]<br />
| {{Yes}}<br />
| {{?}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
|-<br />
! [[Maple]]<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{?}}<br />
| {{Yes}}<br />
|-<br />
! [[Mathcad]]<br />
| {{Yes}}<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
|-<br />
! [[Mathematica]]<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{No}}<br />
| {{Yes}}<br />
|-<br />
! [[Mathomatic]]<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
|-<br />
! [[Maxima]]<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
|-<br />
! [[Mizar]]<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
|-<br />
! [[MuMATH]]<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
|-<br />
! [[MuPAD]]<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{No}}<br />
| {{No}}<br />
|-<br />
! [[PARI/GP]]<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
|-<br />
! [[REDUCE (数式処理システム)|REDUCE]]<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
|-<br />
! [[Risa/Asir]]<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
|-<br />
! [[Sage (数式処理システム)|Sage]]<br />
| {{No}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
|-<br />
! [[SINGULAR (数式処理システム)| SINGULAR]]<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
|-<br />
! [[HP-49シリーズ]]<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
|-<br />
! [[TI-89シリーズ|TI-89]]<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
|-<br />
! [[TI-89シリーズ|TI-89 Titanium]]<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
|-<br />
! [[TI-92シリーズ|TI-92]]<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
|-<br />
! [[TI-92シリーズ|TI-92 Plus]]<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
|-<br />
! [[TI-92シリーズ|Voyage 200]]<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
|-<br />
! [[TI-Nspireシリーズ|TI-Nspire]]<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
|-<br />
! [[WIRIS]]<br />
| {{?}}<br />
| {{?}}<br />
| {{?}}<br />
| {{?}}<br />
| {{?}}<br />
|-<br />
! [[Yacas]]<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
| {{Yes}}<br />
|-<br />
! カルキング<br />
| {{Yes}}<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
| {{No}}<br />
|-<br />
! <br />
! [[Microsoft Windows|Windows]]<br />
! [[macOS]]<br />
! [[Linux]]<br />
! [[BSD]]<br />
! [[UNIX]]<br />
|}<br />
<br />
== 脚注 ==<br />
{{脚注ヘルプ}}<br />
<references /><br />
<!-- == 関連項目 ==<br />
*[[List of graphing software]]<br />
*[[List of numerical analysis software]]<br />
*[[List of statistical packages]]<br />
*[[Comparison of numerical analysis software]]<br />
*[[Comparison of statistical packages]] --><br />
<br />
== 外部リンク ==<br />
オンラインで参照可能な数式処理システムのリスト。<br />
* https://web.archive.org/web/20110718004430/http://directory.google.com/Top/Science/Math/Algebra/Software/<br />
* http://www.cs.ru.nl/~freek/digimath/xindex.html<br />
* http://dmoz.org/Science/Math/Software/ (at the [[Open Directory Project]])<br />
* http://www.mat.univie.ac.at/~slc/divers/software.html<br />
* http://orms.mfo.de/about.php<br />
<br />
{{DEFAULTSORT:すうしきしよりしすてむのいちらん}}<br />
[[Category:数式処理システム|*]]<br />
[[Category:数学の一覧]]<br />
[[Category:数学ソフトウェアの比較]]<br />
[[Category:数学に関する記事]]</div>133.86.108.32分割数2017-11-21T05:44:43Z<p>133.86.108.32: </p>
<hr />
<div>{{翻訳中途|date=2011年8月|1=[[:en:Partition (number theory)]] 14:16, 19 August 2011}}<br />
<!--{{expert-subject|mathematics|date=February 2011}}--><br />
[[数論]]における'''分割数'''(ぶんかつすう、{{lang-en-short|''partition function''}}) ''p''(''n'') は[[自然数の分割|自然数 ''n'' の分割]](''n'' をその順番の[[違いを除いて]]自然数の和として表す方法)の総数を表す数論的函数である。ただし、規約として ''p''(0) = 1 および負の整数に対して ''p''(''n'') = 0 と定める。 <br />
<br />
== 分割数の値 ==<br />
分割数の値について、いくつかは {{OEIS|id=A000041}} を参照。<br />
<br />
* ''p''(1) = 1<br />
* ''p''(2) = 2<br />
* ''p''(3) = 3<br />
* ''p''(4) = 5<br />
* ''p''(5) = 7<br />
* ''p''(6) = 11<br />
* ''p''(7) = 15<br />
* ''p''(8) = 22<br />
* ''p''(9) = 30<br />
* ''p''(10) = 42<br />
* ''p''(100) = 190,569,292<br />
* ''p''(200) = 3,972,999,029,388<br />
* ''p''(1000) = 24,061,467,864,032,622,473,692,149,727,991 ≈ 2.4{{e|31}}.<br />
<br />
{{As of|2011|June}}、知られている中でこの形で得られる最大の[[素数]]は、Bernardo Boncompagni が発見した<ref>http://primes.utm.edu/top20/page.php?id=54</ref> ''p''(40100918) で、これは十進で 7047 桁の数値である。<br />
<br />
== 補助函数 ==<br />
分割函数をより扱いやすくする方法のひとつは、補助的な函数 ''p''(''k'', ''n'') を考えることである。これは少なくとも ''k'' 以上の自然数を用いて ''n'' を分割する方法の数を数えたもので、各 ''k'' に対して分割数を数えれば、次のいずれかの場合を見ればいいことになる。<br />
<br />
# 最小の成分がちょうど ''k'' である。<br />
# 最小の成分が ''k'' より真に大きい。<br />
<br />
前者に当たる分割の総数は ''p''(''k'', ''n'' &minus; ''k'') である。これをみるには、整数 ''n'' &minus; ''k'' を少なくとも ''k'' よりもサイズの大きい整数への分割を全て一覧したものを考えて、その一覧の各分割に "+&nbsp;''k''" することを考えればよい。<br />
<br />
このことは、補助的な函数を使って分割数のある種の漸化式を定義することに利用できる。つまり<br />
:<math>1+\sum_{k=1}^{\lfloor \frac{1}{2}n \rfloor} p(k,n-k) = p(n),</math><br />
が成立する。ここで、<math>\lfloor n\rfloor</math> は[[床函数]]である。<br />
<br />
後者に当たる分割の総数は ''p''(''k'' +1, ''n'') である。これは各成分が ''k'' 以上の分割から、ちょうど ''k'' になる成分を含むようなものを除いた結果は、すべての成分が ''k'' + 1 以上になっていなければならないことからわかる。<br />
<br />
さて、上記の二条件は[[互いに排他]]的であるから、''n'' の分割の総数というのは、それぞれの場合をあわせた ''p''(''k'' + 1, ''n'') + ''p''(''k'', ''n'' &minus; ''k'') となっていることがわかる。したがって、[[再帰的]]に、補助的な函数を<br />
<br />
* ''k'' > ''n'' のとき: ''p''(''k'', ''n'') = 0<br />
* ''k'' = ''n'' のとき: ''p''(''k'', ''n'') = 1<br />
* それ以外: ''p''(''k'', ''n'') = ''p''(''k''+1, ''n'') + ''p''(''k'', ''n'' &minus; ''k'')<br />
<br />
と定める。この函数は少し複雑な挙動を見せる傾向にある。<br />
<br />
:''p''(1, 4) = 5<br />
:''p''(2, 8) = 7<br />
:''p''(3, 12) = 9<br />
:''p''(4, 16) = 11<br />
:''p''(5, 20) = 13<br />
:''p''(6, 24) = '''16'''<br />
<br />
もともとの分割数 ''p''(''n'') はちょうど ''p''(1, ''n'') にあたる。<br />
<br />
いくつかの値については以下のとおり。<br />
<br />
{| class="wikitable" style="text-align:right; margin: 1ex auto 1ex auto; width:400px" align="center"<br />
!colspan=2 rowspan=2| || colspan="10" | k<br />
|-<br />
! 1 !! 2 !! 3 !! 4 !! 5 !! 6 !! 7 !! 8 !! 9 !! 10<br />
|-<br />
! rowspan="10" | n<br />
! 1<br />
|1||0||0||0||0||0||0||0||0||0<br />
|-<br />
!2<br />
|2||1||0||0||0||0||0||0||0||0<br />
|-<br />
!3<br />
|3||1||1||0||0||0||0||0||0||0<br />
|-<br />
!4<br />
|5||2||1||1||0||0||0||0||0||0<br />
|-<br />
!5<br />
|7||2||1||1||1||0||0||0||0||0<br />
|-<br />
!6<br />
|11||4||2||1||1||1||0||0||0||0<br />
|-<br />
!7<br />
|15||4||2||1||1||1||1||0||0||0<br />
|-<br />
!8<br />
|22||7||3||2||1||1||1||1||0||0<br />
|-<br />
!9<br />
|30||8||4||2||1||1||1||1||1||0<br />
|-<br />
!10<br />
|42||12||5||3||2||1||1||1||1||1<br />
|}<br />
<br />
== 分割数の母函数 ==<br />
分割数 ''p''(''n'') の[[母函数]]は、次の式で与えられる。<br />
<br />
:<math>\sum_{n=0}^\infty p(n)x^n = \prod_{k=1}^\infty \left(\frac {1}{1-x^k} \right).</math><br />
<br />
右辺の各項を[[幾何級数]]として展開すれば、これは<br />
<br />
:(1 + ''x'' + ''x''<sup>2</sup> + ''x''<sup>3</sup> + ...)(1 + ''x''<sup>2</sup> + ''x''<sup>4</sup> + ''x''<sup>6</sup> + ...)(1 + ''x''<sup>3</sup> + ''x''<sup>6</sup> + ''x''<sup>9</sup> + ...) ....<br />
<br />
と書くことができるが、ここから積をとって ''x''<sup>''n''</sup> の項となるものを拾い出せば<br />
<br />
:''n'' = ''a''<sub>1</sub> + 2''a''<sub>2</sub> + 3''a''<sub>3</sub> + ... = (1 + 1 + ... + 1) + (2 + 2 + ... + 2) + (3 + 3 + ... + 3) + ...,<br />
<br />
を得る。ここで各数 ''i'' は ''a''<sub>''i''</sub> 個ずつ現れる。これはまさに ''n'' の分割の定義そのものであるから、この無限積が求める母函数を与えることが確認できる。もっと一般に、整数 ''n'' の適当な集合 ''A'' に属する整数への分割数の母函数も、上記の式の項の ''k'' を ''A'' の弦となっているものにとることで得られる。この結果は[[レオンハルト・オイラー|オイラー]]による。<br />
<br />
オイラーによるこのような分割数の母函数の定式化は[[qポッホハマー記号| ''q''-ポッホハマー記号]]の特別な場合であり、また多くの[[モジュラー形式]]の積の定式化(特に[[デテキント・イータ函数]]の)と近い関係にある。また、この母函数表示を[[オイラーの五角数定理]]と合わせれば、次のような漸化式<br />
<br />
:''p''(''k'') = ''p''(''k'' &minus; 1) + ''p''(''k'' &minus; 2) &minus; ''p''(''k'' &minus; 5) &minus; ''p''(''k'' &minus; 7) + ''p''(''k'' &minus; 12) + ''p''(''k'' &minus; 15) &minus; ''p''(''k'' &minus; 22) &minus; ...<br />
<br />
を得る。ここで ''p''(0) = 1 および負の整数 ''k'' に対して ''p''(''k'') = 0 とし、和は ½''n''(3''n'' &minus; 1) の形(ただし ''n'' は正または負の整数全体を走る)の[[五角数|一般五角数]]全体にわたってとるものとする(順に ''n'' = 1, &minus;1, 2, &minus;2, 3, &minus;3, 4, &minus;4 ..., とすると、値として 1, 2, 5, 7, 12, 15, 22, 26, 35, 40, 51, ... が得られる)。和における符号は交互に&nbsp;+,&nbsp;+,&nbsp;&minus;,&nbsp;&minus;,&nbsp;+,&nbsp;+,&nbsp;... と続く。<br />
<br />
== 分割数の合同算術 ==<br />
{{Main|ラマヌジャンの合同式}}<br />
[[シュリニヴァーサ・ラマヌジャン|ラマヌジャン]]は 4 または 9 で終わる整数に対する分割数に関して合同式<br />
<br />
:<math>p(5k+4)\equiv 0 \pmod 5</math><br />
<br />
が成立することを発見したといわれる。例えば、整数 4 の分割数は 5 であり、整数 9 の分割数は 30、整数 14 の分割数は 135 といった具合である。ラマヌジャンはまた 7 および 11 に関する合同式<br />
<br />
:<math>\begin{align}<br />
p(7k + 5) &\equiv 0 \pmod 7\\<br />
p(11k+ 6) &\equiv 0 \pmod{11}<br />
\end{align}</math><br />
<br />
も発見している。さて、5, 7, 11 は連続する[[素数]]になっているので、次の素数 13 に対する同様の合同式 ''p''(13''k'' + ''a'') &equiv; 0 (mod 13) が適当な ''a'' のもと成立しそうなものだが、実際にはそうはなっていない。さらにいえば、''p''(''bk'' + ''a'') &equiv; 0 (mod ''b'') の形の合同式は 5, 7, 11 以外のどの素数 ''b'' に対しても成立しないことが示せる<ref>S. Ahlgren and M. Boylan, Arithmetic properties of the partition function, Invent. Math.<br />
153 (2003), no. 3, 487–502.</ref>。<br />
<br />
1960年代に[[イリノイ大学シカゴ校]]の[[アーサー・オリバー・ロンスデール・アトキン|アトキン]]は、同様のいくつかの小さな素数を法とする合同式を発見している。例えば<br />
:<math>p(11^3 \cdot 13 \cdot k + 237)\equiv 0 \pmod {13}</math><br />
<br />
のようなものが含まれる。2000年には、[[ウィスコンシン大学マディソン校]]の[[ケン・オノ|小野]]([[:en:Ken Ono|Ken Ono]])は任意の素数を法とする同様の合同式の存在を示した。さらに数年後、小野はイリノイ大学の[[スコット・アールグレン]]とともに、6 と互いに素なすべての整数を法とする分割数の合同式が存在することを証明している<ref><br />
{{cite journal<br />
|doi = 10.1073/pnas.191488598<br />
|last1 = Ono<br />
|first1 = Ken<br />
|authorlink = Ken Ono<br />
|last2 = Ahlgren<br />
|first2 = Scott<br />
|year = 2001<br />
|title = Congruence properties for the partition function<br />
|journal = [[Proceedings of the National Academy of Sciences]]<br />
|volume = 98<br />
|issue = 23<br />
|pages = 12,882–12,884<br />
|url = http://www.math.wisc.edu/~ono/reprints/061.pdf<br />
|archiveurl = https://web.archive.org/web/20110607123453/http://www.math.wisc.edu/~ono/reprints/061.pdf<br />
|archivedate = 2011年6月7日<br />
|deadlinkdate = 2017年9月<br />
}}</ref>。<br />
<br />
* A.ブライチャー:「ラマヌジャンの予言」、日経サイエンス、2014年9月号、頁67-72.<br />
* Amanda Folsom, Zachary A. Kent and Ken Ono:"l-Adic Properties of the Partition Function", Advances in Mathematics, v.229, No.3, pp.1586-1609 (Feb. 15, 2012).<br />
* Ken Ono and Larry Rolen:"Ramanujan's Mock Theta Functions", Proc. National Academy of Sci. USA, v.110, No.15, pp.5765-5768(Apr. 9, 2013). url="www.ncbi.nlm.nih.gov/pmc/articles/PMC3625272".<br />
<br />
== 分割数の公式 ==<br />
<br />
分割数 ''p''(''n'') の[[漸近解析|漸近表示]]は、<br />
<br />
:<math>p(n) \sim \frac{1}{4n\sqrt{3}} e^{\pi \sqrt{\frac{2n}{3}}} \mbox { as } n\to \infty.</math><br />
<br />
で与えられる。この[[漸近公式]]は、[[ゴッドフレイ・ハロルド・ハーディ|ハーディ]]と[[シュリニヴァーサ・ラマヌジャン|ラマヌジャン]]によって1918年に初めて見出され、また、それとは独立に[[ジェームズ・ヴィクター・ウスペンスキー|ウスペンスキー]]が1920年に発見している。例えば ''p''(1000) を考えると、漸近公式からだいたい 2.4402&nbsp;&times;&nbsp;10<sup>31</sup> となることがわかるが、これは真の値とくらべても十分近い値である(真の値よりは 1.415% ほど大きい)。<br />
<br />
1937年に[[ハンス・ラーデマッハー|ラーデマッハー]]はハーディとラマヌジャンの結果に基づいて次の[[発散級数]]表示<br />
<br />
:<math>p(n)=\frac{1}{\pi \sqrt{2}} \sum_{k=1}^\infty \sqrt{k}\, A_k(n)\,<br />
\frac{d}{dn} \left(<br />
\frac {1} {\sqrt{n-\frac{1}{24}}}<br />
\sinh \left[ \frac{\pi}{k}<br />
\sqrt{\frac{2}{3}\left(n-\frac{1}{24}\right)}\right]<br />
\right)<br />
</math><br />
を得ている。ただし<br />
:<math>A_k(n) = \sum_{0\le m< k\atop (m,k)=1}e^{\pi i\left[s(m,k)-\frac{1}{k} 2nm \right]}</math><br />
<br />
とおいた。この式の微分の箇所はもう少し簡単な形に直せる<ref>{{cite web|title=WolframAlpha|url=http://www.wolframalpha.com/input/?i=d%2Fdn+%28%281%2F%28sqrt%28n-%281%2F24%29%29%29*sinh%28pi%2Fk*sqrt%28%282%2F3%29*%28n-%281%2F24%29%29%29%29%29|accessdate=2011-08-21}}</ref>。ここで、記号 (''m'', ''n'') = 1 は ''m'' の値として ''n'' と[[互いに素]]であるものだけを考えることを意味する。また函数 ''s''(''m'',&nbsp;''k'') は[[デデキント和]]である。ラーデマッハーの公式の証明は[[フォード円]]、[[ファレイ数列]]、[[モジュラー群|モジュラー対称性]]および[[デデキント・イータ函数]]などを主に使ってなされる。<br />
<br />
2011年1月、小野と[[ダルムシュタット工科大学]]のジャン・ヘンドリック・ブルーニエは、任意の自然数 ''n'' に対する ''p''(''n'') を決定する有限で代数的な公式を得たと発表した<ref>http://www.aimath.org/news/partition/</ref><ref>Bruinier and Ono, [http://arxiv.org/abs/1104.1182v1/ "Algebraic formulas for the coefficients of half-integral weight harmonic weak Maass forms"]</ref>。<br />
<br />
分割数は ''n'' の「五角数分割」上の和として表すことができる。<br />
:<math> n = k_1 + 2k_2 + 5k_5 + \cdots = \sum_m q_m k_{q_m}</math> <br />
を ''n'' の五角数分割とする。ここに各 ''q''<sub>''m''</sub> = ''m''(3''m'' &minus; 1)/2 は一般五角数(GPN, 数列 {{OEIS2C|A001318}})で ''q''<sub>''M''</sub> は ''n'' を超えない最大の GPN である。故に<ref>J. Malenfant, [http://arxiv.org/abs/1103.1585/ "Finite, Closed-form Expressions for the Partition Function and for Euler, Bernoulli, and Stirling Numbers"]. </ref><br />
<br />
:<math> p(n) = \sum_{k_1 =0}^{n} \sum_{k_2 =0}^{\lfloor n/2 \rfloor } \sum_{k_5 =0}^{\lfloor n/5 \rfloor } <br />
\cdots \sum_{k_{q_{M}} =0}^{\lfloor n/q_M \rfloor } (-1)^A<br />
\left( \begin{array}{c} K \\ k_1, k_2, k_5, \ldots ,k_{q_M} \end{array} \right) <br />
\delta_{n, \sum q_m k_{q_{m}}}, </math><br />
を得る。ここで<br />
:<math> \begin{align}<br />
K & = k_1 + k_2 + k_5 + k_7 + \cdots, \\<br />
A & = k_5 + k_7 + k_{22} +k_{26} + \cdots <br />
=\sum_{m= \pm 2, \pm 4, \ldots} k_{q_{m}},<br />
\end{align}</math><br />
<br />
および<br />
<br />
:<math> \left( \begin{array}{c} K \\ k_1, \ldots , k_n \end{array} \right)<br />
\equiv \frac{ K!}{k_1! \cdots k_n!} ~ \delta_{K,k_1+ \cdots + k_n} </math><br />
は[[多項係数]]である。''p''(''n'') に対する和の項の数は数列 {{OEIS2C|A095699}} で与えられる。例えば 8 = 7+1 = 5+2+1 = 5+1+1+1 = 2+2+2+2 = ... だから<br />
<br />
:<math>\begin{align} p(8) &= - \left( \begin{array}{c} 2 \\ 1,0,0,1 \end{array} \right) - \left( \begin{array}{c} 3 \\ 1,1,1,0 \end{array} \right) <br />
- \left( \begin{array}{c} 4 \\ 3,0,1,0 \end{array} \right) + \left( \begin{array}{c} 4 \\ 0,4,0,0 \end{array} \right) \\ & ~~~<br />
+ \left( \begin{array}{c} 5 \\ 2,3,0,0 \end{array} \right) +<br />
\left( \begin{array}{c} 6 \\ 4,2,0,0 \end{array} \right) <br />
+ \left( \begin{array}{c} 7 \\ 6,1,0,0 \end{array} \right) +<br />
\left( \begin{array}{c} 8 \\ 8,0,0,0 \end{array} \right) \\<br />
&= -2 - 6 - 4 + 1 + 10 + 15 + 7 + 1 = 22\end{align} </math><br />
となる。<br />
<br />
=== 行列式公式 ===<br />
<br />
各自然数 ''n'' に対して ''p''(''n'') は次の式で求められる。<br />
<br />
: <math>\begin{matrix} {\rm GPN's} \\0\\1\\2\\~\\~\\5\\~\\7\\~\\~\\ \vdots\\~\\~ \end{matrix} ~~~ <br />
p(n) = \begin{vmatrix}<br />
~~1 & -1~& ~& ~ & ~ &~&~&~ \\<br />
~~1 & ~1 & -1~& ~ \\<br />
~~0 & ~1 & ~1 & -1~& ~ \\<br />
~~0 & ~0 & ~1 & ~1 &-1~ & ~ \\<br />
-1 & ~0 & ~0 & ~1 & ~1 &-1~ & ~ \\<br />
~~0 & -1~& ~0 & ~0 & ~1 & ~1 & -1~& ~ \\<br />
-1 & ~0 & -1~& ~0 & ~0 & ~1 & ~1 & -1~&~ \\ <br />
~~0 & -1~& ~0 & -1~& ~0 & ~0 & ~1 & ~1 & -1~&~ \\<br />
~~0 & ~0 & -1~& ~0 & -1~& ~0 & ~0 & ~1 & ~1 & ~ \\ <br />
~~\vdots & ~ & ~ & ~ & ~ & ~ & ~ & ~ & ~ & \ddots\\ <br />
\end{vmatrix} _{ n \times n} .</math><br />
<br />
つまり、''p''(''n'') は上記無限次元[[テープリッツ行列]]を ''n'' &times; ''n'' で止めた正方行列の[[行列式]]である。この行列の零でない成分は、一般五角数 ''q''<sub>''m''</sub> 番目の行の先頭から斜め (diagonal) に配置され(主対角線のひとつ上側の成分 (superdiagonel) は仮想的に 0 番目の行からと考える)、その値が (&minus;1)<sup>''m''+1</sup> となっている。この行列式公式は、次の行列の間の関係式<br />
<br />
:<math> \begin{pmatrix}<br />
~p(0) & ~ \\<br />
~p(1) & p(0) &~ \\<br />
~p(2) & p(1) & p(0) & ~ \\<br />
~p(3) & p(2) & p(1) & p(0) & ~ \\<br />
~p(4) & p(3) & p(2) & p(1) & p(0) & ~ \\<br />
~p(5) & p(4) & p(3) & p(2) & p(1) & p(0) & ~ \\<br />
~ \vdots & ~ & ~ & ~ & ~ & ~ & \ddots<br />
\end{pmatrix} = \begin{pmatrix}<br />
~1 & ~ \\ <br />
-1 & ~1 &~ \\<br />
-1 & -1 & ~1 & ~ \\<br />
~0 & -1 & -1 & ~1 & ~ \\<br />
~0 & ~0 & -1 & -1 &~1 & ~ \\<br />
~1 &~0 & ~0 & -1 & -1 &~1 & ~ \\ <br />
~\vdots & ~ & ~ & ~ & ~ & ~ & \ddots <br />
\end{pmatrix}^{-1}<br />
</math><br />
<br />
に同値なのだが、この関係式自体は単に上述の母函数の間の関係式(と五角数定理)を行列の形にまとめたものである。<br />
<br />
ラマヌジャンの公式<ref>Berndt and Ono, "Ramanujan's Unpublished Manuscript on the Partition and Tau Functions with Proofs and Commentary" {{cite web |url=http://www.math.wisc.edu/~ono/reprints/044.pdf |title=アーカイブされたコピー |accessdate=2011年3月20日 |archiveurl=https://web.archive.org/web/20110927023150/http://www.math.wisc.edu/~ono/reprints/044.pdf |archivedate=2011年9月27日 |deadlinkdate=2017年9月 }}</ref><br />
<br />
:<math> \sum_{k=0}^{\infty} p(5k+4)x^k = 5\,\frac{(x^5)^5_{\infty}}{(x)^6_{\infty}} ,\quad (x)_{\infty} \equiv \prod_{m=1}^{\infty}(1-x^m)</math><br />
<br />
を使えば、分割数 ''p''(5''k'' &minus; 1) はより小さな ''k''-次行列の行列式<br />
:<math> p(5k-1) = 5 \cdot\begin{vmatrix}<br />
~1 & ~ & ~ & ~ & ~ & ~ & ~&~1~\\<br />
-6 & ~1 & ~ & ~ & ~ & ~ & ~&~0~\\<br />
~9 & -6 & ~1 & ~ & ~ & ~ & ~&~0~\\<br />
~10& ~9 & -6 & ~1 & ~ & ~ & ~&~0~\\<br />
-30& ~10& ~9 & -6 &~1 & ~ & ~&~0~\\<br />
~0 & -30& ~10& ~9 & -6& ~1& ~&-5~\\<br />
~11& ~0& -30& ~10& ~9& -6& ~&~0~\\<br />
~ \vdots& ~&~&~&~&~&~\ddots & ~\vdots~ \end{vmatrix}_{k \times k}<br />
</math><br />
として表すことができる。第一列の成分のなす数列は {{OEIS2C|A000729}} であり、最終列の(最初の 1 から)五つ毎に現れる非零成分のなす数列 (1, &minus;5, 5, 10, &minus;15, &minus;6, &hellip;) は、数列 {{OEIS2C|A000728}} になっている(最終列はそれ以外の成分は全て零である)。例えば <br />
<br />
:<math> p(29) = 5 \cdot\begin{vmatrix}<br />
~1 & ~ & ~ & ~ & ~ & ~1~\\<br />
-6 & ~1 & ~ & ~ & ~ & ~0~\\<br />
~9 & -6 & ~1& ~ & ~ & ~0~\\<br />
~10& ~9 & -6& ~1& ~ & ~0~\\<br />
-30& ~10& ~9& -6& ~1& ~0~\\ <br />
0 & -30&~10& ~9& -6& -5~<br />
\end{vmatrix}= 4565.</math><br />
<br />
同様のやり方で、残り二つのラマヌジャンの公式を使えば、分割数 ''p''(7''k'' &minus; 2) および ''p''(25''k'' &minus; 1) も ''k''-次の行列式 <br />
<br />
:<math> <br />
\begin{align}<br />
p(7k-2) &= 7 \cdot\begin{vmatrix}<br />
~1& ~ & ~ & ~& 1~\\<br />
-8& ~1 & ~ & ~& 3~\\<br />
~20& -8 & ~1& ~& 2~\\<br />
~0 & ~20& -8& ~& 8~\\ <br />
~\vdots & ~& ~&\ddots &\vdots~<br />
\end{vmatrix}_{k\times k},\\ <br />
p(25k-1) & = 25 \cdot\begin{vmatrix}<br />
~1& ~ &~& ~& 63~\\<br />
-31& ~1& ~ &~& 4988~\\<br />
~434 & -31& ~1& ~ & 95751~\\<br />
-3565 &~434 & -31& ~ & 766014~\\ <br />
~ \vdots & ~&~& \ddots & \vdots~<br />
\end{vmatrix}_{k\times k}<br />
\end{align}<br />
</math><br />
<br />
と表すことができる。これらの行列の最初の列はそれぞれ {{OEIS2C|A000731}} および {{OEIS2C|A010836}} であり、最終列は次の展開<br />
<br />
:<math> <br />
\begin{align}<br />
(x)^4_{\infty} (x^7)^3_{\infty} +7x(x^7)^7_{\infty} &= 1 +3x+2x^2+8x^3 + \cdots ;\\& \\<br />
63(x)^{24}_{\infty}(x^5)^{6}_{\infty} + 5^3 \cdot 52x(x)^{18}_{\infty}(x^5)^{12}_{\infty} <br />
&+ 5^5 \cdot 63x^2(x)^{12}_{\infty}(x^5)^{18}_{\infty} \\<br />
+~ 5^{8} \cdot 6x^3(x)^{6}_{\infty}(x^5)^{24}_{\infty} &+ 5^{10} \cdot x^4 (x^5)^{30}_{\infty} \\<br />
& = 63+4988x +95751x^2 +766014x^3 + \cdots<br />
\end{align}<br />
</math><br />
<br />
から得られる。例えば ''p''(149) は<br />
<br />
: <math> p(149) = 25 \cdot \begin{vmatrix} <br />
~1 & ~ & ~ &~&~& ~63~\\<br />
-31 & ~1 & ~ &~&~& ~4988~\\<br />
~434 & -31 & ~1 &~&~& ~95751~\\<br />
-3565 & ~434 & -31&~1&~& ~766014~\\<br />
~18445 & -3565 & ~434& -31&~1& ~3323665~\\ <br />
-57505 & ~18445 &-3565& ~434& -31 &~ 8359848~\\ <br />
\end{vmatrix}= 37027355200</math><br />
<br />
で計算できる。また、分割数の第 ''n''-部分和は行列式<br />
<br />
:<math> \sum_{k=0}^n p(k) = \begin{vmatrix}<br />
~2 & -1 & ~ \\<br />
~0 & ~2 & -1 & ~ \\<br />
-1 & ~0 & ~2 & -1 & ~\\<br />
~0 & -1 & ~0 & ~2 & -1 & ~ \\<br />
-1 & ~0 & -1 & ~0 & ~2 & -1 & ~ \\<br />
~1 & -1 & ~0 & -1 & ~0 & ~2 & -1 & ~ \\<br />
~\vdots &~&~&~&~&~& \ddots & \ddots & ~\\<br />
c_{n-1} & c_{n-2} & ~& \cdots &~&~&~&~ 2 & -1 &~\\<br />
c_n & c_{n-1} &~& \cdots &~& ~&~& ~0 &~2&~<br />
\end{vmatrix}_{n \times n}</math><br />
<br />
で与えられる。ただし、''c''<sub>0</sub> = &minus;1, ''c''<sub>1</sub> = 2, ''c''<sub>2</sub> = 0 かつ ''k'' &gt; 2 に対しては <br />
<br />
:<math> c_k = \begin{cases}<br />
(-1)^{m+1}& \text{if } k = q_m ,\\<br />
(-1)^m & \text{if } k=q_m+1, \\<br />
0 & \text{otherwise.}<br />
\end{cases}</math><br />
<br />
とする。相異なる整数成分への分割の分割数を ''q''(''n'') と書けば(これは[[自然数の分割|分割]]の項に述べるように奇数成分への分割の分割数とも等しく)、<br />
: <math> q(n) = \begin{vmatrix}<br />
~1& ~ & ~ & ~ & ~ & ~ & ~ &~&~1~\\<br />
-1& ~1& ~ & ~ & ~ & ~ & ~ &~&~0~\\<br />
-1& -1& ~1& ~ & ~ & ~ & ~ &~&-1~\\<br />
~0& -1& -1& ~1& ~ & ~ & ~ &~&~0~\\<br />
~0& ~0& -1& -1& ~1& ~ & ~ &~&-1~\\<br />
~1& ~0& ~0& -1& -1& ~1& ~ &~&~0~\\<br />
~0& ~1& ~0& ~0& -1& -1& ~1&~&~0~\\<br />
~1& ~0& ~1& ~0& ~0& -1& -1&~&~0~\\ <br />
~ \vdots &~&~&~&~&~& ~& \ddots & ~\vdots~<br />
\end{vmatrix}_{(n+1) \times (n+1)} </math><br />
<br />
が成り立つ。第一列は数列 {{OEIS2C|A010815}} で、最終列は 2''q''<sub>''m''</sub> + 1 行目の成分が (&minus;1)<sup>''m''</sup> でそれ以外の成分は零である。<br />
<br />
== 関連項目 ==<br />
* [[自然数の分割]]<br />
* {{仮リンク|エバンスのサンプリング公式|en|Ewens's sampling formula}} (Ewens's sampling formula)<br />
* {{仮リンク|ファア・ディ・ブルーノの公式|en|Faà di Bruno's formula}} (Faà di Bruno's formula)<br />
* {{仮リンク|spt函数|en|Spt function}} (Smallest-parts function)<br />
<br />
== 注意 ==<br />
{{reflist}}<br />
<br />
== 参考文献 ==<br />
* [[George E. Andrews]], ''The Theory of Partitions'' (1976), Cambridge University Press. '' ISBN 0-521-63766-X ''.<br />
* [[Tom M. Apostol]], ''Modular functions and Dirichlet Series in Number Theory'' (1990), Springer-Verlag, New York. ISBN 0-387-97127-0 ''(See chapter 5 for a modern pedagogical intro to Rademacher's formula)''.<br />
* [[Marcus du Sautoy|Sautoy, Marcus Du.]] The Music of the Primes. New York: Perennial-HarperCollins, 2003.<br />
* [[D. H. Lehmer]], ''On the remainder and convergence of the series for the partition function'' Trans. Amer. Math. Soc. '''46'''(1939) pp 362–373. ''(Provides the main formula (no derivatives), remainder, and older form for A<sub>k</sub>(n).)''<br />
* Gupta, Gwyther, Miller, ''Roy. Soc. Math. Tables, vol 4, Tables of partitions'', (1962) ''(Has text, nearly complete bibliography, but they (and Abramowitz) missed the Selberg formula for A<sub>k</sub>(n), which is in Whiteman.)''<br />
* [[Ian G. Macdonald]], ''Symmetric functions and Hall polynomials'', [[オックスフォード大学出版局|Oxford University Press]], 1979, ISBN 0-19-853530-9 (See section I.1)<br />
* [[Ken Ono]], ''Distribution of the partition function modulo m'', Annals of Mathematics '''151''' (2000) pp 293–307.'' (This paper proves congruences modulo every prime greater than 3)''<br />
* [[Richard P. Stanley]], [http://www-math.mit.edu/~rstan/ec/ ''Enumerative Combinatorics'', Volumes 1 and 2]. Cambridge University Press, 1999 ISBN 0-521-56069-1<br />
* A. L. Whiteman, [http://projecteuclid.org/Dienst/UI/1.0/Summarize/euclid.pjm/1103044252 ''A sum connected with the series for the partition function''], Pacific Journal of Math. '''6''':1 (1956) 159–176. ''(Provides the Selberg formula. The older form is the finite Fourier expansion of Selberg.)''<br />
* [[Hans Rademacher]], ''Collected Papers of Hans Rademacher'', (1974) MIT Press; v II, p 100–107, 108–122, 460–475.<br />
* {{cite book |author=Mikl&oacute;s B&oacute;na |title=A Walk Through Combinatorics: An Introduction to Enumeration and Graph Theory |publisher=World Scientific Publishing |year=2002 |isbn=981-02-4900-4}} (qn elementary introduction to the topic of integer partition, including a discussion of Ferrers graphs)<br />
* {{cite book |author=George E. Andrews, Kimmo Eriksson |title=Integer Partitions |publisher=Cambridge University Press |year=2004 |isbn=0-521-60090-1}}<br />
* 'A Disappearing Number', devised piece by [[Complicite]], mention Ramanujan's work on the Partition Function, 2007<br />
<br />
== 外部リンク ==<br />
* [https://web.archive.org/web/20061110032720/http://www.btinternet.com/~se16/js/partitions.htm Partition and composition calculator]<br />
* [http://www.numericana.com/data/partition.htm First 4096 values of the partition function ]<br />
* [http://www.numericana.com/answer/numbers.htm#partitions An algorithm to compute the partition function]<br />
* {{MathWorld | urlname=PartitionFunctionP | title=Partition Function P}}<br />
* [http://www.luschny.de/math/seq/CountingWithPartitions.html Counting with partitions] with reference tables to the On-Line Encyclopedia of Integer Sequences<br />
* [http://search.cpan.org/perldoc?Integer::Partition Integer::Partition Perl module] from [[CPAN]]<br />
* Amanda Folsom, Zachary A. Kent, and Ken Ono, [http://www.aimath.org/news/partition/folsom-kent-ono.pdf ''l''-adic properties of the partition function]. In press.<br />
* Jan Hendrik Bruinier and Ken Ono, [http://www.aimath.org/news/partition/brunier-ono.pdf An algebraic formula for the partition function]. In press.<br />
* [http://homepage2.nifty.com/hiranouchi/seminar/040430.pdf 保型形式の2進的性質について] 田口雄一郎(九大数理) 整数論セミナー<br />
<br />
{{DEFAULTSORT:ふんかつすう}}<br />
[[Category:数論]]<br />
[[Category:組合せ論]]<br />
[[Category:整数論的関数]]<br />
[[Category:整数の類]]<br />
[[Category:数学に関する記事]]</div>133.86.108.32個別要素法2014-06-25T03:57:37Z<p>133.86.108.32: /* 参考文献 */</p>
<hr />
<div>'''個別要素法'''(こべつようそほう、{{lang-en-short|Distinct Element Method}}、DEM)または'''離散要素法'''({{lang|en|Discrete Element Method}}、DEM)は、解析の対象を自由に運動できる多角形や円形・球の要素の集合体としてモデル化し、要素間の接触・滑動を考慮して、各時刻におけるそれぞれの要素の運動を逐次追跡して解析する手法である。もとは岩盤工学に適用するためにPeter A. Cundall (1971)およびCundall and Strack (1979)<ref>P. A. Cundall, O. D. L. Strack, "A discrete numerical model for granular assembles," Geotechnique 29 (1979) 47-65.</ref>により発表された論文に端を発しており、現在は液状化や土石流など地盤の挙動解析や[[コンクリート]]構造物、[[粉体]]([[化学工学]]、[[リチウムイオン電池]]、[[薬学]]、[[農学]]など)、磁気相互作用力を有する電子写真システムの[[トナー]]の挙動解析などに用いられている。<br />
<br />
== 概略 ==<br />
以下に、円形要素を用いた際の運動方程式を示す。<br />
<br />
質量<math>m_i</math>、慣性モーメント<math>I_i</math>のある円形要素<math>i</math>について、次の運動方程式が成り立つ。<br />
:<math>m_i \ddot{\textbf{u}}+C_i \dot{\textbf{u}}+F_i =0 </math><br />
:<math>I_i \ddot{ \phi }+D_i \dot{ \phi }+M_i =0 </math><br />
<br />
ここに<math>F_i</math>:要素に働く合力、<math>M_i</math>:要素に働く合モーメント、<math>C_i</math>、<math>D_i</math>:減衰定数、<math>\textbf{u}</math>:要素の変位ベクトル、<math>\phi</math>:要素の回転変位である。<br />
<br />
要素同士が接触しているときは<math>F_i = K \textbf{u}</math>(<math>K</math>は弾性定数)及び<math>M_i = K r^2</math>(<math>r</math>は円の半径)、離れているときは、<math>F_i = M_i = 0</math>で表される。ただし、重力を考える場合は合力の項で考慮する。<br />
<br />
上式を数値積分することで、逐次変位ベクトルと回転変位を得ることができる。<br />
<br />
== 参考文献 ==<br />
{{reflist}}<br />
* {{cite|和書 |author=伯野元彦 |title=破壊のシミュレーション -拡張個別要素法で破壊を追う- |publisher=森北出版 |year=1997 |isbn=}}<br />
* {{cite|和書 |author=酒井幹夫 |title=粉体の数値シミュレーション |publisher=丸善出版 |year=2012 |isbn=978-4-621-08582-0 |pages=1-11}}<br />
* Catherine O'Sullivan, 鈴木 輝一 (訳):「粒子個別要素法」、森北出版、ISBN:978-4627915817、(2014年5月27日発売)<br />
<br />
<br />
{{DEFAULTSORT:こへつようそほう}}<br />
[[Category:数値微分方程式]]<br />
[[Category:数学に関する記事]]</div>133.86.108.32 Warning: Cannot modify header information - headers already sent by (output started at /home/users/1/sub.jp-asate/web/wiki/extensions/HeadScript/HeadScript.php:3) in /home/users/1/sub.jp-asate/web/wiki/includes/WebResponse.php on line 46