我想在 pgfplots 中绘制 y=sin(x^2) 的积分,但不知道在 ''{ }'' 中放什么。这是因为它是一个很难积分的函数。有人能帮帮我吗!
答案1
运行latex->dvips->ps2pdf
:
\documentclass[pstricks]{standalone}
\usepackage{pst-func}
\begin{document}
\begin{pspicture}(-5,-3)(4.5,3)
\psaxes[ticksize=0 4pt, subticks=5](0,0)(-4.4,-2.5)(4,2.5)
\psplot[algebraic,plotpoints=5000,linecolor=red]{-4}{4}{sin(x*x)}
\psCumIntegral[plotpoints=10000,Simpson=10,linecolor=blue]{0}{4}{ dup mul RadtoDeg sin }
\psCumIntegral[plotpoints=10000,Simpson=10,linecolor=blue]{0}{-4}{ dup mul RadtoDeg sin }
\end{pspicture}
\end{document}
答案2
看来使用 Asymptote 确实也相当容易获得。遵循 Herbert 的启发性引导:
import graph;
// Unit
unitsize(2cm);
// Axis lengths
real xmin = -4, xmax = 4.25;
real ymin = -1.5, ymax = 1.5;
// The sin(x^2) function
real f(real x) {return sin(x^2);};
// Its integration (via the Simpson algorithm)
real g(real x) {return simpson(f, 0, x);};
// The curves
draw(graph(f, -4, 4, n = 1600, operator ..), red);
draw(graph(g, -4, 4, n = 1600, operator ..), blue);
// Axes
xaxis(xmin, xmax, Ticks(Step=1, step=0.2, OmitTick(0)));
yaxis(ymin, ymax, Ticks(Step=1, step=0.2, OmitTick(0)));
label("$O$", (0,0), 1.1SW);
如果保存为,例如,fresnel.asy
您可以使用命令行处理此代码
asy -f pdf -V fresnel.asy
获取PDF文件并查看。
答案3
您可以使用该sagetex
包将 Wolfram Alpha 显示的图放入 pgfplots(和其他复杂函数)中。这样您就可以访问免费的 CAS 系统,该系统可以计算值,然后将其排版到 LaTeX 中。y_coords 数组获取积分的所有计算,然后所有点(x_coords、y_coords)被排版(由 sage)为 tikzpicture 命令,最终输出到您的 tex 文档中。
\documentclass{article}
\usepackage{sagetex}
\usepackage{pgfplots}
\usepackage{xcolor}
\pagestyle{empty}
\begin{document}
\begin{sagesilent}
x=var('x')
t = var('t')
x_coords = [t for t in srange(-4.0,4.0,.01)]
y_coords = [numerical_integral(sin(x^2), 0, t)[0] for t in srange(-4.0,4.0,.01)]
output = ""
output += r"\begin{tikzpicture}[scale=1]"
output += r"\begin{axis}[xmin=-4.0, xmax=4.0, ymin=-1.2, ymax=1.2,]"
output += r"\addplot[thin,blue] coordinates {"
for i in range(0,len(x_coords)):
output += r"(%f, %f) "%(x_coords[i],y_coords[i])
output += r"};"
output += r"\end{axis}"
output += r"\end{tikzpicture}"
\end{sagesilent}
\sagestr{output}
\end{document}
以下是代码在Sagemath Cloud中运行的结果: