File: code.mpi

package info (click to toggle)
mathpiper 0.0.svn2556-2
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 7,416 kB
  • ctags: 2,729
  • sloc: java: 21,643; xml: 751; sh: 105; makefile: 5
file content (63 lines) | stat: -rw-r--r-- 2,765 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
10 # LaplaceTransform(_var1,_var2, _expr )	<-- LapTran(var1,var2,expr);

// Linearity properties 
10 # LapTran(_var1,_var2,_x + _y)      		<-- LapTran(var1,var2,x) + LapTran(var1,var2,y);
10 # LapTran(_var1,_var2,_x - _y)		<-- LapTran(var1,var2,x) - LapTran(var1,var2,y);
10 # LapTran(_var1,_var2,    - _y)       	<-- LapTran(var1,var2,y);
10 # LapTran(_var1,_var2, c_IsConstant*_y)	<-- c*LapTran(var1,var2,y);
10 # LapTran(_var1,_var2, _y*c_IsConstant)	<-- c*LapTran(var1,var2,y);
10 # LapTran(_var1,_var2, _y/c_IsConstant) 	<-- LapTran(var1,var2,y)/c;

// Shift properties
10 # LapTran(_var1,_var2, Exp(c_IsConstant*_var1)*_expr  ) <-- LapTran(var1,var2-c,expr);
10 # LapTran(_var1,_var2, Exp(-c_IsConstant*_var1)*_expr ) <-- LapTran(var1,var2+c,expr);
10 # LapTran(_var1,_var2, _expr*Exp(c_IsConstant*_var1)  ) <-- LapTran(var1,var2-c,expr);
10 # LapTran(_var1,_var2, _expr*Exp(-c_IsConstant*_var1) ) <-- LapTran(var1,var2+c,expr);

// Other operational properties
10 # LapTran(_var1,_var2, _expr/_var1 )		<-- Integrate(var2,var2,Infinity) LapTran(var1,var2,expr) ;
10 # LapTran(_var1,_var2, _var1*_expr )		<-- - Deriv(var2) LapTran(var1,var2,expr);
10 # LapTran(_var1,_var2, _var1^(n_IsInteger)*_expr )  <-- (-1)^n * Deriv(var2,n) LapTran(var1,var2,expr);
10 # LapTran(_var1,_var2, _expr*_var1 )                <-- - Deriv(var2) LapTran(var1,var2,expr);
10 # LapTran(_var1,_var2, _expr*_var1^(n_IsInteger)  ) <-- (-1)^n * Deriv(var2,n) LapTran(var1,var2,expr);

// didn't match, return unevaled
100 # LapTran(_var1,_var2, _expr )	<-- `Hold(LaplaceTransform(@var1,@var2,@expr));

LapTranDef(_in,_out) <--
[
  Local(i,o);

  //Echo("50 # LapTran(_t,_s,",in,") <-- ",out,";");
  `(50 # LapTran(_t,_s,@in) <-- @out );

  i:=Subst(_t,c_IsPositiveInteger*_t) in;
  o:=Subst(s,s/c) out;

  //Echo("50 # LapTran(_t,_s,",i,") <-- ",o/c,";");
  `(50 # LapTran(_t,_s,@i ) <-- @o/c );

  i:=Subst(_t,_t/c_IsPositiveInteger) in;
  o:=Subst(s,s*c) out;

  //Echo("50 # LapTran(_t,_s,",i,") <-- ",o/c,";");
  `(50 # LapTran(_t,_s,@i ) <-- @o*c );

];

// transforms of specific functions
LapTranDef( (_t)^(n_IsConstant),	Gamma(n+1)/s^(n+1) );
LapTranDef( _t, 			1/s^2 );
LapTranDef( Sqrt(_t), 			Sqrt(Pi)/(2*s^(3/2)) );
LapTranDef( c_IsFreeOf({t,s}),		c/s );
LapTranDef( Sin(_t),	 		1/(s^2+1) );
LapTranDef( Cos(_t), 			s/(s^2+1) );
LapTranDef( Sinh(_t),			c/(s^2-1) );
LapTranDef( Cosh(_t),			s/(s^2-1) );
LapTranDef( Exp(_t),			1/(s-1) );
LapTranDef( BesselJ(n_IsConstant,_t),	(Sqrt(s^2+1)-s)^n /Sqrt(s^2+1) );
LapTranDef( BesselI(n_IsConstant,_t),	(s-Sqrt(s^2+1))^n /Sqrt(s^2-1) );
LapTranDef( Ln(_t),			-(gamma+Ln(s))/s);
LapTranDef( Ln(_t)^2,			Pi^2/(6*s)+(gamma+Ln(s))/s );
LapTranDef( Erf(_t),			Exp(s^2/4)*Erfc(s/2)/s );
LapTranDef( Erf(Sqrt(_t)),		1/(Sqrt(s+1)*s) );