File: helpfunc.mac

package info (click to toggle)
maxima 5.47.0-9
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 193,104 kB
  • sloc: lisp: 434,678; fortran: 14,665; tcl: 10,990; sh: 4,577; makefile: 2,763; ansic: 447; java: 328; python: 262; perl: 201; xml: 60; awk: 28; sed: 15; javascript: 2
file content (47 lines) | stat: -rw-r--r-- 1,613 bytes parent folder | download | duplicates (15)
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
/*  written by Gosei Furuya <go.maxima@gmail.com> 
#  This program is free software; you can redistribute it and/or modify        
#  it under the terms of the GNU General Public License as published by        
#  the Free Software Foundation; either version 2 of the License, or           
#  (at your option) any later version.
#  
#                  
*/



triple_pmat(u_,v_,w_):= 
    block([k,m,i],
	mode_declare([m],any),
	k:length(u_),
	m:zeromatrix(k,k),
	for i:1 thru k do (
	  m[i,1]:u_[i],m[i,2]:v_[i],m[i,3]:w_[i]
	),    m);

matdmake(_list,_base):=block([_a:_list,_b:_base,_m],match_declare([_a,_b,_m],any),
	_m:coefmatrix(d(_a),_b),_m);

/* liebraket   we assumed that _pform1 is 1form,_pform2 either*/
Liebkt(_pform1,_pform2):=block([_a:[],_b:[],_a1,_b1,_m,_n,_p],
	match_declare([_list1,_list2,_m,_n,_p],any),
	_a1:expand(_pform1),_b1:expand(_pform2),
	for i:1 thru dim do (
	   _a:endcons(ratcoef(_a1,basis[i]),_a),
	   _b:endcons(ratcoef(_b1,basis[i]),_b)
	),
	_m:transpose(matdmake(_b,basis)),_n:transpose(matdmake(_a,basis)),
	_p: ( _a . _m . basis - _b . _n . basis)
	/*inner(apply("+",basis),_p)*/
	);

/*from vector to pform  vtof1 is work form and vtof2 is flux form by Darling book*/
vtof1(_vector):=block(_vector.diag(scale_factor).basis);
vtof2(_vector):=block([_a],_a:map(h_st,basis),_vector._a);
/*from pform to vector but these two functions are rather experimentable*/
inv_i1(_pform):=block([a_],a_:coefmatrix(_pform,basis),a_.invert(diag(scale_factor)));

/*pseudo scalar */
J(_f):= volume*apply("*",basis)& _f$

/*antiderivative or kodira diff op */
antid(_g):=nest2([J,d,J],_g)$