我想绘制函数 x^(x-1) 的图形,但总是出错。它只绘制 x 轴,而不是 xy 平面。以下是一般设置。
\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{tikz}
\pgfplotsset{compat = newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin = 0, xmax = 15,
ymin = 0, ymax = 30000,
xtick distance = 3,
ytick distance = 6000,
width = \textwidth,
height = \textwidth,
xlabel = {$x$},
ylabel = {$y$},]
\addplot[
domain = 2:15,
samples = 50,
smooth,
thick,
brown,
] {x^(x-1)};
\end{axis}
\end{tikzpicture}
\end{document}
它不断抛出以下错误:
- 缺失数字,视为零
- 缺失数字,视为零
- 计量单位非法(插入 pt)
- 程序包 pgfplots 错误:ytick 的参数导致刻度距离太小。请重新配置 xtick 参数
- 包 pgfplots 警告:y 轴的轴范围几乎为空;在输入行 27 上将其扩大(它是 [0.0:0.0])。
- 包 pgfplots 警告:无法确定 ticklabel 锚点,法向向量 -(-1.0pt,0.0pt) 和单位 x 向量 (1.0pt,0.0pt) 几乎平行 (abs(cos(angle)) = 1.0pt)!在输入行 27。
- 包 pgfplots 警告:无法确定 ticklabel 锚点,法向向量 -(1.0pt,0.0pt) 和单位 y 向量 (1.0pt,0.0pt) 几乎平行 (abs(cos(angle)) = 1.0pt)!在输入行 27。
- 包 pgfplots 警告:无法确定 ticklabel 锚点,法向向量 -(-1.0pt,0.0pt) 和单位 y 向量 (1.0pt,0.0pt) 几乎平行 (abs(cos(angle)) = 1.0pt)!在输入行 27。
- 包 pgfplots 警告:无法确定 ticklabel 锚点,法向向量 -(0.0pt,-1.0pt) 和单位 y 向量 (0.0pt,-1.0pt) 几乎平行 (abs(cos(angle)) = 1.0pt)!在输入行 27。
到目前为止,我已经为这个等式尝试过的方法:
{pow(e,(x-1))}
{exp((x-1)*ln(x))}
{exp(multiply((x-1),ln(x)))}
答案1
\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{tikz}
\pgfplotsset{compat = newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[%
xmin = 0,%
xmax = 15,%
ymin = 0,%
ymax = 30e15,%
xtick distance = 3,%
ytick distance = 6e15,%
width = \textwidth,%
height = \textwidth,%
xlabel = {$x$},%
ylabel = {$y$}%
]%
%
\addplot[%
domain = 2:15,%
samples = 100,%
smooth,%
thick,%
brown%
]%
{x^(x-1)};%
%
\end{axis}
\end{tikzpicture}
\end{document}
答案2
我使用f(x)=x^{x-1}=\exp{(x-1)log(x)}
。x>0
全局最小点是(1,1)
。下面给出了 Asymptote 和 TikZ 代码(简单代码)。
// http://asymptote.ualberta.ca/
unitsize(1.5cm,3.5mm);
import graph;
real f(real x){return exp((x-1)*log(x));}
label(scale(.8)*"$1$",(1,0),S);
label(scale(.8)*"$1$",(0,1),W);
draw((1,0)--(1,1)--(0,1),dashed);
draw(Label("$x$",align=SE,EndPoint),(-.5,0)--(3.5,0),Arrow(TeXHead));
draw(Label("$y$",align=
W,EndPoint),(0,-1.5)--(0,10),Arrow(TeXHead));
label("$O$",align=SW,(0,0));
path p=graph(f,.09,3);
draw(Label("$f(x)=x^{x-1}$",align=W,Relative(.8)),p,magenta+1pt);
shipout(bbox(5mm,invisible));
\documentclass[tikz,border=5mm]{standalone}
\begin{document}
\begin{tikzpicture}[x=1.5cm,y=4mm]
\tikzset{declare function={f(\x)=exp((\x-1)*ln(\x));}}
\draw[dashed]
(1,0) node[scale=.8,below]{$1$}--(1,1)
(0,1) node[scale=.8,left]{$1$}--(1,1)
(0,0) node[below left]{$O$}
;
\draw[->] (-.5,0)--(3.2,0) node[below right]{$x$};
\draw[->] (0,-1.5)--(0,10) node[left]{$y$};
\draw[smooth,red,thick] plot[domain=.09:3] (\x,{f(\x)});
\fill (1,1) circle(1.5pt);
\end{tikzpicture}
\end{document}
答案3
问题在于 0:15 处的域太高,15^14 太高,图表无法计算。试试这个代码:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\usepackage{tikz}
\pgfplotsset{compat=1.9}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis lines=left,
xlabel=\(x\),
ylabel={\(f(x)\)},
]
\addplot[
domain=0:4,
samples=200,
smooth,
thick,
color=brown
]
{x^(x-1)};
\end{axis}
\end{tikzpicture}
\end{document}