Я начинаю изучать pgfplots и хотел бы построить графики некоторых функций: кубического корня, обратных функций и некоторых тригонометрических функций.
Проблема в том, что для функции y=1/x она соединяет точки между отрицательной и положительной частями области: мы не можем увидеть асимптоту.
\documentclass{minimal}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[]
\addplot [domain=-10:10, samples=100]{x^(-1)};
\end{axis}
\end{tikzpicture}
\end{document}
С функцией y=x^{1/3} она не отображает отрицательную часть области. А с тригонометрическими функциями она вообще ничего не делает правильно...
\addplot[domain=-27:27]{x^(1/3)};
\addplot[domain=-2*pi:2*pi]{cos(rad(x))};
Большое спасибо, если вы сможете мне немного помочь.
Большое спасибо за ваши ответы, это действительно помогает. И последнее: функция кубического корня имеет отрицательную часть в своей области определения, которую невозможно отобразить. Знаете почему?
\begin{tikzpicture}
\begin{axis}[
width=8cm,xlabel={$x$},
ylabel={$y$},grid=both, axis x line=middle, axis y line=middle,
title={$f(x)=x^{1/3}$}]
\addplot[blue,domain=-27:27, no markers,samples=100] {x^(1/3)};
\end{axis}
\end{tikzpicture}
NB: Да, функция кубического корня имеет частично отрицательную область определения, и нет, мнимой части нет. NB: извините, я настаиваю на одном из моих первых вопросов в этом комментарии, который должен быть «ответом», я просто новичок здесь и, поскольку я еще не зарегистрирован, я не знаю, как я могу задать что-то, связанное с темой, в новом «комментарии-вопросе»
решение1
Чтобы разделить отрицательные и положительные части графика 1/x
, вам нужно убедиться, что функция вычисляется при x=0
. Если ваш домен симметричен, вы можете просто указать нечетное количество выборок ( samples=101
например). Вам также нужно убедиться, что недействительные значения не просто молча отбрасываются, а вызывают скачок на графике. Для этого укажите unbounded coords=jump
(вместо поведения по умолчанию discard
).
Тригонометрические функции в PGF ожидают градусы, поэтому вам придется преобразовать радианы в градусы, используя deg(x)
(а не rad(x)
, который используется для преобразования градусов в радианы).
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[enlargelimits=false]
\addplot [domain=-10:10, samples=101,unbounded coords=jump]{x^(-1)};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[enlargelimits=false]
\addplot[domain=-2*pi:2*pi, samples=100]{cos(deg(x))};
\end{axis}
\end{tikzpicture}
\end{document}
решение2
Другие ответы предлагают изящные способы построения сюжета 1/x
, но никто не объяснил, как именно его составить.x^(1/3)
Проблема возникает в довольно многих различных графических программах/калькуляторах. Кубические корни часто вычисляются с использованием логарифмов, поэтому иногда они кажутся неопределенными для отрицательных чисел. Конечно, мы знаем, что можем извлечь кубический корень из любого действительного числа, поэтому нам приходится обманывать программу/калькулятор.
Один из способов сделать это — построить график
x/|x| * (|x|)^(1/3)
которая строит функцию кубического корня и незаметно меняет знаки соответствующим образом. Конечно, эта функция не определена в0
, так что на самом деле она неравныйк функции кубического корня, но она делает свое дело за нас :)
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[blue,domain=-10:10, samples=200]{x/abs(x)*abs(x)^(1/3)};
\end{axis}
\end{tikzpicture}
\end{document}
решение3
Я думаю, что ваши ожидания слишком велики, поскольку pgfplots не является системой компьютерной алгебры (CAS). Поэтому вам нужно помочь ей, обработав данные. Также samples
опция имеет большое значение, поскольку графики на самом деле соединяют точки, и чтобы увидеть, является ли значение неограниченным, его нужно оценить в этой точке, иначе результаты будут конечными, и он соединит эти точки.
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[restrict y to domain=-9.9:9.9]
\addplot [domain=-10:10, samples=200]{x^(-1)};
\addplot[blue,domain=-10:10, samples=200]{x^(1/3)};
\addplot[red,domain=-2*pi:2*pi, samples=200]{sin(deg(x))};
\end{axis}
\end{tikzpicture}
\end{document}