{VERSION 5 0 "IBM INTEL NT" "5.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 1 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }} {SECT 0 {EXCHG {PARA 0 "" 0 "" {TEXT -1 37 "Runge-Kutta Methods, Trees , and Maple" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 44 "Version: 9. Feb. 2001, (c) Folkmar Bornemann" }}{PARA 0 "" 0 " " {TEXT -1 42 "modified: 11. Nov. 2005 for lecture at TUM" }}{PARA 0 " " 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 72 "Author's address: \+ Munich University of Technology, 80290 Munich, Germany" }}{PARA 0 "" 0 "" {TEXT -1 29 "E-mail: bornemann@ma.tum.de, " }}{PARA 0 "" 0 "" {TEXT -1 29 "URL: http://www.ma.tum.de/m3/" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 24 "Maple source code from: " }} {PARA 0 "" 0 "" {TEXT -1 95 "Folkmar Bornemann, Runge-Kutta Methods, T rees, and Maple, Selcuk J. Appl. Math. 2, 3--15, 2001." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "`type/tree`:=l ist(tree): f:=[]:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 26 "TreeSo rt:=proc(beta::tree)" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 27 " sort(map( TreeSort,beta));" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "end: # TreeSort " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "TreeOrder:=proc(beta::t ree)" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 18 " option remember;" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 33 " 1+`+`(op(map(TreeOrder,beta)));" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "end: # TreeOrder" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "TreeFactorial:=proc(beta::tree)" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 " option remember;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 51 " TreeOrder(beta)*`*`(op(map(TreeFactorial,beta) ));" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "end: # TreeFactorial" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "TreeAlpha:=proc(beta::tree) " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 18 " option remember;" }}{PARA 0 " > " 0 "" {MPLTEXT 1 0 10 " local n;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 16 " n:=nops(beta);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 37 " nops(co mbinat[permute](beta,n))/n!*" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 35 " \+ `*`(op(map(TreeAlpha,beta)));" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "end: # TreeAlpha" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "TreeA: =proc(beta::tree,no::posint)" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 18 " o ption remember;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 21 " local vars,val ,son;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 32 " vars:=[i,j,k,l,m,p,q,r,u ,v,w];" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 9 " val:=1;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 20 " for son in beta do" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 42 " val:= val*Sum(a[vars[no],vars[no+1]]*" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 42 " TreeA(son,no+1),vars[no+1]=1..s) ;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 5 " od;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 6 " val;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "end: # Tr eeA" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "TreeOrderCondition:= proc(beta::tree)" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 33 " Sum(b[i]*Tree A(beta,1),i=1..s)=" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 28 " 1/TreeF actorial(beta);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "end: # TreeOrder Condition" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 26 "Trees:=proc(or der::posint)" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 18 " option remember; " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 34 " local Replace,AddLeaf,all,tre es;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 49 " Replace:=proc(new::tree,old::posint,beta::tree)" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 54 " sort(subsop(old=new,beta)); # o rder-independent..." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 16 " end: # Rep lace" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 27 " AddLeaf:=proc(beta::tree)" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 20 " option remember;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 24 " local val,child,new;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 31 " \+ val:=\{sort([[],op(beta)])\};" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 37 " for child from 1 to nops(beta) do" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 32 " new:=AddLeaf(beta[child]);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 49 " val:=val union map(Replace,new,child,beta);" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 " od;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 8 " val;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 16 " end: \+ # AddLeaf" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 14 " trees:=\{[]\};" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 15 " all:=[trees];" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 15 " to order-1 do" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 43 " trees:=`union`(op(map(Ad dLeaf,trees)));" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 25 " all:=[op(all ),trees];" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 5 " od:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 6 " all;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "end: # Trees" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 51 "OrderConditions :=proc(order::posint,stages::posint)" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 18 " option remember;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 31 " local eqs,vars,auto,explicit;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 43 " expli cit:=\{seq(seq(a[i,j]=0,j=i..stages)," }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 20 " i=1..stages)\};" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 36 " va rs:=eval(\{seq(b[i],i=1..stages)," }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 47 " seq(seq(a[i,j],j=1..stages),i=1..stages)," }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 49 " seq(c[i],i=1..stages)\},explicit) minus \{0 \};" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 47 " auto:=eval(\{seq(sum(a[i,j ],j=1..stages)=c[i]," }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 30 " i=1.. stages)\},explicit);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 41 " eqs:=valu e(Eval(map(TreeOrderCondition," }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 44 " \+ `union`(op(Trees(order)))),s=stages));" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 37 " eqs:=eval(eval(eqs,explicit),auto);" }}{PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 16 " eqs,auto,vars;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "end: # OrderConditions" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 52 "RungeKuttaMethod:=proc(p::posint,s::posint,pre::set) " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 25 " # explicit methods only" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 41 " local conds,auto,vars,eqs,sols,so l,val;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 40 " conds,auto,vars:=OrderC onditions(p,s);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 34 " eqs:=conds uni on auto union pre;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 26 " sols:=\{sol ve(eqs,vars)\};" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 12 " val:=NULL;" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 " for sol in sols do" }}{PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 14 " val:=val,[" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 50 " a=Matrix([seq([seq(eval(a[i,j],sol),j=1..i-1)," }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 39 " seq(0,j=i..s)],i=1..s)])," }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 43 " b=vector([seq(eval(b[i],sol),i= 1..s)])," }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 44 " c=vector([seq(eval( c[i],sol),i=1..s)])];" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 5 " od:" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 6 " val;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "end: # RungeKuttaMethod" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}} {MARK "10 0 0" 0 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }