#hw22.txt Cole Franks 20/04/2014 ##### Problem 1 Help22:=proc() print(`CubicSplineF(Lx,Lf,x),CubicSplineC(Lx, Lf, Lprimef, x)`): end: CubicSplineF:=proc(Lx,Lf,x) local a, Lu, i1, var, eq, d, j: d:=3: Lu:=[seq(add(a[i1, j1]*x^j1, j1=0..d), i1=0..d)]: var:={seq(seq(a[i1, j1], j1=0..d), i1=0..d)}: #free boundary conditions eq:={subs(x = Lx[1], diff(Lu[1], [x$2]))}: eq:=eq union {subs(x = Lx[d+2], diff(Lu[d+1], [x$2]))}: #constraining the values to the Lf’s eq:=eq union {seq(subs(x = Lx[j], Lu[j]) = Lf[j], j=1..d+1), subs(x = Lx[d+2], Lu[d+1]) = Lf[d+2]}: #loop for the interior points for j from 2 to d+1 do eq:=eq union {seq(subs(x = Lx[j], diff(Lu[j-1], [x$i1])) = subs(x = Lx[j], diff(Lu[j], [x$i1])), i1=0..d-1)}: od: var:=solve(eq, var): if var=NULL then FAIL: else return subs(var, Lu): fi: end: CubicSplineC:=proc(Lx,Lf, Lprimef,x) local a, Lu, i1, var, eq, d, j: d:=3: Lu:=[seq(add(a[i1, j1]*x^j1, j1=0..d), i1=0..d)]: var:={seq(seq(a[i1, j1], j1=0..d), i1=0..d)}: #clamped boundary conditions eq:={subs(x = Lx[1], diff(Lu[1], [x$1]))=Lprimef[1]}: eq:=eq union {subs(x = Lx[d+2], diff(Lu[d+1], [x$1]))=Lprimef[2]}: #constraining the values to the Lf’s eq:=eq union {seq(subs(x = Lx[j], Lu[j]) = Lf[j], j=1..d+1), subs(x = Lx[d+2], Lu[d+1]) = Lf[d+2]}: #loop for the interior points for j from 2 to d+1 do eq:=eq union {seq(subs(x = Lx[j], diff(Lu[j-1], [x$i1])) = subs(x = Lx[j], diff(Lu[j], [x$i1])), i1=0..d-1)}: od: var:=solve(eq, var): if var=NULL then FAIL: else return subs(var, Lu): fi: end: