F..3 Mathematica メモ

曲線などは、 Plot[]ParametricPlot[] などで描けば良い。

点や線分、円などはグラフィックス・プリミティブを用いて描くのが便利かも。

点の座標はリストとして定義する。
f1 = {-Sqrt[3], 0}; f2 = {Sqrt[3], 0}; p = {2 Cos[Pi/4], Sin[Pi/4]};
o = {0, 0};
点、線分、円などは、 Point[], Line[], Circle[] などで定義する。 「先頭の文字は大文字を使わないように」と言われているので、 名前の付け方が悩ましい。ここでは $ を使ってみた (悪趣味かも知れない)。
$F1 = Point[f1]; $F2 = Point[f2]; $P = Point[p];
$F1P = Line[{f1, p}]; $F2P = Line[{f2, p}];
r = 2; $C = Circle[o, r];
ここまで定義した点 $ \mathrm{F}_1$ , $ \mathrm{F}_2$ , $ \mathrm{P}$ , 線分 $ \mathrm{F}_1\mathrm{P}$ , $ \mathrm{F}_2\mathrm{P}$ , 円 $ \mathrm{C}$ からグラフィックス g1 を作る。
g1 = Graphics[{$F1,
               $F2,
               $P,
               $F1P, $F2P, $C}, Axes -> True]
(最後に Axes->True とすることで座標軸を描いています。 これは好みの問題かも。)

点の説明などの文字列をつけておくのが良いかも。 そうするためには、Text[] を使います。
g1 = Graphics[{$F1, Text["F1", f1 - {0, 0.1}],
               $F2, Text["F2", f2 - {0, 0.1}],
               $P, Text["P(x,y)", p + {0.1, 0.1}],
               $F1P, $F2P, $C}, Axes -> True]

何だか楕円を描くことの方が楽ですね。
g2 = ParametricPlot[{2 Cos[t], Sin[t]}, {t, 0, 2 Pi}];

g1, g2 を合わせて描きます。
g = Show[g1, g2, PlotRange -> All]
PlotRange->All は、 指定したグラフィックスをすべて描画できる範囲を確保する指示ですが、 今の場合は実は必要がありません (g1 の範囲は g2 の範囲よりも大きいので)。

これをファイルに出力するには
Export["mygraph.eps", g]
あるいは
Export["mygraph.pdf", g]
のようにして出力します。

残念ながら、現在の Mathematica で出力した PostScript データは、 しばしば巨大なサイズになってしまい、TEX では扱い辛くなることがあります。 代わりに PDF のようなフォーマットを採用するか、 一度 JPEG で出力してから PostScript に変換するなどの工夫が必要です。
Mathematica で変数 g に記憶されたグラフィックスを出力
In[] := Export["mygraph.jpg", g]
ターミナルで次のようにして変換します。
jpeg2ps mygraph.jpg > mygraph.eps

図 29: eps (昔はこれ一択だったのですが)
\includegraphics[width=10cm]{eps/mygraph.eps}

実は Text[] はかなり高機能である。 Text[Style[テキスト, 大きさ], 座標, オフセット] とか、 色々工夫が出来る。 「テキスト」にも単なる文字列でなく、 Mathematica の式が書ける。 下付き文字のある $ F_1$ は、 F の後に \fbox{Control} +_ で入力出来る (Mathematica の[ヘルプ]メニューの検索で、 「二次元式の入力」を見てみよう))。 $ P(x,y)$ を出力したい場合は P[x,y] とするとか。

図 30: ちょっとお色直し
\includegraphics[width=12cm]{eps/mygraph2.eps}

桂田 祐史
2018-10-12