summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/mfpic4ode
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-04-16 16:08:57 +0000
committerKarl Berry <karl@freefriends.org>2009-04-16 16:08:57 +0000
commit7ebb7368fa53009acc87aaa8211fabee5608265b (patch)
tree8ef6db137044f49845a1f5106a8c4d03be72e6ad /Master/texmf-dist/doc/latex/mfpic4ode
parent40c2ba944e1cee0677734608263cbc7ba3a729bf (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/mfpic4ode')
-rw-r--r--Master/texmf-dist/doc/latex/mfpic4ode/demo/demo.pdfbin229781 -> 221236 bytes
-rw-r--r--Master/texmf-dist/doc/latex/mfpic4ode/demo/demo.tex2
-rw-r--r--Master/texmf-dist/doc/latex/mfpic4ode/mfpic4ode.pdfbin112722 -> 113843 bytes
-rw-r--r--Master/texmf-dist/doc/latex/mfpic4ode/mfpic4ode.tex155
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
index ac85af20cbc..256f443f0bd 100644
--- a/Master/texmf-dist/doc/latex/mfpic4ode/demo/demo.pdf
+++ b/Master/texmf-dist/doc/latex/mfpic4ode/demo/demo.pdf
Binary files differ
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
index ac4f81f6c90..1d6364ccfec 100644
--- a/Master/texmf-dist/doc/latex/mfpic4ode/mfpic4ode.pdf
+++ b/Master/texmf-dist/doc/latex/mfpic4ode/mfpic4ode.pdf
Binary files differ
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