\YGraph

関数 y=f(x)のグラフを描画します。
perl との連携機能が必要です。
  • 注1:perl との連携機能については,こちらをご覧ください。
  • 注2:丸ごとパックでは使えません。代えて YGurafuコマンドを用います。
     
 

定義されているスタイルファイル

emathPp.sty

書式

\YGraph<#1>'#2'^#3#4
  • #1: key=val
  • #2: 定義域の指定
  • #3: 不連続点/分割点
  • #4: 関数式
    #4 で記述された関数 y=f(x) のグラフを描画します。
    関数式は,perl の文法に従って記述しますが,
    独立変数は X で表します。
    セミコロン(;)区切りで複数の関数を記述できます。
  • #2 における定義域指定は
    • [x1,x2] 閉区間指定
    • (x1,x2) 開区間指定
    • (,x2) [x1,] など端点省略
    • (x1,x2] 半開区間
    • それらを | でつなげた複数区間
  • #3 不連続点/分割点をコンマ区切 csv列で与えます(分割点の場合は * を前置)。

    #2 と #3 は併用不可。

  • #1 における有効な key は
color
線に色をつけます。
dash
破線で描画します (pszahyou環境のみ)。
dx
hidariM
hidariT
infx
kiretto
leftP
linethickness
線の太さを変更します。
maxx
migiM
migiT
minx
rightP
supx

基本例

LaTeX のマクロを用いて,関数 y=f(x) のグラフを描画します。
  • zahyou環境では,tpic-specials による描画です。
    YGraph01.png
  • pszahyou環境では,PostScript による描画です。
    YGraph01ps.png
  • セミコロン(;)区切りで複数の関数を描画することも可能です。
    YGraph02.png
  • \YGraph コマンドは,perl との連携機能を必要とします。
    その実現方法については, こちらをご覧ください。

定義域の制限(1) minx, maxx

描画範囲は,zahyou環境で設定した \truexmin〜\truexmax がデフォルトです。
これを制限するには
  <minx=..>
  <maxx=..>
オプションを用います。右辺値は,\unitlength を単位とする無名数です。
minmax01.png
  • minx, maxx による制限は,閉区間指定です。開区間を指定するには,次の項
      infx, supx
    を用います。

定義域の制限(2) infx, supx

定義域を開区間で制限するには
  <infx=..>
  <supx=..>
オプションを用います。
minmax02a.png
  • dx=... オプションと併用するときは,infx, supx に先んじて dx オプション指定をします。
  • $pi は,円周率を表す perl の定数です。
    \YGraph は,perl を呼び出しますから,関数式,区間などに perl の式を記述できます。

定義域の制限(3) '...' オプションによる区間指定

分数関数 y=1/x のグラフは
  x<0 と x>0
に分けて描画しなければなりません。
kukan01.png
  • '...' オプションを用いて,2つの区間をまとめることが出来ます。
    kukan02.png
  • 区間端点には,perlの計算式を記述できます。
    kukan03.png

定義域の制限(4) 不連続点の指定 (^{...} オプション)

分数関数 y=1/((x+2)(x-1)) のグラフを描画するには,区間を
  '(,-2)|(-2,1)|(1,)'
と与えることになりますが,別法として不連続点を ^{...} オプションで指定する方法もあります。
gap01.png

定義域の制限(5) 分割点の指定 (^{...} オプション)

y=|(x+2)(x-1)| のグラフは x=-2, 1 で分割して描画しますが,
  \YGraph^{*-2,*1}
と,分割点に * を前置します。
gap02.png
  • この場合,分割せずに描画すると,
      折れ点補正でグラフが x軸の下に飛び出したり,
      折れ点の少し上方で折り返ってしまったり
    と乱れます。
    gap03.png
  • 注意 ^{...} オプションと '...' オプションを併用することは出来ません。

入試問題から

2012 東北大学file0010201202.tex0010201202fig.png
2012 帯広畜産大学file0005201202.tex0005201202fig.png
2012 横浜国立大学file0034201205.tex0034201205fig.png
2012 信州大学file0040201208.tex0040201208fig.png

端点

端点

描画したグラフの端点を取得したい場合は
  leftP, rightP
オプションを用います。
右辺値は,制御綴りの先頭 \ をのぞいた文字列で,
  <rightP=R>
とすれば,制御綴 \R に右の端点の座標が戻ります。
rightP01.png
  • 単に <rightP> とすれば,制御綴 \rightP に右端点が戻ります。
    老婆心ながら,<rightP=> と等号だけをつけると意味が違って \rightP コマンドは無効コマンドとなります。
    rightP02.png
  • leftP オプションも rightP オプションと同様で,グラフの左端点を取得します。
    leftP01.png
  1. 単に \YGraph{....} としただけでは,\leftP, \rightP は定義されません。
    \rightP を使いたければ,\YGraph<rightP>{....} としておかねばなりません。
  2. \leftP, \rightP を正しく取得するには,次の条件が満たされていなければなりません。
      描画する x の範囲の中点における関数値が,描画する y の範囲に含まれている
    この条件が満たされていないときは,xmin, xmax 等のキーを用いて描画する x の範囲を狭めておかなければなりません。
  3. migiT は rightP と同義のキーです。
    hidariT も leftP と同義のキーです。

端点に文字列

右端点に文字列を出力するには,<migiM=..> オプションを用います。
migiM01.png
  • 文字列には,配置オプションを前置することが出来ます。
    migiM02.png
  • 配置オプションを省略した場合は,[e] とみなされます。
  • 左端点に出力するオプションは <hidariM=..> です。
    配置オプション省略時は [w] とみなされます。
    hidariM01.png

線の修飾

太さの変更

線の太さを変更するには,<linethickness=..> オプションを用います。
デフォルト値は
  zahyou(*)環境では,0.3pt
  pszahyou(*)環境では,1pt
となっています。
linethickness01.png

破線

グラフを破線で描画するには,<dash=..> オプションを用います。
ただし,pszahyou(*)環境に対してのみ用いられます。
dash01.png

カラー

グラフに色をつけるには,<color=..> オプションを用います。
color01.png
  • iro も color と同義のキーです。

関数定義

関数式記述の具体例をいくつかあげておきます。

有理関数

四則演算子(+-*/)を用いて記述します。
べきは ^ ではなく ** で表すというのが,perl の約束事です。
下の例は,分数関数 y=(x^3+1)/(3x^2+1) のグラフを描画しています。
func01.png
  • 係数と X の間の演算子 * は省略できません。

有理整関数

特に整関数の場合は,係数を降べき順に並べて表す \defcsvfunc も便利です。
defcsvfunc01.png

分数関数

分母が0となる点は,定義域から除外されますので,区間を分割して
  infx=.., supx=...
オプションを用いて描画することになります。

#ref(): File not found: "bunsuu01a.png" at page "YGraph"

無理関数

平方根

平方根を求める perl の関数は
  sqrt(....)
です。
下の例では,y=√(1-2x) のグラフを描画していますが,
定義域が x≦1/2 ですから
  <maxx=1/2>
としておかねばなりません。

sqrt01.png
  • このグラフでは,頂点 (1/2,0) の近傍での変化が激しく,グラフがその変化に追随できていません。
    (画面の png 画像では,あいまいですから,filepdf でご覧ください。
    頂点から垂直に立ち上がらず,斜めに折れた感じになっています。)
    x の刻みをもっと細かくする必要があります。そのためのオプションが
      <dx=..>
    です。どの程度に細かくするか面倒ですから
      <dx=*>
    とすれば,自動的に刻み値を決めるオプションもあります。
    sqrt02.png
  • どの程度改善されたかを filepdf でご覧ください。
  • 微分係数の絶対値が大きくなる場合は,
      媒介変数表示
      逆関数
    を利用するのが有効です。下は逆関数のグラフを \XGraph を用いて描画しています。
    sqrt11.png

立方根など

立方根は,標準の perl には用意されていません。
  X**(1/3)
と,べきの形にして処理することになりますが,
  底は正でなければならない
ということで,x≧0 と x<0 に場合分けして処理をしなければなりません。
sqrt03.png
  • これも逆関数の利用が簡潔です。
    sqrt13.png

指数関数

底が e

底が e(自然対数の底)の場合は,perl の組み込み関数 exp() が便利です。
sisuu01.png

一般の底

一般の底の場合は,perl のべき演算子 ** を用います。
sisuu02.png

入試問題から

2008 横浜国立大学file0034200814.tex0034200814fig.png
2007 関西大学file2218200701.tex2218200701fig.png

対数関数

自然対数

底が e(自然対数の底)の場合は,perl の組み込み関数 log() が便利です。
真数条件から,定義域の制限を受けることがありますので,
  infx, supx
を用いて,変域制限を記述する必要があります。
taisuu01.png
  • $Napier は,emath.pl で定義されている perl の定数で,自然対数の底を表します。

一般の底

一般の底の場合は,底の変換公式を用いて自然対数で表すことになりますが,
emath では,perl の関数
  log2(底,真数)
を用意しています。
taisuu02.png

入試問題から

2005 山口大学file0063200506.tex0063200506fig.png
2005 会津大学file1045200511.tex1045200511fig.png

三角関数

三角関数

perl の組み込み関数 sin(), cos(), tan() の単位は弧度法(ラジアン)です。
sankaku01.png
  • $pi は,emath.pl で定義されている perl の定数で,円周率を表します。
  • グリッド線を入れてみます。
    sankaku02.png
  • 目盛りを打ちます。
    sankaku03.png

減衰振動

減衰振動 y=e^{-x}sin(X) などは,減衰が早いので,
振動する前に x軸にへばりついてしまいます。
gensui01.png
  • 「らしく」するには,
      e^{-x/a}
      sin(bx)
      yscale
    などを用いるのも一法でしょう。
    gensui02.png

sin(1/x)

y=sin(1/x) は,x=0 近辺で激しく振動します。
単純に \YGraph{sin(1/X)} としたのでは,とらえきれません。
sin1X00.png
  • 対応策の一つは
      区間分割,刻み値の修正
    次の例は,
      x軸との交点で描画区間を分割し,描画区間の幅に応じて刻み値を修正した
    ものです。
    sin1X01.png
  • 同じ手法で y=x*sin(1/x) を描画してみます。
    Xsin1X01.png

入試問題から

2005 九州工業大学file0071200504.tex0071200504fig.png
2005 北海道工業大学file2009200524.tex2009200524fig.png

注意事項

  • このコマンドは,perl との連携機能を必要とします。
    したがって,platex を起動するさい
       platex -shell-escape hoge.tex
    などど,起動オプション
       -shell-escape を付加しなければなりません。
    詳しくはperlとの連携ページをご覧ください。
    (以前は,起動オプションを -sh と省略形で済ますことが出来ましたが,
    最近の platex では,省略形は許されなくなっています。)

関連事項

  1. perl との連携についてはこちらをご覧ください。
  2. y=f(x) と y=g(x) の交点
  3. 曲線の描画
  4. 数学III

添付ファイル: filesin1X01p.tex 52件 [詳細] filesin1X01.png 139件 [詳細] filesin1X00.png 123件 [詳細] filemigiM02.png 93件 [詳細] filemigiM01.png 94件 [詳細] filehidariM01.png 129件 [詳細] fileXsin1X01p.tex 56件 [詳細] fileXsin1X01.png 133件 [詳細] filekukan03.png 198件 [詳細] filekukan02.png 191件 [詳細] filekukan01.png 221件 [詳細] filegap03.png 145件 [詳細] filegap02.png 162件 [詳細] filegap01.png 179件 [詳細] fileYGraph02.png 223件 [詳細] file0040201208fig.png 176件 [詳細] file0040201208.tex 215件 [詳細] file0034201205fig.png 170件 [詳細] file0034201205.tex 135件 [詳細] file0010201202fig.png 196件 [詳細] file0010201202.tex 96件 [詳細] file0005201202fig.png 188件 [詳細] file0005201202.tex 202件 [詳細] filesqrt13.png 180件 [詳細] filesqrt11.png 148件 [詳細] fileminmax02a.png 222件 [詳細] fileYGraph01ps.png 245件 [詳細] fileYGraph01ps-p.tex 312件 [詳細] fileYGraph01p.tex 336件 [詳細] filetaisuu02.png 251件 [詳細] filetaisuu01.png 225件 [詳細] filesqrt03.png 203件 [詳細] filesqrt02.png 216件 [詳細] filesqrt02.pdf 323件 [詳細] filesqrt01.png 182件 [詳細] filesqrt01.pdf 338件 [詳細] filesisuu02.png 231件 [詳細] filesisuu01.png 219件 [詳細] filesankaku03.png 224件 [詳細] filesankaku02.png 219件 [詳細] filesankaku01.png 239件 [詳細] filerightP02.png 193件 [詳細] filerightP01.png 232件 [詳細] fileminmax02.png 88件 [詳細] fileminmax01.png 244件 [詳細] filelinethickness01.png 250件 [詳細] fileleftP01.png 243件 [詳細] filegensui02.png 228件 [詳細] filegensui01.png 215件 [詳細] filefunc01.png 247件 [詳細] filedefcsvfunc01.png 170件 [詳細] filedash01.png 256件 [詳細] filecolor01.png 225件 [詳細] filebunsuu01.png 101件 [詳細] fileYGraph01.png 362件 [詳細] file2218200701fig.png 222件 [詳細] file2218200701.tex 342件 [詳細] file2009200524fig.png 174件 [詳細] file2009200524.tex 434件 [詳細] file1045200511fig.png 203件 [詳細] file1045200511.tex 303件 [詳細] file0071200504fig.png 224件 [詳細] file0071200504.tex 366件 [詳細] file0063200506fig.png 168件 [詳細] file0063200506.tex 309件 [詳細] file0034200814fig.png 215件 [詳細] file0034200814.tex 433件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-11-27 (木) 19:48:49 (1242d)