如何用gnuplot结合复指数绘制余弦曲线?
解决gnuplot复指数绘制余弦曲线无图像问题
你的脚本没生成可见图像的原因有两个:
- 你用的表达式
1/2*(exp(i*t)+exp(-i*t))的虚部始终为0,绘图时y坐标全是0,最终只会得到一条和x轴完全重合的直线,肉眼几乎无法分辨。 - 未设置参数
t的取值范围,gnuplot默认t的范围可能过小(比如[0,1]),导致画出的线段极短,更难察觉。
另外你混淆了余弦曲线和圆的绘制逻辑:画圆用的是exp(i*t)的实部和虚部(对应cos(t)和sin(t)),但余弦的复指数表达式虚部为0,不能照搬圆的绘图方式。
修正方案
方案1:直接绘制余弦曲线(非参数模式)
这是最直观的方式,把自变量作为x轴,余弦值作为y轴:
i = {0.0,1.0} set xrange [-2*pi:2*pi] # 设置x轴范围为-2π到2π plot real(0.5*(exp(i*x)+exp(-i*x))) title 'cos(x)'
方案2:用参数模式绘制
如果一定要用参数模式,需要把t作为x轴,余弦值作为y轴,而非将复函数的实部和虚部分别作为x、y:
set parametric i = {0.0,1.0} set xrange [-2*pi:2*pi] set yrange [-1.1:1.1] # 让y轴范围略大于[-1,1],方便看清曲线 plot t, real(0.5*(exp(i*t)+exp(-i*t))) title 'cos(t)'
补充:正确的圆绘制脚本
如果要验证复指数画圆,脚本应该是这样的(和余弦脚本明确区分):
set parametric i = {0.0,1.0} set size ratio -1 # 保持横纵比,避免圆变椭圆 set xrange [-1.1:1.1] set yrange [-1.1:1.1] plot real(exp(i*t)), imag(exp(i*t)) title 'unit circle'
内容的提问来源于stack exchange,提问作者木村 健人
相关产品推荐
相关产品推荐

