#hw21.txt, Andrew Lohr April 13, 2014 BVPk:=proc(Oper,k,D1,f,x,h1,Ini,Fini,x1) local T,i,eq,var,N,Oper1,i1,h,Sh: N:=1/h1: if degree(Oper,D1)<>2 then RETURN(FAIL): fi: var:={seq(T[i],i=0..N)}: eq:={T[0]=Ini,T[N]=Fini}: Oper1:=DisOp(Oper,D1,{seq(-i1,i1= 1..k),0,seq(i1,i1 = 1 ..k)},Sh,h)[1]: for i from k to N-k do eq:=eq union {subs(h=h1,add(coeff(Oper1,Sh,i1)*T[i+i1],i1=-2..2))= subs(x=i*h1,f)}: od: for i from 1 to k-1 do Oper1:=DisOp(Oper,D1,{seq(i1,i1=-i..2*k-i+1)},Sh,h)[1]: eq:=eq union {subs(h=h1,add(coeff(Oper1,Sh,i1)*T[i+i1],i1=-i..2*k-i))= subs(x=i*h1,f)}: od: for i from N-k+1 to N-1 do Oper1:=DisOp(Oper,D1,{seq(i1,i1 = N-i-2*k..i-1)},Sh,h)[1]: eq:=eq union {subs(h=h1,add(coeff(Oper1,Sh,i1)*T[i+i1],i1=N-i-2*k..N-i-1))= subs(x=i*h1,f)}: od: var:=solve(eq,var): if var=NULL then RETURN(FAIL): fi: subs(var,T[x1/h1]): end: Compare:= proc(Oper,D1,f,x,h1,Ini,Fini,x1)local i: [BVPexact(Oper,D1,f,x,0,1,Ini,Fini,x1),seq(BVPk(Oper,i,D1,f,x,h1,Ini,Fini,x1),i=1..4)]: end: #for the given inputs, I got [0.7730740680, 11.94283371, .8556750367, .1382876479, 0.5945834619e-1] and[-.1847327885, 3.642310610, 2.675185112, 1.431171225, .8883687105]