tikzで無理関数を描写するとき,端が消えてしまう件

tikzで無理関数を描写するとき,端が消えてしまう件

- シグマ シグマ の投稿
返信数: 5

windows10,texlive2019を使用しています.

tikzでグラフを描画する際,半円を描こうとして

\draw[domain=-1:1, samples=100] plot(\x, {sqrt(1-(\x)^2)});
 
とすると,(1,0)に近い部分のグラフが微妙に消えてしまいます.
 
domainの範囲を入れ替えて
 
\draw[domain=1:-1, samples=100] plot(\x, {sqrt(1-(\x)^2)});
 
とすると,今度は(-1,0)に近い部分のグラフが消えてしまいます.
 
samplesの数値を変えても解決しません.
 
どうすれば,グラフの端(片方)が消えないようにできるかご教示頂けると幸いです.
 
ちなみに,半円を媒介変数表示すれば,上記の問題が解決できるのは確認済です.
 
 
シグマ シグマ への返信

Re: tikzで無理関数を描写するとき,端が消えてしまう件

- m c の投稿
これはtikz/TeXに限らず他のソフトでも共通にある話ですが,描画範囲を(-1,1)としていても実際に描画する線は有限の太さを持ちますから,描画範囲を超える部分が切られるのはある意味普通だと思います.

描画範囲を例えば(-1.1,1.1)とかにすると(もう少し正確に言うと描画する線の太さの半分だけ外側に設定すると)うまくいくのではないかと思います.
m c への返信

Re: tikzで無理関数を描写するとき,端が消えてしまう件

- 和田 勇 の投稿

m c さんの方法を試して見ましたが、   Package PGF Math Error: I cannot calculate the square-root of the negative number とエラーになってしまいます。エラーは domain=-1:1.00001 まで調整すれば解消するものの 問題は改善しませんでした。

このエラーの解消方法は Error in drawing a curve in Tikz を参考にすると良いと思いますが、 解法としては不採用だと思いますが、合わせ技?で「domain=-1:1」「domain=1:-1」という簡便 な方法も紹介しておきます。

シグマ シグマ への返信

Re: tikzで無理関数を描写するとき,端が消えてしまう件

- Yamamoto Munehiro "munepi" の投稿
本件は、samples=<十分な2の冪> にする手もあると思います。


%#!lualatex
\documentclass[a5paper,landscape]{article}\pagestyle{empty}
\usepackage{tikz}
\begin{document}

%% 第一事象と第二事象をあわせる
\begin{tikzpicture}[scale=1]
\draw[->,>=stealth] (-1.5,0)--(1.5,0) node[right]{$x$};
\draw[->,>=stealth] (0,-0.5)--(0,1.5) node[left]{$y$};
% % \draw[domain=-1:1, samples=300] plot(\x, {sqrt(1-(\x)^2)});
\draw[domain=-1:0.01, samples=300] plot(\x, {sqrt(1-(\x)^2)});
% % \draw[domain=1:-1, samples=300] plot(\x, {sqrt(1-(\x)^2)});
\draw[domain=1:-0.01, samples=300] plot(\x, {sqrt(1-(\x)^2)});
\end{tikzpicture}

%% samples=<2の冪>
\begin{tikzpicture}[scale=1]
\draw[->,>=stealth] (-1.5,0)--(1.5,0) node[right]{$x$};
\draw[->,>=stealth] (0,-0.5)--(0,1.5) node[left]{$y$};
\draw[domain=-1:1, samples=512] plot(\x, {sqrt(1-(\x)^2)});
\end{tikzpicture}
\end{document}
Yamamoto Munehiro "munepi" への返信

Re: tikzで無理関数を描写するとき,端が消えてしまう件

- 和田 勇 の投稿

samples= 綺麗な開放ですね。

こんな素敵な解の後なので、見劣りしますが、円弧などの曲線は短い線分で近似しているので、 今回のように samples=100 と十二分な大きさを指定していることが前提ですが、 最後の plot 点円弧の右端 (1,0)直線で結んでもさほど滑らかさは変わらないと思いますので、 以下のような方法でも良いかと思います。

  \draw[domain=-1:1, samples=100] plot(\x, {sqrt(1-(\x)^2)}) -- (1,0);