Best Scripts for 4.0

1. Partial derivatives beauty (23.02.10)

rul7[xt_]:=Block[{a}, a=(xt//Head)[[1]];  Which[a//AtomQ, figase="", MatchQ[a,_@_], 
figase=a[[1]]//ToString;a=a//Head]; a];

stf[xt_]:= Block[{a,i,k,st}, st=figase<>",";
a=List@@(xt//Head//Head); Do[st=st<>ToString[xt[[i,1]]
],{i,Length[a]},{k,a[[i]]}];st ];

ww := xt:Derivative[__][(yt_/;AtomQ[yt])|_@_][__] :> SB[xt//rul7, xt//stf];

2. Most optimal calculator for Riemann

Do[R[i,k,l,m]=0,{i,0,n},{k,0,n},{l,0,n},{m,0,n}];

Do[R[i,k,l,m]=(D[ng[i,m],x[k],x[l]]+D[ng[k,l],x[i],x[m]]-
D[ng[i,l],x[k],x[m]]-D[ng[k,m],x[i],x[l]])/2+
Sum[ng[n,p](G[k,l,n]G[i,m,p]-G[k,m,n]G[i,l,p]),{p,0,n},{n,0,n}];

,{i,0,2},{k,i+1,3},{l,i,2},{m,Max[k,l+1],3}];

3. Marinochkalapochka

(* don't use:    a, b, i, j, k, m, n,    ww, at, it, JJ, eq, SS, Bak, zav, sliv, nezav *)

Clear["`*"];


n=6; 		 (* number of terms in eq *)


(* set yuor functions as rules  a[1]->... ,b[1]->... , ... *)

JJ={
a[1]->A[2]'[x],
a[2]->B[2]'[x],
a[3]->C[2]'[x],
a[4]->C[2][x] B[2]'[x]-B[2][x] C[2]'[x],
a[5]->A[2][x] C[2]'[x]-C[2][x] A[2]'[x],
a[6]->B[2][x] A[2]'[x]-A[2][x] B[2]'[x],

b[1]->B[3][y] C[3]'[y]-C[3][y] B[3]'[y],
b[2]->C[3][y] A[3]'[y]-A[3][y] C[3]'[y],
b[3]->A[3][y] B[3]'[y]-B[3][y] A[3]'[y],
b[4]->A[3]'[y],
b[5]->B[3]'[y],
b[6]->C[3]'[y]

};



(*JJ={};*)	(* unblock for general view *)


ww={at_==it_->StringForm["`` = ``",at,it],
al[it_,at_]->Subscript[\[Alpha],StringForm["````",it,at]],
it_[x]->it,it_[y]->it,
A[it_]->Subscript[a,it],
B[it_]->Subscript[b,it],
C[it_]->Subscript[c,it]};

Print["The original equation, f = f(x), g = g(y)"];
SS=Sum[a[j]b[j],{j,n}];
Print[SS/.JJ//.ww," = 0"];
Print[];
Print["Different equation sets with separated variables"];



(*---------------------- Solving block --------------------------*)

Bak[0] = {Range[n]};  

sliv={};


Do[ Bak[k]={};

Do[ Bak[k]=Bak[k]~Union~{Delete[Bak[k-1][[j]],m]},{j,Length[Bak[k-1]]},{m,n-k+1}];

Do[ nezav=Bak[k][[i]];

zav=Range[n]~Complement~nezav;

eq={};

Do[eq=eq~Join~{a[nezav[[j]]]==Sum[al[nezav[[j]],zav[[m]]]*a[zav[[m]]],{m,k}]},{j,n-k}];
Do[eq=eq~Join~{b[zav[[m]]]+Sum[al[nezav[[j]],zav[[m]]]*b[nezav[[j]]],{j,n-k}]==0},{m,k}];

Print[k,".",i,".  Basic vectors: ",b/@nezav/.JJ//.ww];
Print[];
Print[eq/.JJ//.ww//TableForm];
Print[];

sliv=sliv~Join~{eq};

,{i,Length[Bak[k]]}];	(* replace this by 1 for short form *)

,{k,n-1}];

(*---------------------------------------------------------------*)



(* k - number of indenpedent vectors *)
(* Bak[k] - list of variants of choosing n-k independent vectors *)
(* i - number of variant of choosing indep. vectors from list Bak[k] *)
(* nezav - list of numbers of indenpedent vectors *)
(* zav - list of dependent vectors *)
(* eq - k,i's set of eq-ns *)
(* sliv - all sets of eq-ns *)
(* JJ - recent functions *)
(* al - separation constants *)

4. (2.0) second derivative equations

wq={A->(a[x[2]]+a[x[3]]),B->(b[x[2]]+b[x[3]]),C->(c[x[2]]+c[x[3]])};

q1=-3*B*C*(a'[x[2]]^2-ep a'[x[3]]^2)+3*(2*B^2+A*C)*(a'[x[2]]*b'[x[2]]-ep a'[x[3]]*b'[x[3]])-6*A*B*(b'[x[2]]^2-ep b'[x[3]]^2)-3*A*B*(a'[x[2]]*c'[x[2]]- ep a'[x[3]]*c'[x[3]])+3*A^2*(b'[x[2]]*c'[x[2]]-ep b'[x[3]]*c'[x[3]])+2*(-B^2+A*(c[x[2]]+c[x[3]]))*(B*(a''[x[2]]-ep a''[x[3]])- A*(b''[x[2]]-ep b''[x[3]]))/.wq;

q2=-3*C^2*(a'[x[2]]^2-ep a'[x[3]]^2)+6*B*C*(a'[x[2]]*b'[x[2]]-ep a'[x[3]]*b'[x[3]])-6*A*B*(b'[x[2]]*c'[x[2]]-ep b'[x[3]]*c'[x[3]])+3*A^2* (c'[x[2]]^2-ep c'[x[3]]^2)+2*(B^2-A*C)*(-(C*(a''[x[2]]-ep a''[x[3]]))+A*(c''[x[2]]-ep c''[x[3]]))/.wq;

q3=-3*B^2*C*a'[x[3]]^2+6*B*(B^2+A*C)*a'[x[3]]*b'[x[3]]-4*A*(2*B^2+A*C)*b'[x[3]]^2+A*(-7*B^2+A*C)*a'[x[3]]*c'[x[3]]+12*A^2*B*b'[x[3]]*c'[x[3]]- 3*A^3*c'[x[3]]^2+(B^2-A*C)*(2(B^2-A*C)*ep*a''[x[2]]-2B^2*a''[x[3]]+4*A*B*b''[x[3]]-2A^2*c''[x[3]]+ep*(3*C*a'[x[2]]^2-6*B*a'[x[2]]*b'[x[2]]+ 4*A*b'[x[2]]^2-A*a'[x[2]]*c'[x[2]]))/.wq;

(* you can resolve it, for example, relative a2'',c2'',c3'' *)

s1 = Solve[q1 == 0, a''[x[2]]][[1, 1]]; s2 = Solve[q2 == 0, c''[x[2]]][[1, 1]] /. s1; s3 = Solve[q3 == 0, c''[x[3]]][[1, 1]] /. s1;

Do[W1[i,k,l,m]=W[i,k,l,m]/.s1/.s2/.s3//FS;Print[i,k,l,m," ",W1[i,k,l,m]//.w],{i,0,2},{k,i+1,3},{l,i,2},{m,Max[k,l+1],3}];


Назад
Hosted by uCoz