Jerkwin分享 http://blog.sciencenet.cn/u/Jerkwin

博文

gnuplot动画

已有 4904 次阅读 2015-1-19 04:52 |个人分类:数学轮子|系统分类:科研笔记

2015-01-18 14:29:06

利用gnuplot的gif终端可以制作简单的动画, 制作时可以使用reread命令, 像马欢的博文中介绍的那样. 更简单的方法是使用do for命令.

下面是指数函数和高斯函数卷积的动画, 具体的理论请参看以前的博文.

# Language: gPLA=1; B=2a=1; b=50; k=0.1f(x)=A*exp(-a*x)*(x>0?1:0)g(x,t)=B*exp(-b*(t-x)**2)h(x)=.5*A*B*sqrt(pi/b)*exp(-a*(x-.25*a/b))*erfc(-sqrt(b)*x+.5*a/sqrt(b))set tit"Convolution of Exponential and Gaussian Function"set xl"t/{/symbolpi t}";set yl"Value"set xr [-2:3]dofor[t=-1/k:2/k]{#set object circle at k*t,h(k*t) fillcolor rgb 'red' fillstyle solid noborderplot f(x) lw 6 t"f({/symbolpi t})=exp(-{/symbolpi t}^2), {/symbolpi t}>0", g(k*t,x) lw 6 t"g({/symbolpi t})=2*exp(-50*{/symbolpi t}^2)", f(x)*g(k*t,x) lw 6 t"f(t)g(t-{/symbolpi t})", h(x) lw 6 t"h(t)", '+' u (k*t):(h(k*t)) w p pt 7 ps 4 t""}

Fig. 1

# Language: gPLA=1; B=2a=1; b=50; k=0.1f(x)=A*exp(-a*x)*(x>0?1:0)g(x,t)=B*exp(-b*(t-x)**2)h(x)=.5*A*B*sqrt(pi/b)*exp(-a*(x-.25*a/b))*erfc(-sqrt(b)*x+.5*a/sqrt(b))set tit"Convolution of Exponential and Gaussian Function"set xl"t/{/symbolpi t}";set yl"Value"set xr [-2:3]dofor[t=-1/k:2/k]{set label front at k*t,h(k*t)"" point pt 7 ps 4#set object circle at k*t,h(k*t) fillcolor rgb 'red' fillstyle solid noborderplot f(x) lw 6 t"f({/symbolpi t})=exp(-{/symbolpi t}^2), {/symbolpi t}>0", g(k*t,x) lw 6 t"g({/symbolpi t})=2*exp(-50*{/symbolpi t}^2)", f(x)*g(k*t,x) lw 6 t"f(t)g(t-{/symbolpi t})", h(x) lw 6 t"h(t)"}

Fig. 2

绘制单个点时, gnuplot有三种方法, 使用set label绘点, 各个点会同时存在于最终的动画中, 而使用+或set object绘点各个点不会叠加到图上.

另外, gnuplot 5.0版本支持单独的各种虚线形式, 参考下面的讨论.

◆本文地址: http://jerkwin.github.io/2015/01/18/gnuplot动画, 转载请注明◆





https://blog.sciencenet.cn/blog-548663-860740.html

上一篇:我使用的markdown工具
下一篇:ROMACS中文手册第4章:相互作用函数和力场 1-2节
收藏 IP: 130.184.197.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-25 09:52

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部