Skip to content Skip to navigation Skip to collection information

OpenStax-CNX

You are here: Home » Content » Connexions Tutorial and Reference (Japanese version) » Content MathML

Navigation

Recently Viewed

This feature requires Javascript to be enabled.
 

Content MathML

Module by: Sarah Coppin, Brent Hendricks, Hironori Takaryo, Connexions. E-mail the authors

Based on: Content MathML by Sarah Coppin, Brent Hendricks

Summary: A short introduction to writing Content MathML by hand. It covers tokens, prefix notation, and applying functions and operators. In addition it introduces writing derivatives, integrals, vectors, and matrices.

Warning:

This module contains Connexions documentation which is out-of-date. The contents of this module are provided here for historical purposes only and should not be considered accurate for the current version of the Connexions website. The current (English-language) version of this module can be located at http://cnx.org/content/m9008/latest/. If you have any additional questions or cannot find the answer to your question, please contact techsupport@cnx.org and we will be happy to assist in any way we can.

If you would like to assist Connexions by helping us update this module with an appropriate translation from the current English version, please contact us at cnx@cnx.org as we would appreciate your help with improving our support for non-English-speaking users.

 Content MathMLの正式なリファレンスはSection 4 of the MathML 2.0 Specificationです。World Wide Web Consortium(W3C)はMathMLのための使用を書きました。テキストは読み込み可能で、検索も簡単です。詳しいことや分からないことのために、このチュートリアルを見てください。このチュートリアルはMathML 2.0に基づいています。

 このドキュメントでは、MathMLネームスペース内でタグを定義するのに、プリフィックスmが使用されています。そのため、<apply>タグは<m:apply>として参照されます。MathMLネームスペース内でのすべてのマークアップは、<m:math>タグに囲まれなければならないことを覚えていてください。

Content MathMLの原理:関数と演算子の適用

 Content MathMLについて理解するための基本概念は、一連の機能と演算子を、他の要素に適用することから成っています。これを行うためにContent MathMLは、プリフィックスnatationを使用します。Prefix notationでは、演算子が最初になり、その後に演算対象が続きます。2+3は以下のように書きます。


	<m:math>
	 <m:apply>
	  <m:plus/>
	  <m:cn>2</m:cn>
	  <m:cn>3</m:cn>
	 </m:apply>
	</m:math>
This would display as 2+3 2 3 .

 上記のContent MathMLの例には3つの種類の要素があります。最初はapplyタグですこれは演算子(または関数)が演算対象に適用されようとしていることを示します。次は適用される関数もしくは演算子がきます。この例の場合、演算子plusが適用されています。最後は、演算子の後にくる演算対象です。この例の場合、演算対象は加えられる数です。要約すると、applyタグは、関数(sinやffなど)か演算子(+や-など)を、それに続く要素に適用します。

トークン

 Content MathMLには、cicncsymbolの3つのトークンがあります。トークンは基本的に最も低い要素です。トークンは作用している要素の種類を意味します。cnタグは、タグの中身が数字であることを示します。ciタグは、タグの中身が識別子であることを示します。識別子とは変数や関数のことです。例えばxxyyそしてffなどです。さらにci要素は、Presentation MathMLを含めることができます。トークン(特にcicn)は、Content MathMLで多く使用されます。あらゆる数、変数、または関数がトークンによってマークされます。

 csymbolは、cicnとは異なったタイプのトークンです。それは、新しいオブジェクトを作成するために使用されます。それはplainテキストかPresentation MathMLを含むことができます。Content MathMLで定義されている演算子か関数を必要とするとき、それの作成にcsymbolを使用することができます。

 cicsymbolの両方は、識別子か新しいシンボルがどように表示されるかを決めるPresentation MathMLを使用することができます。Presentation MathMLについてより詳しく学びたいなら、Section 3 of the MathML 2.0 Specificationを見てください。例えば、添字2があるxxを表示するためには以下のコードを使用すると良いでしょう。


	<m:math>
	 <m:ci>
	  <m:msub>
	   <m:mi>x</m:mi>
	   <m:mn>2</m:mn>
	  </m:msub>
	 </m:ci>
	</m:math>
This would display as x 2 x 2 .

 ci要素には、要素の内容に関する詳しい情報を提供するために使用するtype属性があります。例えば、ciタグの内容が関数(type='fn')、ベクトル(type='vector')、複素数(type='complex')、そして他のいろいろなもの同様に、宣言することができます。type属性の使用は、あなたが書いている数字の意味をエンコードするのを助けてくれます。

関数と演算子

 関数を変数に適用するため、関数の最初の引数を適用してください。2番目の引数は変数になるでしょう。例えば、以下のコードを使って意味をエンコードします。引数xxをもつffという関数(ffを意味しているciタグのtype属性にtype='fn'と入力してください)。


	<m:math>
	 <m:apply>
	  <m:ci type='fn'>f</m:ci>
	  <m:ci>x</m:ci>
	 </m:apply>
	</m:math>
This will display as fx f x .

 また事前に定義された関数と演算子がContent MathMLにはあります。例えばサインとコサインは事前に定義されています。事前に定義されたこれらの関数と演算子は、applyタグに直接続く空のタグです。xxを引数とするサイン関数は上記の例と同様に定義することができます。


	<m:math>
	 <m:apply>
	  <m:sin/>
	  <m:ci>x</m:ci>
	 </m:apply>
	</m:math>
This will display as sinx x .

 MathML specificationのチャプター4で、事前に定義された関数の違いについてのより詳しい記述を見ることができます。

 また、事前に定義された関数に加えて、多くの事前に定義された演算子があります。それらのいくつかは、plus(和)、minus(差)、times(乗)、divide(商)、power(べき乗)、root(ルート)などです。

 ほとんどの演算子が、特定の数の子要素タグを持っています。例えば、power演算子は2つの子要素を持っています。最初の子要素はbaseで、2番目がexponentのvalueです。しかし、多くの子要素を含むことができる他のタグがあります。例えば、plus演算子は1つ以上の子要素を持つことができます。これはn-ary operatorと呼ばれます。

 負の変数を表すことは、正の変数を表すことと少し異なる構文があります。この場合、あなたは問題の変数や数へ、plusやminus演算子を適用します。以下のコードは負のxxを表すためのものです。


	<m:math>
	 <m:apply>
	  <m:minus/>
	  <m:ci>x</m:ci>
	 </m:apply>
	</m:math>
This will display as x x .

 負の変数を表すこととは対象的に、負の数を表すには以下のようなコードを使います。


		<m:math><m:cn>-1</m:cn></m:math>
	
This will display as -1-1.

 より複雑な式を作成するためには、これらの要素を互いに入れ子にしてください。複雑な式はこのように作成することができます。bbccの和のaa倍は、以下のように記述されます。


	<m:math>
	 <m:apply>
	  <m:times/>
	  <m:ci>a</m:ci>
	  <m:apply>
	   <m:plus/>
	   <m:ci>b</m:ci>
	   <m:ci>c</m:ci>
	  </m:apply>
	 </m:apply>
	</m:math>
This will display as a(b+c) a b c .

 eq演算子は方程式を書くのに使用されます。それは他の演算子と同じように使用されます。これはapplyの最初の子要素です。それは2つ(以上)の子要素を持ちます。それらは等しい量になります(例えば右辺=左辺)。例えば、bbaa倍とccaa倍の和はbbccの和のaa倍と等しいことを表すなら、以下のように記述されます。


	<m:math>
	 <m:apply>
	  <m:eq/>
	  <m:apply>
	   <m:plus/>
	   <m:apply>
	    <m:times/>
	    <m:ci>a</m:ci>
	    <m:ci>b</m:ci>
	   </m:apply>
	   <m:apply>
	    <m:times/>
	    <m:ci>a</m:ci>
	    <m:ci>c</m:ci>
	   </m:apply>
	  </m:apply>
	  <m:apply>
	   <m:times/>
	   <m:ci>a</m:ci>
	   <m:apply>
	    <m:plus/>
	    <m:ci>b</m:ci>
	    <m:ci>c</m:ci>
	   </m:apply>
	  </m:apply>
	 </m:apply>
	</m:math>
This will display as ab+ac=a(b+c) a b a c a b c .

積分

 積分のための演算子はintです。しかし、演算子や上記の関数とは異なり、それは子要素を持っています。積分対象を表すbvar、積分範囲を表すlowlimituplimit(もしくはintervalcondition)です。lowlimituplimit(この2つはセット)、interval、およびconditionは3つの異なった方法です。bvar、lowlimituplimitinterval、およびconditionの各子要素は、トークン要素を取ることを忘れないでください。以下は、「0からbbまでのxxの積分」を表しています。


	<m:math>
	 <m:apply>
	  <m:int/>
	  <m:bvar><m:ci>x</m:ci></m:bvar>
	  <m:lowlimit><m:cn>0</m:cn></m:lowlimit>
	  <m:uplimit><m:ci>b</m:ci></m:uplimit>
	  <m:apply>
	   <m:ci type='fn'>f</m:ci>
	   <m:ci>x</m:ci>
	  </m:apply>
	 </m:apply>
	</m:math>
This will display as 0bfxdx x 0 b f x .

微分

 微分の演算子はdiffです。積分と同じような方法で行えます。まずbvarを使用して、微分対象を定義する必要があります。以下は、「ff(xx)に対するxxについての微分」を表しています。


	<m:math>
	 <m:apply>
	  <m:diff/>
	  <m:bvar>
	   <m:ci>x</m:ci>
	  </m:bvar>
	  <m:apply>
	   <m:ci type="fn">f</m:ci>
	   <m:ci>x</m:ci>
	  </m:apply>
	 </m:apply>
	</m:math>
This will display as dd x fx x f x .

 より高次の微分を関数に適用するには、bvarタグのdegreeタグを追加して行ってください。degreeタグは微分の回数を含みます。以下は、「ff(xx)のxxに対する2回微分」を表しています。


	<m:math>
	 <m:apply>
	  <m:diff/>
	  <m:bvar>
	   <m:ci>x</m:ci>
	   <m:degree><m:cn>2</m:cn></m:degree>
	  </m:bvar>
	  <m:apply><m:ci type="fn">f</m:ci>
	   <m:ci>x</m:ci>
	  </m:apply>
	 </m:apply>
	</m:math>
This will display as d2dx2fx x 2 f x .

ベクトルと行列

 ベクトルはvectorタグを使用し、他の要素の組み合わせで作成されます。


	<m:math>
	 <m:vector>
	  <m:apply>
	   <m:plus/>
	   <m:ci>x</m:ci>
	   <m:ci>y</m:ci>
	  </m:apply>
	  <m:ci>z</m:ci>
	  <m:cn>0</m:cn>
	 </m:vector>
	</m:math>
This will display as x+yz0 x y z 0 .

 行列は同じように行えます。matrix要素はいくつかのmatrixrow要素を含み、matrixrow要素は行列の値を含みます。


	<m:math>
	 <m:matrix>
	  <m:matrixrow>
	   <m:ci>a</m:ci>
	   <m:ci>b</m:ci>
	   <m:ci>c</m:ci>
	  </m:matrixrow>
	  <m:matrixrow>
	   <m:ci>d</m:ci>
	   <m:ci>e</m:ci>
	   <m:ci>f</m:ci>
	  </m:matrixrow>
	  <m:matrixrow>
	   <m:ci>g</m:ci>
	   <m:ci>h</m:ci>
	   <m:ci>j</m:ci>
	  </m:matrixrow>
	 </m:matrix>
	</m:math>
This will display as ( abc def ghj ) a b c d e f g h j .

 また、行列式を得るため、行列内の要素を選択して、行列を移項するための演算子があります。

エンティティ

 使用する必要があると思われる文字(例えば、Greek、letters)のために、MathMLはエンティティを定義しています。Content MathML内で、Presentation MathMLを埋め込む必要があるときに、それらは非常に役に立ちます。エンティティのリストはMathML 2.0の仕様の中で見つけられます。これらのエンティティを使用することは、ユニコードの文字で表すよりもいい方法です。なぜなら、これらエンティティは必要ならば再定義することができるからです。

最後に

 Content MathMLでは、さらにいろいろなことができます。Content MathMLを多く書く計画があるなら、MathML specificationを見ることをお勧めします。

Collection Navigation

Content actions

Download:

Collection as:

PDF | EPUB (?)

What is an EPUB file?

EPUB is an electronic book format that can be read on a variety of mobile devices.

Downloading to a reading device

For detailed instructions on how to download this content's EPUB to your specific device, click the "(?)" link.

| More downloads ...

Module as:

PDF | More downloads ...

Add:

Collection to:

My Favorites (?)

'My Favorites' is a special kind of lens which you can use to bookmark modules and collections. 'My Favorites' can only be seen by you, and collections saved in 'My Favorites' can remember the last module you were on. You need an account to use 'My Favorites'.

| A lens I own (?)

Definition of a lens

Lenses

A lens is a custom view of the content in the repository. You can think of it as a fancy kind of list that will let you see content through the eyes of organizations and people you trust.

What is in a lens?

Lens makers point to materials (modules and collections), creating a guide that includes their own comments and descriptive tags about the content.

Who can create a lens?

Any individual member, a community, or a respected organization.

What are tags? tag icon

Tags are descriptors added by lens makers to help label content, attaching a vocabulary that is meaningful in the context of the lens.

| External bookmarks

Module to:

My Favorites (?)

'My Favorites' is a special kind of lens which you can use to bookmark modules and collections. 'My Favorites' can only be seen by you, and collections saved in 'My Favorites' can remember the last module you were on. You need an account to use 'My Favorites'.

| A lens I own (?)

Definition of a lens

Lenses

A lens is a custom view of the content in the repository. You can think of it as a fancy kind of list that will let you see content through the eyes of organizations and people you trust.

What is in a lens?

Lens makers point to materials (modules and collections), creating a guide that includes their own comments and descriptive tags about the content.

Who can create a lens?

Any individual member, a community, or a respected organization.

What are tags? tag icon

Tags are descriptors added by lens makers to help label content, attaching a vocabulary that is meaningful in the context of the lens.

| External bookmarks