diff options
author | Karl Berry <karl@freefriends.org> | 2009-04-16 16:08:57 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2009-04-16 16:08:57 +0000 |
commit | 7ebb7368fa53009acc87aaa8211fabee5608265b (patch) | |
tree | 8ef6db137044f49845a1f5106a8c4d03be72e6ad /Master/texmf-dist/doc/latex | |
parent | 40c2ba944e1cee0677734608263cbc7ba3a729bf (diff) |
mfpic4ode update (15apr09)
git-svn-id: svn://tug.org/texlive/trunk@12734 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex')
-rw-r--r-- | Master/texmf-dist/doc/latex/mfpic4ode/demo/demo.pdf | bin | 229781 -> 221236 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/mfpic4ode/demo/demo.tex | 2 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/mfpic4ode/mfpic4ode.pdf | bin | 112722 -> 113843 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/mfpic4ode/mfpic4ode.tex | 155 |
4 files changed, 86 insertions, 71 deletions
diff --git a/Master/texmf-dist/doc/latex/mfpic4ode/demo/demo.pdf b/Master/texmf-dist/doc/latex/mfpic4ode/demo/demo.pdf Binary files differindex ac85af20cbc..256f443f0bd 100644 --- a/Master/texmf-dist/doc/latex/mfpic4ode/demo/demo.pdf +++ b/Master/texmf-dist/doc/latex/mfpic4ode/demo/demo.pdf diff --git a/Master/texmf-dist/doc/latex/mfpic4ode/demo/demo.tex b/Master/texmf-dist/doc/latex/mfpic4ode/demo/demo.tex index e948ab6374e..0a56345461a 100644 --- a/Master/texmf-dist/doc/latex/mfpic4ode/demo/demo.tex +++ b/Master/texmf-dist/doc/latex/mfpic4ode/demo/demo.tex @@ -193,7 +193,7 @@ Runge--Kutta and fourth order Runge--Kutta method. \nomplabels \drawcolor{green} \mfsrc{ODEstep:=0.02; ODEstepcount:=30;} - \trajectoryRKF{0}{1} + \dashed\trajectoryRKF{0}{1} \tlabel[tr](0.39,2.4){\bf{Exact solution}} % We use bigger step to see the difference between various diff --git a/Master/texmf-dist/doc/latex/mfpic4ode/mfpic4ode.pdf b/Master/texmf-dist/doc/latex/mfpic4ode/mfpic4ode.pdf Binary files differindex ac4f81f6c90..1d6364ccfec 100644 --- a/Master/texmf-dist/doc/latex/mfpic4ode/mfpic4ode.pdf +++ b/Master/texmf-dist/doc/latex/mfpic4ode/mfpic4ode.pdf diff --git a/Master/texmf-dist/doc/latex/mfpic4ode/mfpic4ode.tex b/Master/texmf-dist/doc/latex/mfpic4ode/mfpic4ode.tex index a20ce6c6131..a20dcb81c35 100644 --- a/Master/texmf-dist/doc/latex/mfpic4ode/mfpic4ode.tex +++ b/Master/texmf-dist/doc/latex/mfpic4ode/mfpic4ode.tex @@ -38,51 +38,60 @@ %%% ODEstep and the number of steps is ODEstepcount. The points are %%% stored in metapost variables x1,y1. \def\trajectory#1#2{ - \mfsrc{x1:=#1;y1:=#2; - for i=1 upto ODEstepcount: - x2:=x1+ODEstep; - y2:=y1+ODEstep*ODErhs(x1,y1);} - \ODEline{z1}{z2} - \mfsrc{ - if ((y2>yneg) and (y2<ypos)): x1:=x2; y1:=y2 fi; - endfor - }} + \begin{connect} + \mfsrc{x1:=#1;y1:=#2; + for i=1 upto ODEstepcount: + x2:=x1+ODEstep; + y2:=y1+ODEstep*ODErhs(x1,y1);} + \ODEline{z1}{z2} + \mfsrc{ + if ((y2>yneg) and (y2<ypos)): x1:=x2; y1:=y2 fi; + endfor + } + \end{connect} +} %%% Integral curve using Runge--Kutta method. \def\trajectoryRK#1#2{ - \mfsrc{x1:=#1;y1:=#2; - for i=1 upto ODEstepcount: - k1:=ODErhs(x1,y1); - x3:=x1+(ODEstep/2); - y3:=y1+k1*(ODEstep/2); - k2:=ODErhs(x3,y3); - x2:=x1+ODEstep; - y2:=y1+ODEstep*k2;} - \ODEline{z1}{z2} - \mfsrc{ - if ((y2>yneg) and (y2<ypos)): x1:=x2; y1:=y2 fi; - endfor - }} + \begin{connect} + \mfsrc{x1:=#1;y1:=#2; + for i=1 upto ODEstepcount: + k1:=ODErhs(x1,y1); + x3:=x1+(ODEstep/2); + y3:=y1+k1*(ODEstep/2); + k2:=ODErhs(x3,y3); + x2:=x1+ODEstep; + y2:=y1+ODEstep*k2;} + \ODEline{z1}{z2} + \mfsrc{ + if ((y2>yneg) and (y2<ypos)): x1:=x2; y1:=y2 fi; + endfor + } + \end{connect} +} %%% Integral curve using fourth order Runge--Kutta method. \def\trajectoryRKF#1#2{ - \mfsrc{x1:=#1;y1:=#2; - for i=1 upto ODEstepcount: - k1:=ODErhs(x1,y1); - x3:=x1+(ODEstep/2); - y3:=y1+k1*(ODEstep/2); - k2:=ODErhs(x3,y3); - y4:=y1+k2*(ODEstep/2); - k3:=ODErhs(x3,y4); - y5:=y1+k3*(ODEstep/2); - k4:=ODErhs(x3,y5); - kk:=(k1+2*k2+2*k3+k4)/6; - x2:=x1+ODEstep; - y2:=y1+ODEstep*kk;} - \ODEline{z1}{z2} - \mfsrc{ - if ((y2>yneg) and (y2<ypos)): x1:=x2; y1:=y2 fi; - endfor - }} + \begin{connect} + \mfsrc{x1:=#1;y1:=#2; + for i=1 upto ODEstepcount: + k1:=ODErhs(x1,y1); + x3:=x1+(ODEstep/2); + y3:=y1+k1*(ODEstep/2); + k2:=ODErhs(x3,y3); + y4:=y1+k2*(ODEstep/2); + k3:=ODErhs(x3,y4); + y5:=y1+k3*(ODEstep/2); + k4:=ODErhs(x3,y5); + kk:=(k1+2*k2+2*k3+k4)/6; + x2:=x1+ODEstep; + y2:=y1+ODEstep*kk;} + \ODEline{z1}{z2} + \mfsrc{ + if ((y2>yneg) and (y2<ypos)): x1:=x2; y1:=y2 fi; + endfor + } + \end{connect} +} \def\ODEarrow#1#2{ \mfsrc{x1:=#1; y1:=#2; x3:=x1+(ODEarrowlength)/((xscale)++(ODErhs(#1,#2)*yscale)); @@ -135,15 +144,18 @@ \def\ASdefineequations#1#2{\fdef{ASf}{x,y}{#1}\fdef{ASg}{x,y}{#2}} \def\AStrajectory#1#2{ - \mfsrc{x1:=#1;y1:=#2; - for i=1 upto ODEstepcount: - x2:=x1+ODEstep*ASf(x1,y1); - y2:=y1+ODEstep*ASg(x1,y1);} - \ODEline{z1}{z2} - \mfsrc{ - if ((y2>yneg) and (y2<ypos)): x1:=x2; y1:=y2 fi; - endfor - }} + \begin{connect} + \mfsrc{x1:=#1;y1:=#2; + for i=1 upto ODEstepcount: + x2:=x1+ODEstep*ASf(x1,y1); + y2:=y1+ODEstep*ASg(x1,y1);} + \ODEline{z1}{z2} + \mfsrc{ + if ((y2>yneg) and (y2<ypos)): x1:=x2; y1:=y2 fi; + endfor + } + \end{connect} +} \def\ASarrow#1#2{ \mfsrc{x1:=#1; y1:=#2; x3:=x1+(ODEarrowlength*ASf(#1,#2))/((ASf(#1,#2)*xscale)++(ASg(#1,#2)*yscale )); @@ -164,27 +176,30 @@ \else \AStrajectoryRKF{#1}{#2}\relax\let\next\AS@cycle@IC\fi\next} \def\AStrajectoryRKF#1#2{ - \mfsrc{x1:=#1;y1:=#2; - TIMEsteps:=abs(TIMEend/TIMEstep); - TIME:=0; - for i=1 upto TIMEsteps: - k1:=ASf(x1,y1); - l1:=ASg(x1,y1); - k2:=ASf(x1+(TIMEstep*k1/2),y1+(TIMEstep*l1/2)); - l2:=ASg(x1+(TIMEstep*k1/2),y1+(TIMEstep*l1/2)); - k3:=ASf(x1+(TIMEstep*k2/2),y1+(TIMEstep*l2/2)); - l3:=ASg(x1+(TIMEstep*k2/2),y1+(TIMEstep*l2/2)); - k4:=ASf(x1+(TIMEstep*k3),y1+(TIMEstep*l3)); - l4:=ASg(x1+(TIMEstep*k3),y1+(TIMEstep*l3)); - k5:=((k1)/6)+((k2)/3)+((k3)/3)+((k4)/6); - l5:=(l1/6)+(l2/3)+(l3/3)+(l4/6); - x2:=x1+(TIMEstep*k5); - y2:=y1+(TIMEstep*l5);} - \ODEline{z1}{z2} - \mfsrc{ - if ((y2>yneg) and (y2<ypos) and (x2<xpos) and (x2>xneg)): x1:=x2; y1:=y2 fi; - endfor - }} + \begin{connect} + \mfsrc{x1:=#1;y1:=#2; + TIMEsteps:=abs(TIMEend/TIMEstep); + TIME:=0; + for i=1 upto TIMEsteps: + k1:=ASf(x1,y1); + l1:=ASg(x1,y1); + k2:=ASf(x1+(TIMEstep*k1/2),y1+(TIMEstep*l1/2)); + l2:=ASg(x1+(TIMEstep*k1/2),y1+(TIMEstep*l1/2)); + k3:=ASf(x1+(TIMEstep*k2/2),y1+(TIMEstep*l2/2)); + l3:=ASg(x1+(TIMEstep*k2/2),y1+(TIMEstep*l2/2)); + k4:=ASf(x1+(TIMEstep*k3),y1+(TIMEstep*l3)); + l4:=ASg(x1+(TIMEstep*k3),y1+(TIMEstep*l3)); + k5:=((k1)/6)+((k2)/3)+((k3)/3)+((k4)/6); + l5:=(l1/6)+(l2/3)+(l3/3)+(l4/6); + x2:=x1+(TIMEstep*k5); + y2:=y1+(TIMEstep*l5);} + \ODEline{z1}{z2} + \mfsrc{ + if ((y2>yneg) and (y2<ypos) and (x2<xpos) and (x2>xneg)): x1:=x2; y1:=y2 fi; + endfor + } + \end{connect} +} \catcode`\@12\relax \endinput |