携程网站用js怎么做/北京软件培训机构前十名
前面我们讲的是用gnuplot来绘制函数图像,对于gnuplot使用得很熟练的人来说,确实比较方便。这里我要介绍另外一种不依赖gnuplot的函数绘制方法,也就是纯tikz方法。这里用到的包是pgfplots,前面讲数据分析时讲过这个包。使用pgfplots绘图,要将图置于axis环境下,我先拿个例子来说:
\documentclass[UTF8, a4paper,12pt]{article}
\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{calc,angles,quotes}
\begin{document}\begin{tikzpicture}\begin{axis}[]% density of Normal distribution:\addplot [black,domain=-4:4,smooth]{sinh(x)};\end{axis}\end{tikzpicture}
\end{document}
效果如下:
3D绘图
对于立体几何研究来说,3D绘图是刚需。3D绘图也简单,就是改用addplot3命令就好了,如我要绘制一个球面,可以这样写代码:
\documentclass[UTF8, a4paper,12pt]{article}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{width=12cm,compat=1.18}
\begin{document}\begin{tikzpicture}\begin{axis}[xlabel=x,ylabel=y]\addplot3 [black,domain=-2:2,domain y=-2:2,surf]{sqrt(16-x^2-y^2)};\end{axis}\end{tikzpicture}
\end{document}
绘制结果如下:
参数方程3D绘图
上例的球面是不完全的,如果定义域扩大呢?将上面的x和y的定义域扩大,我们看看效果:
\documentclass[UTF8, a4paper,12pt]{article}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{width=12cm,compat=1.18}
\begin{document}\begin{tikzpicture}\begin{axis}[xlabel=x,ylabel=y]\addplot3 [black,domain=-4:4,domain y=-4:4,surf]{sqrt(16-x^2-y^2)};\end{axis}\end{tikzpicture}
\end{document}
一编译,直接报错了哈,如图:
因为x=4,y=4x=4,y=4x=4,y=4的时候,是没有定义域的,这个时候是给负数开根号了,所以报错了,怎么办呢?我们可以用参数方程。复习下球的参数方程:
{x=r⋅sin(u)⋅cos(v)y=r⋅sin(u)⋅sin(v)z=r⋅cos(u)\begin{cases} x=r\cdot sin(u)\cdot cos(v)\\ y=r\cdot sin(u)\cdot sin(v)\\ z=r\cdot cos(u) \end{cases} ⎩⎨⎧x=r⋅sin(u)⋅cos(v)y=r⋅sin(u)⋅sin(v)z=r⋅cos(u)
然后用参数方程写代码吧:
\documentclass[UTF8, a4paper,12pt]{article}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{width=12cm,compat=1.18}
\begin{document}\begin{tikzpicture}\begin{axis}[xlabel=x,ylabel=y]\addplot3 [domain=0:360,domain y=0:360,surf,z buffer=sort,variable=\u, variable y=\v]({4*sin(u)*cos(v)},{4*sin(u)*sin(v)},{4*cos(u)});\end{axis}\end{tikzpicture}
\end{document}
这个球还是蛮标准的,给大家看看: