\YGraph
関数 y=f(x)のグラフを描画します。
perl との連携機能が必要です。
- 注1:perl との連携機能については,こちらをご覧ください。
- 注2:丸ごとパックでは使えません。代えて YGurafuコマンドを用います。
定義されているスタイルファイル †
emathPp.sty
書式 †
\YGraph<#1>'#2'^#3#4
- color
- 線に色をつけます。
- dash
- 破線で描画します (pszahyou環境のみ)。
- dx
- hidariM
- hidariT
- infx
- kiretto
- leftP
- linethickness
- 線の太さを変更します。
- maxx
- migiM
- migiT
- minx
- rightP
- supx
基本例 †
LaTeX のマクロを用いて,関数 y=f(x) のグラフを描画します。
- zahyou環境では,tpic-specials による描画です。
- pszahyou環境では,PostScript による描画です。
- セミコロン(;)区切りで複数の関数を描画することも可能です。
- \YGraph コマンドは,perl との連携機能を必要とします。
その実現方法については,
こちらをご覧ください。
定義域の制限(1) minx, maxx †
描画範囲は,zahyou環境で設定した \truexmin〜\truexmax がデフォルトです。
これを制限するには
<minx=..>
<maxx=..>
オプションを用います。右辺値は,\unitlength を単位とする無名数です。
- minx, maxx による制限は,閉区間指定です。開区間を指定するには,次の項
infx, supx
を用います。
定義域の制限(2) infx, supx †
定義域を開区間で制限するには
<infx=..>
<supx=..>
オプションを用います。
- dx=... オプションと併用するときは,infx, supx に先んじて dx オプション指定をします。
- $pi は,円周率を表す perl の定数です。
\YGraph は,perl を呼び出しますから,関数式,区間などに perl の式を記述できます。
定義域の制限(3) '...' オプションによる区間指定 †
分数関数 y=1/x のグラフは
x<0 と x>0
に分けて描画しなければなりません。
- '...' オプションを用いて,2つの区間をまとめることが出来ます。
- 区間端点には,perlの計算式を記述できます。
定義域の制限(4) 不連続点の指定 (^{...} オプション) †
分数関数 y=1/((x+2)(x-1)) のグラフを描画するには,区間を
'(,-2)|(-2,1)|(1,)'
と与えることになりますが,別法として不連続点を ^{...} オプションで指定する方法もあります。
定義域の制限(5) 分割点の指定 (^{...} オプション) †
y=|(x+2)(x-1)| のグラフは x=-2, 1 で分割して描画しますが,
\YGraph^{*-2,*1}
と,分割点に * を前置します。
- この場合,分割せずに描画すると,
折れ点補正でグラフが x軸の下に飛び出したり,
折れ点の少し上方で折り返ってしまったり
と乱れます。
- 注意 ^{...} オプションと '...' オプションを併用することは出来ません。
入試問題から †
端点 †
端点 †
描画したグラフの端点を取得したい場合は
leftP, rightP
オプションを用います。
右辺値は,制御綴りの先頭 \ をのぞいた文字列で,
<rightP=R>
とすれば,制御綴 \R に右の端点の座標が戻ります。
- 単に <rightP> とすれば,制御綴 \rightP に右端点が戻ります。
老婆心ながら,<rightP=> と等号だけをつけると意味が違って \rightP コマンドは無効コマンドとなります。
- leftP オプションも rightP オプションと同様で,グラフの左端点を取得します。
- 単に \YGraph{....} としただけでは,\leftP, \rightP は定義されません。
\rightP を使いたければ,\YGraph<rightP>{....} としておかねばなりません。
- \leftP, \rightP を正しく取得するには,次の条件が満たされていなければなりません。
描画する x の範囲の中点における関数値が,描画する y の範囲に含まれている
この条件が満たされていないときは,xmin, xmax 等のキーを用いて描画する x の範囲を狭めておかなければなりません。
- migiT は rightP と同義のキーです。
hidariT も leftP と同義のキーです。
端点に文字列 †
右端点に文字列を出力するには,<migiM=..> オプションを用います。
- 文字列には,配置オプションを前置することが出来ます。
- 配置オプションを省略した場合は,[e] とみなされます。
- 左端点に出力するオプションは <hidariM=..> です。
配置オプション省略時は [w] とみなされます。
線の修飾 †
太さの変更 †
線の太さを変更するには,<linethickness=..> オプションを用います。
デフォルト値は
zahyou(*)環境では,0.3pt
pszahyou(*)環境では,1pt
となっています。
破線 †
グラフを破線で描画するには,<dash=..> オプションを用います。
ただし,pszahyou(*)環境に対してのみ用いられます。
カラー †
グラフに色をつけるには,<color=..> オプションを用います。
関数定義 †
関数式記述の具体例をいくつかあげておきます。
有理関数 †
四則演算子(+-*/)を用いて記述します。
べきは ^ ではなく ** で表すというのが,perl の約束事です。
下の例は,分数関数 y=(x^3+1)/(3x^2+1) のグラフを描画しています。
有理整関数 †
特に整関数の場合は,係数を降べき順に並べて表す \defcsvfunc も便利です。
- \defcsvfunc については,そのページをご参照ください。
分数関数 †
分母が0となる点は,定義域から除外されますので,区間を分割して
infx=.., supx=...
オプションを用いて描画することになります。
無理関数 †
平方根 †
平方根を求める perl の関数は
sqrt(....)
です。
下の例では,y=√(1-2x) のグラフを描画していますが,
定義域が x≦1/2 ですから
<maxx=1/2>
としておかねばなりません。
- このグラフでは,頂点 (1/2,0) の近傍での変化が激しく,グラフがその変化に追随できていません。
(画面の png 画像では,あいまいですから,
pdf でご覧ください。
頂点から垂直に立ち上がらず,斜めに折れた感じになっています。)
x の刻みをもっと細かくする必要があります。そのためのオプションが
<dx=..>
です。どの程度に細かくするか面倒ですから
<dx=*>
とすれば,自動的に刻み値を決めるオプションもあります。
- どの程度改善されたかを
pdf でご覧ください。
- 微分係数の絶対値が大きくなる場合は,
媒介変数表示
逆関数
を利用するのが有効です。下は逆関数のグラフを \XGraph を用いて描画しています。
立方根など †
立方根は,標準の perl には用意されていません。
X**(1/3)
と,べきの形にして処理することになりますが,
底は正でなければならない
ということで,x≧0 と x<0 に場合分けして処理をしなければなりません。
指数関数 †
底が e †
底が e(自然対数の底)の場合は,perl の組み込み関数 exp() が便利です。
一般の底 †
一般の底の場合は,perl のべき演算子 ** を用います。
入試問題から †
対数関数 †
自然対数 †
底が e(自然対数の底)の場合は,perl の組み込み関数 log() が便利です。
真数条件から,定義域の制限を受けることがありますので,
infx, supx
を用いて,変域制限を記述する必要があります。
- $Napier は,emath.pl で定義されている perl の定数で,自然対数の底を表します。
一般の底 †
一般の底の場合は,底の変換公式を用いて自然対数で表すことになりますが,
emath では,perl の関数
log2(底,真数)
を用意しています。
入試問題から †
三角関数 †
三角関数 †
perl の組み込み関数 sin(), cos(), tan() の単位は弧度法(ラジアン)です。
- $pi は,emath.pl で定義されている perl の定数で,円周率を表します。
- グリッド線を入れてみます。
- 目盛りを打ちます。
減衰振動 †
減衰振動 y=e^{-x}sin(X) などは,減衰が早いので,
振動する前に x軸にへばりついてしまいます。
- 「らしく」するには,
e^{-x/a}
sin(bx)
yscale
などを用いるのも一法でしょう。
sin(1/x) †
y=sin(1/x) は,x=0 近辺で激しく振動します。
単純に \YGraph{sin(1/X)} としたのでは,とらえきれません。
- 対応策の一つは
区間分割,刻み値の修正
次の例は,
x軸との交点で描画区間を分割し,描画区間の幅に応じて刻み値を修正した
ものです。
- 同じ手法で y=x*sin(1/x) を描画してみます。
入試問題から †
注意事項 †
- このコマンドは,perl との連携機能を必要とします。
したがって,platex を起動するさい
platex -shell-escape hoge.tex
などど,起動オプション
-shell-escape
を付加しなければなりません。
詳しくはperlとの連携ページをご覧ください。
(以前は,起動オプションを -sh と省略形で済ますことが出来ましたが,
最近の platex では,省略形は許されなくなっています。)
関連事項 †
- perl との連携についてはこちらをご覧ください。
- y=f(x) と y=g(x) の交点
- 曲線の描画
- 数学III