summaryrefslogtreecommitdiff
path: root/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Deqplot.sci
diff options
context:
space:
mode:
Diffstat (limited to 'texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Deqplot.sci')
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Deqplot.sci195
1 files changed, 195 insertions, 0 deletions
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Deqplot.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Deqplot.sci
new file mode 100755
index 00000000..43d8ea6e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Deqplot.sci
@@ -0,0 +1,195 @@
+
+// 08.09.22
+// 09.03.10
+// 09.10.09 ( ` and order )
+// 09.10.09b ( system )
+// 09.11.12 ( debug for x<0 )
+// 13.10.19 ( __ added to variables )
+// 15.11.16 N changed to number of intervals
+// 15.12.08 bug of optiion ( __ ) fixed
+
+function P__=Deqplot(varargin)
+ global XMIN XMAX YMIN YMAX
+ Nargs__=length(varargin);
+ Eps__=10^(-5);
+ Fnstr__=varargin(1);
+ Fnstr__=strsubst(Fnstr__,Prime(),'`');
+ K__=mtlb_findstr(Fnstr__,'=');
+ Str__=part(Fnstr__,1:(K__-1));
+ Fnstr__=part(Fnstr__,(K__+1):length(Fnstr__));
+ JL__=mtlb_findstr(Str__,'`');
+ Yname__=part(Str__,1:(JL__(1)-1));
+ Yname__=strsubst(Yname__,',',';');
+ Tmp__=mtlb_findstr(Yname__,';');
+ if length(Tmp__)>0
+ Dim__=length(Tmp__)+1;
+ Order__=1;
+ Fnstr__=strsubst(Fnstr__,',',';');
+ else
+ Dim__=1;
+ Order__=length(JL__);
+ end;
+ Rgstr__=varargin(2);
+ K__=mtlb_findstr(Rgstr__,'=');
+ if K__~=[]
+ Xname__=part(Rgstr__,1:K__-1);
+ Rng__=evstr(part(Rgstr__,K__+1:length(Rgstr__)));
+ else
+ Xname__=Rgstr__;
+ Rng__=[XMIN,XMAX];
+ end;
+ X0__=varargin(3);
+ Y0__=varargin(4);
+ if size(Y0__,2)>1
+ Y0__=Y0__';
+ end;
+ N__=50;
+ if Nargs__>=5
+ Tmp__=varargin(5);
+ Tmp__=strsubst(Tmp__,"=","__="); // 15.12.08
+ Tmp__=strsubst(Tmp__,"____","__");
+ execstr(Tmp__);
+ end;
+ X1__=Rng__(1); X2__=Rng__(2);
+ dX__=(X2__-X1__)/(N__-1);
+ dX__=(X2__-X1__)/(N__); // 15.11.16
+ if Dim__>1
+ Tmp__=mtlb_findstr(Yname__,'[');
+ Data__=part(Yname__,Tmp__+1:length(Yname__));
+ Tmp__=mtlb_findstr(Data__,']');
+ Data__=part(Data__,1:Tmp__-1);
+ Data__=';'+Data__+';';
+ NL__=mtlb_findstr(Data__,';');
+ NameL__=list();
+ for I__=1:length(NL__)-1
+ Tmp__=part(Data__,NL__(I__)+1:NL__(I__+1)-1);
+ NameL__(I__)=Tmp__;
+ end;
+ Fnrep__=Fnstr__;
+ for I__=1:length(NameL__)
+ Tmp__=NameL__(I__);
+ Fnrep__=strsubst(Fnrep__,Tmp__,'Pt('+string(I__)+')');
+ end;
+ Tmp1__='Outf=Dfp__('+Xname__+',Pt)';
+ Tmp2__='Outf='+Fnrep__;
+ deff(Tmp1__,Tmp2__);
+ Y0p__=Y0__;
+ Tmp1__='Outf=Dfn__('+Xname__+',Pt)';
+ Tmp2__='Outf=-('+Fnrep__+')';
+ deff(Tmp1__,Tmp2__);
+ Y0n__=Y0__;
+ else
+ YL__=mtlb_findstr(Fnstr__,Yname__);
+ Fnrep__=part(Fnstr__,1:YL__(1)-1);
+ for I__=1:length(YL__)
+ Py__=YL__(I__);
+ J__=1;
+ K__=Py__+1;
+ while part(Fnstr__,K__:K__)=='`'
+ J__=J__+1; K__=K__+1;
+ end;
+ Fnrep__=Fnrep__+Yname__+'('+string(J__)+')';
+ if I__==length(YL__)
+ Fnrep__=Fnrep__+part(Fnstr__,K__:length(Fnstr__));
+ else
+ J__=YL__(I__+1)-1;
+ if J__>=K__
+ Fnrep__=Fnrep__+part(Fnstr__,K__:J__);
+ end;
+ end;
+ end;
+ Eqvec__='[';
+ for I__=1:Order__-1
+ Eqvec__=Eqvec__+Yname__+'('+string(I__+1)+');';
+ end;
+ Eqvec__=Eqvec__+Fnrep__+']';
+ Tmp1__='Outf=Dfp__('+Xname__+','+Yname__+')';
+ Tmp2__='Outf='+Eqvec__;
+ deff(Tmp1__,Tmp2__);
+ Y0p__=Y0__;
+ YL__=mtlb_findstr(Fnstr__,Yname__);
+ Fnrep__=part(Fnstr__,1:YL__(1)-1);
+ for I__=1:length(YL__)
+ Py__=YL__(I__);
+ J__=1;
+ K__=Py__+1;
+ while part(Fnstr__,K__:K__)=='`'
+ J__=J__+1; K__=K__+1;
+ end;
+ if modulo(J__,2)==1
+ Fnrep__=Fnrep__+Yname__+'('+string(J__)+')';
+ else
+ Fnrep__=Fnrep__+'(-'+Yname__+'('+string(J__)+'))';
+ end;
+ if I__==length(YL__)
+ Fnrep__=Fnrep__+part(Fnstr__,K__:length(Fnstr__));
+ else
+ J__=YL__(I__+1)-1;
+ if J__>=K__
+ Fnrep__=Fnrep__+part(Fnstr__,K__:J__);
+ end;
+ end;
+ end;
+ if modulo(Order__,2)==1
+ Fnrep__='-('+Fnrep__+')';
+ end;
+ Fnrep__=strsubst(Fnrep__,Xname__,'(-'+Xname__+')'); // 09.11.12
+ Eqvec__='[';
+ for I__=1:Order__-1
+ Eqvec__=Eqvec__+Yname__+'('+string(I__+1)+');';
+ end;
+ Eqvec__=Eqvec__+Fnrep__+']';
+ Tmp1__='Outf=Dfn__('+Xname__+','+Yname__+')';
+ Tmp2__='Outf='+Eqvec__;
+ deff(Tmp1__,Tmp2__);
+ Y0n__=[];
+ for I__=1:size(Y0__,1)
+ Y0n__=[Y0n__;(-1)^(I__-1)*Y0__(I__)];
+ end;
+ end;
+ if X0__<=X1__
+ X__=X1__:dX__:X2__;
+ Y__=ode(Y0p__,X0__,X__,Dfp__);
+ M__=min(size(X__,2),size(Y__,2));
+ if Dim__>1
+ PL__=Y__';
+ P__=PL__(1:M__,:);
+ else
+ P__=[X__(:,1:M__);Y__(1,1:M__)]';
+ end;
+ return;
+ end;
+ if X2__<=X0__
+ X__=(-X2__):dX__:(-X1__);
+ Y__=ode(Y0n__,-X0__,X__,Dfn__);
+ X__=-X__;
+ M__=min(size(X__,2),size(Y__,2));
+ if Dim__>1
+ PL__=Y__';
+ P__=PL__(1:M__,:);
+ else
+ P__=[X__(:,1:M__);Y__(1,1:M__)]';
+ end;
+ return;
+ end;
+ XP__=X0__:dX__:X2__;
+ YP__=ode(Y0p__,X0__,XP__,Dfp__);
+ M__=min(size(XP__,2),size(YP__,2));
+ XP__=XP__(:,1:M__);
+ YP__=YP__(:,1:M__);
+ XN__=(-X0__)+dX__:dX__:(-X1__);
+ YN__=ode(Y0n__,-X0__,XN__,Dfn__);
+ M__=min(size(XN__,2),size(YN__,2));
+ XN__=XN__(:,1:M__);
+ YN__=YN__(:,1:M__);
+ XN__=-XN__;
+ XN__=XN__(length(XN__):-1:1);
+ YN__=YN__(:,size(YN__,2):-1:1);
+ if Dim__>1
+ P__=[YN__';YP__']
+ else
+ X__=[XN__,XP__];
+ Y__=[YN__(1,:),YP__(1,:)];
+ P__=[X__;Y__]';
+ end;
+endfunction;