Pgfplots и MATLAB дают разные результаты

Pgfplots и MATLAB дают разные результаты

Мне нужно построить функцию с помощью pgfplots, но результат отличается от ожидаемого. Домен должен быть 0:1.

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\begin{document}

\begin{tikzpicture}
    \begin{axis}[enlargelimits=false]
        \addplot[domain=0:55, samples=1001]{((sqrt((1 -cos(2*pi*x))^2+sin(2*pi*x)^2))^4)^2};
    \end{axis}
\end{tikzpicture}

\end{document}

Обратите внимание, что для отображения всей функции домен должен быть установлен на 55. При этом код MATLAB выглядит следующим образом:

x=0:0.01:1;
plot(x,((sqrt((1-cos(2*pi*x)).^2+sin(2*pi*x).^2)).^4).^2)

я прочиталэтот ответно в данном случае это не помогло.

решение1

Matlab's sinи cosпредполагают радианы в качестве входных данных, в то время как pgf's sinи cosпредполагают градусы. Для pgfplotsвы можете добавить trig format=radк \addplotопциям, чтобы получить то же поведение, что и Matlab, тогда domain=0:1работает.

введите описание изображения здесь

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\begin{document}

\begin{tikzpicture}
    \begin{axis}[enlargelimits=false]
        \addplot[domain=0:1, samples=1001, trig format=rad]{((sqrt((1 -cos(2*pi*x))^2+sin(2*pi*x)^2))^4)^2};
    \end{axis}
\end{tikzpicture}
\end{document}

Связанный контент