22.数学関数命令

22.1.関数の種類

使用可能な関数を以下に示します。

表27.使用可能な数学関数

関数 説明 引数の範囲
SQRT[x] 平方根 0 <= x
SIN[x] 三角関数 単位はdegree なし
COS[x] なし
TAN[x] 90,270±360n以外
ASIN[x] -1 <= x <= 1
ACOS[x] -1 <= x <= 1
ATAN[x] なし
ATAN2[x,y] x=0、y=0以外
LN[x] 自然対数 0 < x
EXP[x] 指数関数 なし
ABS[x] 絶対値 なし
TRUNC[x] 切捨て -2.1*10^9 <= x <=2.1*10^9
ROUND[x] 四捨五入 -2.1*10^9 <= x <=2.1*10^9

  • 三角関数で使用する単位はDegreeです。

  • RadianとDegreeの変換関数はサポートされていません。必要であれば、定数(57.29579 又は 0.017453)を乗じて変換してください。

22.2.数学関数命令の形式

数学関数命令の形式を以下に示します。

22.2.1.代入文の形式

  • 引数が一つの関数(ATAN2以外全て)

  • 引数が二つの関数(ATAN2のみ)

  • 関数の引数として指定できるのは、レジスタ及びヒキスウです。

  • 定数は指定できません。

22.2.2.条件比較文の形式

  • (数値)には、複合演算機能で指定できる全ての数値に相当する命令が教示できます。

  • 条件が満たされている場合に、(文)が実行されます。

  • 関数の引数として指定できるのは、レジスタ及びヒキスウです。

  • 定数は指定できません。

22.2.3.待機文の形式

  • (数値)には、複合演算機能で指定できる全ての数値に相当する命令が教示できます。

  • 条件が満たされるまで、待機します。

  • 関数の引数として指定できるのは、レジスタ及びヒキスウです。

  • 定数は指定できません。

22.3.数学関数命令の詳細

22.3.1.平方根(SQRT)

関数名:SQRT[X]

引数:正の整数、正の実数

この関数は、引数の平方根を計算する関数です。

例:

このTPプログラムを実行すると、以下の結果が得られます。

引数に負の値を指定すると、以下のエラーが発生します。

22.3.2.正弦関数(SIN)

関数名:SIN[X]

引数:整数または実数で、単位はDegreeです。

この関数は引数に対して正弦関数(SIN)を実行した結果を返します。

例:

このTPプログラムを実行すると、以下の結果が得られます。

22.3.3.余弦関数(COS)

関数名:COS[X]

引数:整数または実数で、単位はDegreeです。

この関数は引数に対して余弦関数(COS)を実行した結果を返します。

例:

このTPプログラムを実行すると、以下の結果が得られます。

22.3.4.正接関数(TAN)

関数名:TAN[X]

引数:整数または実数で、単位はDegreeです。

この関数は引数に対して正接関数(TAN)を実行した結果を返します。

例:

このTPプログラムを実行すると、以下の結果が得られます。

引数に、180*n+90を指定し、実行すると、以下エラーが発生します。

22.3.5.逆正弦関数(ASIN)

関数名:ASIN[x]

引数:整数または実数(-1 =< x <= 1)

この関数は引数に対して逆正弦関数(SIN-1)を実行した結果を返します。単位はDegreeです。

例:

このTPプログラムを実行すると、以下の結果が得られます。

引数に、x>1、x<-1を指定し、実行すると、以下のエラーが発生します。

22.3.6.逆余弦関数(ACOS)

関数名:ACOS[x]

引数:整数または実数(-1 =< x <= 1)

この関数は引数に対して逆余弦関数(COS-1)を実行した結果を返します。単位はDegreeです。

例:

このTPプログラムを実行すると、以下の結果が得られます。

引数に、x>1、x<-1を指定し、実行すると、以下のエラーが発生します。

22.3.7.逆正接関数(ATAN2)

関数名:ATAN2[x,y]

第一引数:ATAN2を求める座標のxを指定します。

第二引数:ATAN2を求める座標のyを指定します。

この関数はy/xの逆正接関数(TAN-1)を実行した結果を返します。引数x,yの符号に基づいて、戻り値の象限が決定されます。単位はDegreeです。

例:

このTPプログラムを実行すると、以下の結果が得られます。

22.3.8.逆正接関数(ATAN)

関数名:ATAN [x]

引数:整数または実数

この関数はxの逆正接関数(TAN-1)を実行した結果を返します。単位はDegreeです。

例:

このTPプログラムを実行すると、以下の結果が得られます。

22.3.9.指数関数

関数名:EXP[x]

引数:整数または実数

この関数はネイピア数(e =2.7182818…)のx乗を計算します。

例:

このTPプログラムを実行すると、以下の結果が得られます。

22.3.10.自然対数

関数名:LN[x]

引数:整数または実数

この関数は自然対数(ネイピア数(e =2.7182818…)を底とした対数)を計算します。

例:

このTPプログラムを実行すると、以下の結果が得られます。

引数に、x<=0を指定し、実行すると、以下のエラーが発生します。

22.3.11.絶対値(ABS)

関数名:ABS[x]

引数:整数または実数

この関数は引数の絶対値を返します。

例:

このTPプログラムを実行すると、以下の結果が得られます。

22.3.12.小数点以下切捨て(TRUNC)

関数名:TRUNC[x]

引数:整数または実数

この関数は引数の小数点以下を切り捨てたものを返します。

例:

このTPプログラムを実行すると、以下の結果が得られます。

22.3.13.小数点以下四捨五入(ROUND)

22.4.数学関数命令のバックグランド演算

数学関数命令は、複合演算機能に含まれるため、バックグラウンド演算での実行が可能です。

表28.数学関数命令のバックグラウンド演算

モード 項目の最大数 スキャン時間 使用可能なデータ 使用可能な演算子
標準モード 無制限 (標準モードの項目数 / 300-優先モードの項目数)*ITP 項目数は、そのモードのすべてのプログラムの項目数の合計を意味します。ITPは通常8ミリ秒です。 SIN, COS, TAN, ASIN, ACOS, ATAN, ATAN2, SQRT, LN, EXP, ABS, TRUNC, ROUND (,), =, <>, <, <=, >, >=, +, -, *, /, DIV, MOD
優先モード 270 8ミリ秒

  • 数学関数命令は実行に時間を要するため、項目数2または3としてスキャン時間を計算します。

  • ATAN2命令については項目数3として、スキャン時間を計算します。

  • そのほかの数学関数命令は項目数2として、スキャン時間を計算します。

22.5.数学関数命令の教示

数学関数は複合演算機能で使用します。数学関数の教示例を示します。ここでは、例として以下の命令の教示方法を説明します。

操作11.数学関数命令の教示

  1. F1[命令]キーを押します。

  2. 「レジスタ」を選択します。

  3. 複合演算命令「…=(…)」を選択します。

  4. レジスタ「レジ[ ]」を選択します。カーソルが括弧の中に移動します。

  5. レジスタのインデックスに「1」を入力します。

  6. カーソルが自動的に右辺に移動し、関数の入力画面が表示されます。

  7. 「SIN[ ]」を選択します。

  8. 関数を選択すると、カーソルがカッコ内へ移動し、デフォルトのレジ[…]が教示された状態になります。命令の引数として入力できるのは、レジ[ ]、又はヒキスウ[ ] です。定数を直接入力することは出来ません。標準では、レジ[ ]になっているので、ヒキスウ[ ]を使用する場合は、F3「間接指定」を押して、選択してください。

  9. ここでは、レジ[2]を使用するので、レジスタのインデックス”2”を入力します。

  10. 教示を終えるため、カーソルを下へ移動させます。

  11. 教示完了です。

22.6.数学関数命令の制限

  • 数学関数命令の引数として指定できるのは、レジスタ、またはヒキスウです。定数は直接入力できません。

  • 定数を直接使用したい場合は、一度レジスタへ代入して、使用してください。

  • 1行に複数の数学関数命令を教示することが出来ます。

  • 数学関数命令の入れ子はサポートされていません。

以下の命令は教示可能です。

以下の命令は教示不可能です。

  • 数学関数命令では、内部の数値計算による誤差によって10^(-7)程度の誤差が含まれる場合があります。

  • 具体的には、COS[レジ[1]](レジ[1]=90)を実行した場合に、結果が0ではなく、10^(-8)という結果になる場合があります。

22.7.例外と制限

数学関数命令では、以下の状況でアラームが発生します。

  • 関数の定義域を超える値を指定した場合

    例:

    • LN[レジ[1]] --- (レジ[1] = -1)

    • ASIN[レジ[2]] --- (レジ[2] = 10)

    • SQRT[レジ[3]] --- (レジ[3] = -4)

    • TAN[レジ[4]] --- (レジ[4] = 90)

  • 関数を実行した結果、値がオーバーフローした場合

    例:

    • EXP[レジ[1]] --- (レジ[1] = 100)

  • そのほかに、分母が0となるような割り算を実行すると、複合演算機能のエラーとなります。

    例:

    • レジ[1] / SIN[レジ[2]] --- (レジ[2] =0)

    • 10/COS[レジ[3]] --- (レジ[3] = 90)