\For
定義されているスタイルファイル
eclarith.sty
(丸め桁数指定オプションは emathC.sty で附加)
目的
実数変数の FOR ..... NEXT
書式
\For <#1>#2#3#4#5\Do#6 #1 : オプション引数で,ループ制御変数値を四捨五入で丸める位置を指定 通常は与えない。 <2>と指定したときは,小数第3位を四捨五入し第2位までの数値をループ制御変数値とする #2 : ループ制御変数(実数型) #3 : 初期値 #4 : 終り値(ただし,この値に対してループは実行されない) #5 : 変数の刻み値 ( \Ifor と異なり,刻み値は必須の引数で必ず与えなければなりません。) #6 : ループ本体(実行する内容)
使用例
単純な使用例
【解説】
区間 [-2, 2) を 0.2 刻みに,放物線 y=x^2 上の点に \Kuromaru を打ちます。 ループ継続条件は \x<2 (等号はつかない) すなわち \x=1.8 までで,BASIC と異なります。 あれ????? 実行されないはずの \x=2 に対応する点 (2, 4) と思しき点に\Kuromaru が打たれていますね。 これは,丸め誤差の影響です。その辺りを分析します。
丸め誤差の累積
【解説】
\For\x{-2}{2}{.2}\Do{\x\\} における制御変数の値を追跡した結果です。 刻み値 .2 が少し小さめに近似されているようで, 1.8 となるべきところが 1.79994 で,実行されないはずの 2.0 が 1.99994 で継続条件 \x < 2.0 を満たしてしまい,(2, 4) と思しき点に \Kuromaru がついたことになります。
制御変数を四捨五入
【解説】
\For に <1> オプションを附加し,制御変数 \x の値を 小数第2位を四捨五入し,小数第1位までとする ように指定しました。 その結果,終りは予定通り 1.8 となりました。
再び冒頭の例
【解説】
冒頭の例に <1> オプションを附加しました。 仕様通り \x は 1.8 で止まっています。
終値の調整
【解説】
\x=2.0 に対しても実行させたいときは, \For ループの終値を 2.0 より少し大きめに設定しなければなりません。
注意
\For に対する <#1> オプションで用いている四捨五入機能は
fp パッケージ に依存しています。 fp パッケージは CTAN にあります: CTAN/macros/latex/contrib/fp
関連事項
\Cfor \Ifor